CN117311956A - 一种待模拟量子程序的gpu内存分配方法及装置 - Google Patents

一种待模拟量子程序的gpu内存分配方法及装置 Download PDF

Info

Publication number
CN117311956A
CN117311956A CN202210720765.7A CN202210720765A CN117311956A CN 117311956 A CN117311956 A CN 117311956A CN 202210720765 A CN202210720765 A CN 202210720765A CN 117311956 A CN117311956 A CN 117311956A
Authority
CN
China
Prior art keywords
quantum
gpu
simulated
memory
execution time
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210720765.7A
Other languages
English (en)
Inventor
窦猛汉
孙坤峰
赵东一
王晶
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Benyuan Quantum Computing Technology Hefei Co ltd
Original Assignee
Benyuan Quantum Computing Technology Hefei Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Benyuan Quantum Computing Technology Hefei Co ltd filed Critical Benyuan Quantum Computing Technology Hefei Co ltd
Priority to CN202210720765.7A priority Critical patent/CN117311956A/zh
Publication of CN117311956A publication Critical patent/CN117311956A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N10/00Quantum computing, i.e. information processing based on quantum-mechanical phenomena
    • G06N10/20Models of quantum computing, e.g. quantum circuits or universal quantum computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Condensed Matter Physics & Semiconductors (AREA)
  • Computational Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开了种待模拟量子程序的GPU内存分配方法及装置,方法包括:获得分布式计算集群的硬件参数信息,并初始化计算集群的GPU状态信息,确定待模拟量子程序的量子比特数,并通过预设计算方式获取所需模拟的量子态个数和最大量子态操作数,根据硬件参数信息、GPU状态信息、量子态个数以及最大量子态操作数,确定待模拟量子程序的GPU内存分配方案,它能够提供一种结合GPU间数据传输性能动态规划量子态存储方案,提升复杂量子线路的计算性能。

Description

一种待模拟量子程序的GPU内存分配方法及装置
技术领域
本发明属于量子计算技术领域,特别是一种待模拟量子程序的GPU内存分配方法及装置。
背景技术
在量子计算领域,随着人们研究问题的复杂度逐渐增加,对量子计算机的需求也在日益递增。但物理量子计算机的实际制造难度大、制造成本高,并且现有量子计算机资源有限,难以满足实际的社会需求,因此根据量子计算原理采用CPU对量子计算机的实际计算过程进行模拟,用以解决量子计算机的需求难题,成为正在研究的一项关键技术。
但是,在量子计算过程中,随着量子比特数量的增加,叠加量子态的数量呈指数式增长,因此采用CPU进行全振幅模拟时需要存储的量子态数量和进行的操作数也呈指数式增长,而每个CPU同一时间并行的线程数以及CPU的内存都是有限的,因此限制了CPU能模拟的量子比特数目并且影响模拟效率,这是一个亟待解决的问题。
发明内容
本发明的目的是提供一种待模拟量子程序的GPU内存分配方法及装置,以解决现有技术中的不足,它能够提供一种结合GPU间数据传输性能动态规划量子态存储方案,提升复杂量子线路的计算性能。
本申请的一个实施例提供了一种待模拟量子程序的GPU内存分配方法,所述方法包括:
获得分布式计算集群的硬件参数信息,并初始化所述计算集群的GPU状态信息;
确定待模拟量子程序的量子比特数,并通过预设计算方式获取所需模拟的量子态个数和最大量子态操作数;
根据所述硬件参数信息、GPU状态信息、量子态个数以及最大量子态操作数,确定所述待模拟量子程序的GPU内存分配方案。
可选的,所述初始化所述计算集群的GPU状态信息,包括:
获得所述计算集群的节点数、每个节点的GPU数量、每个GPU的计算性能参数,其中,所述计算性能参数由每个GPU的核心数以及最大并行线程数决定;
通信连接各个GPU,并获取每个GPU的当前空闲内存以及各个GPU之间的数据传输速率。
可选的,所述预设计算方式包括:全振幅模拟计算方式、部分振幅模拟计算方式和单振幅模拟计算方式中的一种。
可选的,所述根据所述硬件参数信息、GPU状态信息、量子态个数以及最大量子态操作数,确定所述待模拟量子程序的GPU内存分配方案,包括:
判断是否存在目标GPU,其中,所述目标GPU的最大并行线程数不小于所述最大量子态操作数;
若否,则进一步判断所述计算集群中所有GPU的当前空闲内存是否可以实现所有量子态模拟;
若所述计算集群中所有GPU的当前空闲内存可以实现所述所有量子态模拟,则根据所述所有量子态在所述GPU的当前空闲内存占用方式对应的执行时间,确定所述待模拟量子程序的GPU内存分配方案。
可选的,所述方法还包括:
若存在所述目标GPU,则判断所述目标GPU的当前空闲内存是否可以实现所述所有量子态模拟;
若是,则将所述所有量子态存储于所述目标GPU的空闲内存中,以实现待模拟量子程序的GPU内存分配。
可选的,所述方法还包括:
若所述目标GPU的当前空闲内存不可以实现所述所有量子态模拟,则继续执行所述进一步判断所述计算集群中所有GPU的当前空闲内存是否可以实现所有量子态模拟的步骤。
可选的,所述方法还包括:
若所述计算集群中所有GPU的当前空闲内存不可以实现所有量子态模拟,则输出并显示错误提示信息。
可选的,所述根据所述所有量子态在所述GPU的当前空闲内存占用方式对应的执行时间,确定所述待模拟量子程序的GPU内存分配方案,包括:
分别计算所述所有量子态平均分配在每个GPU空闲内存的第一执行时间以及所述所有量子态优先占满单个GPU空闲内存后再占用其他GPU空闲内存的第二执行时间,其中,所述第一执行时间和第二执行时间根据所述GPU之间的数据传输速率、所述计算性能参数、所述硬件参数信息以及所述量子态个数确定;
根据所述第一执行时间与所述第二执行时间,确定所述待模拟量子程序的GPU内存分配方案。
可选的,所述根据所述第一执行时间与所述第二执行时间,确定所述待模拟量子程序的GPU内存分配方案,包括:
若所述第一执行时间不大于所述第二执行时间,则将所述所有量子态平均分配在所述计算集群中所有GPU的当前空闲内存;
若所述第一执行时间大于所述第二执行时间,则将所述所有量子态优先占满单个GPU空闲内存后再占用其他GPU。
本申请的又一实施例提供了一种待模拟量子程序的GPU内存分配装置,所述装置包括:
获得模块,用于获得分布式计算集群的硬件参数信息,并初始化所述计算集群的GPU状态信息;
第一确定模块,用于确定待模拟量子程序的量子比特数,并通过预设计算方式获取所需模拟的量子态个数和最大量子态操作数;
第二确定模块,用于根据所述硬件参数信息、GPU状态信息、量子态个数以及最大量子态操作数,确定所述待模拟量子程序的GPU内存分配方案。
可选的,所述获得模块,包括:
获得单元,用于获得所述计算集群的节点数、每个节点的GPU数量、每个GPU的计算性能参数,其中,所述计算性能参数由每个GPU的核心数以及最大并行线程数决定;
获取单元,用于通信连接各个GPU,并获取每个GPU的当前空闲内存以及各个GPU之间的数据传输速率。
可选的,所述第二确定模块,包括:
第一判断单元,用于判断是否存在目标GPU,其中,所述目标GPU的最大并行线程数不小于所述最大量子态操作数;
第二判断单元,用于若否,则进一步判断所述计算集群中所有GPU的当前空闲内存是否可以实现所有量子态模拟;
第一确定单元,用于若所述计算集群中所有GPU的当前空闲内存可以实现所述所有量子态模拟,则根据所述所有量子态在所述GPU的当前空闲内存占用方式对应的执行时间,确定所述待模拟量子程序的GPU内存分配方案。
可选的,所述第二确定模块,还包括:
第三判断单元,用于若存在所述目标GPU,则判断所述目标GPU的当前空闲内存是否可以实现所述所有量子态模拟;
存储单元,用于若是,则将所述所有量子态存储于所述目标GPU的空闲内存中,以实现待模拟量子程序的GPU内存分配。
可选的,所述第二确定模块,还包括:
输出单元,用于若所述计算集群中所有GPU的当前空闲内存不可以实现所有量子态模拟,则输出并显示错误提示信息。
可选的,所述第一确定单元,包括:
计算子单元,用于分别计算所述所有量子态平均分配在每个GPU空闲内存的第一执行时间以及所述所有量子态优先占满单个GPU空闲内存后再占用其他GPU空闲内存的第二执行时间,其中,所述第一执行时间和第二执行时间根据所述GPU之间的数据传输速率、所述计算性能参数、所述硬件参数信息以及所述量子态个数确定;
确定子单元,用于根据所述第一执行时间与所述第二执行时间,确定所述待模拟量子程序的GPU内存分配方案。
可选的,所述第二确定模块,还包括:
返回单元,用于若所述目标GPU的当前空闲内存不可以实现所述所有量子态模拟,则继续执行所述进一步判断所述计算集群中所有GPU的当前空闲内存是否可以实现所有量子态模拟的步骤。
可选的,所述确定子单元,包括:
均分子单元,用于若所述第一执行时间不大于所述第二执行时间,则将所述所有量子态平均分配在所述计算集群中所有GPU的当前空闲内存;
优先占满子单元,用于若所述第一执行时间大于所述第二执行时间,则将所述所有量子态优先占满单个GPU空闲内存后再占用其他GPU。
本申请的又一实施例提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项中所述的方法。
本申请的又一实施例提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项中所述的方法。
与现有技术相比,本发明首先获得分布式计算集群的硬件参数信息,并初始化计算集群的GPU状态信息,确定待模拟量子程序的量子比特数,并通过预设计算方式获取所需模拟的量子态个数和最大量子态操作数,根据硬件参数信息、GPU状态信息、量子态个数以及最大量子态操作数,确定待模拟量子程序的GPU内存分配方案,它能够提供一种结合GPU间数据传输性能动态规划量子态存储方案,提升复杂量子线路的计算性能。
附图说明
图1是本发明实施例提供的一种待模拟量子程序的GPU内存分配方法的计算机终端的硬件结构框图;
图2是本发明实施例提供的一种待模拟量子程序的GPU内存分配方法的流程示意图;
图3为本发明实施例提供的一种待模拟量子程序的GPU内存分配方法的总体框架示意图;
图4为本发明实施例提供的一种待模拟量子程序的GPU内存分配装置的结构示意图。
具体实施方式
下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本发明实施例首先提供了一种待模拟量子程序的GPU内存分配方法,该方法可以应用于电子设备,如计算机终端,具体如普通电脑、量子计算机等。
下面以运行在计算机终端上为例对其进行详细说明。图1为本发明实施例提供的一种待模拟量子程序的GPU内存分配方法的计算机终端的硬件结构框图。如图1所示,计算机终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,可选地,上述计算机终端还可以包括用于通信功能的传输装置106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述计算机终端的结构造成限定。例如,计算机终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储应用软件的软件程序以及模块,如本申请实施例中的实现一种待模拟量子程序的GPU内存分配方法对应的程序指令/模块,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
需要说明的是,真正的量子计算机是混合结构的,它包含两大部分:一部分是经典计算机,负责执行经典计算与控制;另一部分是量子设备,负责运行量子程序进而实现量子计算。而量子程序是由量子语言如QRunes语言编写的一串能够在量子计算机上运行的指令序列,实现了对量子逻辑门操作的支持,并最终实现量子计算。具体的说,量子程序就是一系列按照一定时序操作量子逻辑门的指令序列。
在实际应用中,因受限于量子设备硬件的发展,通常需要进行量子计算模拟以验证量子算法、量子应用等等。量子计算模拟即借助普通计算机的资源搭建的虚拟架构(即量子虚拟机)实现特定问题对应的量子程序的模拟运行的过程。通常,需要构建特定问题对应的量子程序。本发明实施例所指量子程序,即是经典语言编写的表征量子比特及其演化的程序,其中与量子计算相关的量子比特、量子逻辑门等等均有相应的经典代码表示。
量子线路作为量子程序的一种体现方式,也称量子逻辑电路,是最常用的通用量子计算模型,表示在抽象概念下对于量子比特进行操作的线路,其组成包括量子比特、线路(时间线),以及各种量子逻辑门,最后常需要通过量子测量操作将结果读取出来。
不同于传统电路是用金属线所连接以传递电压信号或电流信号,在量子线路中,线路可看成是由时间所连接,亦即量子比特的状态随着时间自然演化,在这过程中按照哈密顿运算符的指示,一直到遇上逻辑门而被操作。
一个量子程序整体上对应有一条总的量子线路,本发明所述量子程序即指该条总的量子线路,其中,该总的量子线路中的量子比特总数与量子程序的量子比特总数相同。可以理解为:一个量子程序可以由量子线路、针对量子线路中量子比特的测量操作、保存测量结果的寄存器及控制流节点(跳转指令)组成,一条量子线路可以包含几十上百个甚至千上万个量子逻辑门操作。量子程序的执行过程,就是对所有的量子逻辑门按照一定时序执行的过程。需要说明的是,时序即单个量子逻辑门被执行的时间顺序。
需要说明的是,经典计算中,最基本的单元是比特,而最基本的控制模式是逻辑门,可以通过逻辑门的组合来达到控制电路的目的。类似地,处理量子比特的方式就是量子逻辑门。使用量子逻辑门,能够使量子态发生演化,量子逻辑门是构成量子线路的基础,量子逻辑门包括单比特量子逻辑门,如Hadamard门(H门,哈德玛门)、泡利-X门(X门)、泡利-Y门(Y门)、泡利-Z门(Z门)、RX门、RY门、RZ门等等;多比特量子逻辑门,如CNOT门、CR门、iSWAP门、Toffoli门等等。量子逻辑门一般使用酉矩阵表示,而酉矩阵不仅是矩阵形式,也是一种操作和变换。一般量子逻辑门在量子态上的作用是通过酉矩阵左乘以量子态右矢对应的矩阵进行计算的。
本领域技术人员可以理解的是,在经典计算机中,信息的基本单元是比特,一个比特有0和1两种状态,最常见的物理实现方式是通过电平的高低来表示这两种状态。在量子计算中,信息的基本单元是量子比特,一个量子比特也有0和1两种状态,记为|0>和|1>,但它可以处于0和1两种状态的叠加态,可表示为|φ>=a|0>+b|1>,其中,a、b为表示|0>态、|1>态振幅(概率幅)的复数,这是经典比特不具备的。测量后,量子比特的状态会塌缩至一个确定的状态(本征态,此处为|0>态、|1>态),其中,塌缩至|0>的概率是|a|2,塌缩至|1>的概率是|b|2,|a|2+|b|2=1,|>为狄拉克符号。
量子态,即指量子比特的状态,其本征态在量子算法(或称量子程序)中用二进制表示。例如,一组量子比特为q0、q1、q2,表示第0位、第1位、第2位量子比特,从高位到低位排序为q2q1q0,该组量子比特的量子态为23个本征态的叠加态,8个本征态(确定的状态)是指:|000>、|001>、|010>、|011>、|100>、|101>、|110>、|111>,每个本征态与量子比特位对应一致,如|000>态,000从高位到低位对应q2q1q0。简言之,量子态是各本征态组成的叠加态,当其他态的概率幅为0时,即处于其中一个确定的本征态。
在量子计算过程中,随着量子位的增加,叠加量子态的数量呈指数式增长,现有技术是采用CPU、单个GPU或量子态均分在多个GPU上的实现内存分配方案。采用CPU进行模拟计算时,由于CPU的并行计算能力有限,因此对于大量子位的模拟计算性能较低。采用单个GPU时,GPU的并行计算能力和内存大小限制了能模拟的量子位大小和计算时间。采用量子态均分在多个GPU上进行内存分配时,量子态平均存储在多个GPU的全局内存上,对于多量子门操作,需要频繁的跨GPU进行数据传输,当硬件性能不足时,频繁传输数据会较为严重地降低计算性能。
本申请结合量子计算原理、GPU并行计算和通信技术,实现了一种待模拟量子程序的GPU内存分配方法,扩展了GPU模拟计算的量子位大小并提升了计算速度,对于解决量子计算机的需求难题,具有重要的现实意义。
参见图2,图2为本发明实施例提供的一种待模拟量子程序的GPU内存分配方法的流程示意图,可以包括如下步骤:
S201:获得分布式计算集群的硬件参数信息,并初始化所述计算集群的GPU状态信息。
具体的,获取计算集群的GPU内存频率、显存位宽等硬件参数信息,然后可以通过GPU内存频率乘以显存位宽计算出带宽,其中,位宽表示一次传输数据的数据位数,带宽表示每秒传输的数据位数。初始化所述计算集群的GPU状态信息,可以包括:
步骤1:获得所述计算集群的节点数、每个节点的GPU数量、每个GPU的计算性能参数,其中,所述计算性能参数由每个GPU的核心数以及最大并行线程数决定。
具体的,节点数是多节点集群的核心,GPU数量和核心数是进行多GPU分配的核心,多GPU分配的时候,根据所需分配的数据量和GPU数量进行分配,GPU可以有多个处理器,例如通常包含82至128个处理器,然后每个处理器支持一系列并行线程,它们在逻辑上被划分为GPU核心,例如RTX3090的是一万多,逻辑上每个核心同时可以处理的并行线程是32个,每个GPU的计算性能可以由GPU的核心数、每个核心的并行线程数、基本频率、内存频率、内存带宽和内存大小等决定。GPU的最大并行线程数,是核心数(即硬件层次的核心SM,软件层次的核心Core是硬件层次核心的64至512倍)乘以每个核心允许的线程,不过这个总的线程不是同一时间执行的,而是分批执行的,通常每个软件核心一批有32个(用wrap表示),但实际执行的时候,可以是一次执行16个,然后再执行剩余的16个。最大并行线程数和实际并行线程并不一样,最大是可以允许的,是逻辑层次上可以处理的,但是实际执行的时候,最大并行线程是需要逐步执行的。例如,一个SM逻辑上允许的最大并行线程量,例如为1500多个,然后有82个SM,每个SM有128个逻辑核心,总共10000多个逻辑核心,每个逻辑核心并行32个线程(wrap),实际同一时间实际执行只有16个。
步骤2:通信连接各个GPU,并获取每个GPU的当前空闲内存以及各个GPU之间的数据传输速率。
具体的,GPU可以直接连接,或者本身已经存在连接,然后使用Peer-To-Peer技术,将GPU间直接通信,各个GPU间本身是可以通信的,例如通过CPU、PCIe、网卡中转通信,但是不一定任意两个GPU之间都能直接通信,因为直接通信需要满足具有相同的内存地址分配方式,而通过使用Peer-To-Peer技术可以实现统一寻址,并且Peer-To-Peer通信还具有方向性,可以使GPU间进行联合计算。通过连接各个GPU,使任意GPU间实现Peer-To-Peer通信(当GPU数量大于1个时),并获取(或计算)各个GPU间传输数据的速率(或不进行获取,默认跨GPU传输的数据的速率在可接受范围内)。
S202:确定待模拟量子程序的量子比特数,并通过预设计算方式获取所需模拟的量子态个数和最大量子态操作数。
具体的,通过确定待模拟量子程序的量子比特数,进而确定量子态个数,例如待模拟量子程序是一段包含10个量子比特的量子线路,则其量子态个数即为210个。最大量子态操作数即为量子态个数除以2。
其中,所述预设计算方式包括:全振幅模拟计算方式、部分振幅模拟计算方式和单振幅模拟计算方式中的一种。
例如,对于全振幅模拟计算方式,所占用的内存随量子比特数呈指数上升,如配置10个量子比特需要16Kbyte内存,此外全振幅模拟量子计算可以采用串行计算方法,例如将一个大型计算任务拆分,平均分配到多个计算节点上,在该每一个计算节点上同时进行串行计算。进行全振幅模拟计算方式,可以包括:获得待模拟量子程序至各计算节点,其中,待模拟量子程序可以链表形式存储,根据执行待模拟量子程序所需要的量子比特数量和计算节点数量,配置并初始化各计算节点存储的量子态,在各计算节点内遍历量子程序的链表,针对遍历到的当前量子程序节点,配合执行当前节点内存储的量子操作指令,直至遍历完链表的所有节点,完成全振幅量子计算模拟。
S203:根据所述硬件参数信息、GPU状态信息、量子态个数以及最大量子态操作数,确定所述待模拟量子程序的GPU内存分配方案。
具体的,参见图3,图3为本发明实施例提供的一种待模拟量子程序的GPU内存分配方法的总体框架示意图,根据所述硬件参数信息、GPU状态信息、量子态个数以及最大量子态操作数,确定所述待模拟量子程序的GPU内存分配方案,可以包括:
判断是否存在目标GPU,其中,所述目标GPU的最大并行线程数不小于所述最大量子态操作数;若否,则进一步判断所述计算集群中所有GPU的当前空闲内存是否可以实现所有量子态模拟;若所述计算集群中所有GPU的当前空闲内存可以实现所述所有量子态模拟,则根据所述所有量子态在所述GPU的当前空闲内存占用方式对应的执行时间,确定所述待模拟量子程序的GPU内存分配方案。
具体的,根据所述所有量子态在所述GPU的当前空闲内存占用方式对应的执行时间,确定所述待模拟量子程序的GPU内存分配方案,可以包括:
1.分别计算所述所有量子态平均分配在每个GPU空闲内存的第一执行时间以及所述所有量子态优先占满单个GPU空闲内存后再占用其他GPU空闲内存的第二执行时间,其中,所述第一执行时间和第二执行时间根据所述GPU之间的数据传输速率、所述计算性能参数、所述硬件参数信息以及所述量子态个数确定。
2.根据所述第一执行时间与所述第二执行时间,确定所述待模拟量子程序的GPU内存分配方案。
具体的,若所述第一执行时间不大于所述第二执行时间,则将所述所有量子态平均分配在所述计算集群中所有GPU的当前空闲内存;
若所述第一执行时间大于所述第二执行时间,则将所述所有量子态优先占满单个GPU空闲内存后再占用其他GPU。
需要说明的是,执行时间即使同一个程序也会有波动,具体是根据GPU硬件参数、GPU间数据传输的速率以及量子态个数(或最大量子态操作数)确定。通过GPU的内存频率和带宽,分析跨GPU的传输速率是不是快,同时要结合总线程数分析,将线程分配在多个GPU上,降低的时间倍数和跨GPU读取增加的时间倍数(还要考虑读取的数据减少的因素),也就是GPU内存频率、内存带宽、GPU间数据传输速率、总的量子态个数(或最大量子态操作数)以及分配的GPU个数(总数据分配的GPU个数N越多,需要跨GPU读取的数据就越多,平均分配时需要读取(N-1)/N的数据量)。
若存在所述目标GPU,则判断所述目标GPU的当前空闲内存是否可以实现所述所有量子态模拟;若是,则将所述所有量子态存储于所述目标GPU的空闲内存中,以实现待模拟量子程序的GPU内存分配。
若所述目标GPU的当前空闲内存不可以实现所述所有量子态模拟,则继续执行所述进一步判断所述计算集群中所有GPU的当前空闲内存是否可以实现所有量子态模拟的步骤。
若所述计算集群中所有GPU的当前空闲内存不可以实现所有量子态模拟,则输出并显示错误提示信息。
示例性的,根据量子比特的大小,分析需要存储全振幅量子态的数据大小,并检索当前空闲GPU的空闲内存是否满足内存分配方案,如果量子态数小于GPU并行操作线程数则直接分配在单个GPU上,否则将结合内存拷贝速度分析将量子态平均分配存储在多个GPU上的计算性能是否高于优先占满GPU内存的计算性能,并选择计算性能最优的方案。对于将量子态分配在多个GPU上的情况,再结合GPU间数据传输性能和线程并行时的等待时间分析跨GPU执行量子门的时候提前将数据拷贝到操作数据的GPU上的性能是否优于默认操作方式,并选择最优方式,量子逻辑门操作完成后向调用返回处理结果并释放GPU占用资源。
例如量子比特数为b,存储一个量子态需要的内存为m,GPU核心数为core,并行线程数为w,内存频率为r,带宽为width,单个GPU空余可用内存为f,总空余可用内存为F,跨GPU时,使用的GPU个数为count,GPU间数据传输速率为v,则总体内存分配规则如下:
首先判断是否满足2b-1≤(core×w)÷2,若是,则进一步判断是否满足2b×m≤f,若是,则将所有量子态存储在单个GPU上。若2b-1>(core×w)÷2,则进一步判断是否满足2b×m≤F,若不满足,则说明内存不足,直接退出,若满足,则进一步判断是否满足(count-1)×(r×width)÷(count2×v2)≥1,若满足则将所有量子态优先占满单个GPU空闲内存后再占用其他GPU,若不满足则将所有量子态平均分配在计算集群中所有GPU的当前空闲内存。若2b×m>f,则跳转至进一步判断是否满足2b×m≤F的步骤。
可见,本发明首先获得分布式计算集群的硬件参数信息,并初始化计算集群的GPU状态信息,确定待模拟量子程序的量子比特数,并通过预设计算方式获取所需模拟的量子态个数和最大量子态操作数,根据硬件参数信息、GPU状态信息、量子态个数以及最大量子态操作数,确定待模拟量子程序的GPU内存分配方案,它能够提供一种结合GPU间数据传输性能动态规划量子态存储方案,提升复杂量子线路的计算性能。
参见图4,图4为本发明实施例提供的一种待模拟量子程序的GPU内存分配装置的结构示意图,与图2所示的流程相对应,可以包括:
获得模块401,用于获得分布式计算集群的硬件参数信息,并初始化所述计算集群的GPU状态信息;
第一确定模块402,用于确定待模拟量子程序的量子比特数,并通过预设计算方式获取所需模拟的量子态个数和最大量子态操作数;
第二确定模块403,用于根据所述硬件参数信息、GPU状态信息、量子态个数以及最大量子态操作数,确定所述待模拟量子程序的GPU内存分配方案。
具体的,所述获得模块,包括:
获得单元,用于获得所述计算集群的节点数、每个节点的GPU数量、每个GPU的计算性能参数,其中,所述计算性能参数由每个GPU的核心数以及最大并行线程数决定;
获取单元,用于通信连接各个GPU,并获取每个GPU的当前空闲内存以及各个GPU之间的数据传输速率。
具体的,所述第二确定模块,包括:
第一判断单元,用于判断是否存在目标GPU,其中,所述目标GPU的最大并行线程数不小于所述最大量子态操作数;
第二判断单元,用于若否,则进一步判断所述计算集群中所有GPU的当前空闲内存是否可以实现所有量子态模拟;
第一确定单元,用于若所述计算集群中所有GPU的当前空闲内存可以实现所述所有量子态模拟,则根据所述所有量子态在所述GPU的当前空闲内存占用方式对应的执行时间,确定所述待模拟量子程序的GPU内存分配方案。
具体的,所述第二确定模块,还包括:
第三判断单元,用于若存在所述目标GPU,则判断所述目标GPU的当前空闲内存是否可以实现所述所有量子态模拟;
存储单元,用于若是,则将所述所有量子态存储于所述目标GPU的空闲内存中,以实现待模拟量子程序的GPU内存分配。
具体的,所述第二确定模块,还包括:
返回单元,用于若所述目标GPU的当前空闲内存不可以实现所述所有量子态模拟,则继续执行所述进一步判断所述计算集群中所有GPU的当前空闲内存是否可以实现所有量子态模拟的步骤。
具体的,所述第二确定模块,还包括:
输出单元,用于若所述计算集群中所有GPU的当前空闲内存不可以实现所有量子态模拟,则输出并显示错误提示信息。
具体的,所述第一确定单元,包括:
计算子单元,用于分别计算所述所有量子态平均分配在每个GPU空闲内存的第一执行时间以及所述所有量子态优先占满单个GPU空闲内存后再占用其他GPU空闲内存的第二执行时间,其中,所述第一执行时间和第二执行时间根据所述GPU之间的数据传输速率、所述计算性能参数、所述硬件参数信息以及所述量子态个数确定;
确定子单元,用于根据所述第一执行时间与所述第二执行时间,确定所述待模拟量子程序的GPU内存分配方案。
具体的,所述确定子单元,包括:
均分子单元,用于若所述第一执行时间不大于所述第二执行时间,则将所述所有量子态平均分配在所述计算集群中所有GPU的当前空闲内存;
优先占满子单元,用于若所述第一执行时间大于所述第二执行时间,则将所述所有量子态优先占满单个GPU空闲内存后再占用其他GPU。
与现有技术相比,本发明首先获得分布式计算集群的硬件参数信息,并初始化计算集群的GPU状态信息,确定待模拟量子程序的量子比特数,并通过预设计算方式获取所需模拟的量子态个数和最大量子态操作数,根据硬件参数信息、GPU状态信息、量子态个数以及最大量子态操作数,确定待模拟量子程序的GPU内存分配方案,它能够提供一种结合GPU间数据传输性能动态规划量子态存储方案,提升复杂量子线路的计算性能。
本发明实施例还提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项中方法实施例中的步骤。
具体的,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S201:获得分布式计算集群的硬件参数信息,并初始化所述计算集群的GPU状态信息;
S202:确定待模拟量子程序的量子比特数,并通过预设计算方式获取所需模拟的量子态个数和最大量子态操作数;
S203:根据所述硬件参数信息、GPU状态信息、量子态个数以及最大量子态操作数,确定所述待模拟量子程序的GPU内存分配方案。
具体的,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本发明实施例还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项中方法实施例中的步骤。
具体的,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
具体的,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S201:获得分布式计算集群的硬件参数信息,并初始化所述计算集群的GPU状态信息;
S202:确定待模拟量子程序的量子比特数,并通过预设计算方式获取所需模拟的量子态个数和最大量子态操作数;
S203:根据所述硬件参数信息、GPU状态信息、量子态个数以及最大量子态操作数,确定所述待模拟量子程序的GPU内存分配方案。
以上依据图式所示的实施例详细说明了本发明的构造、特征及作用效果,以上所述仅为本发明的较佳实施例,但本发明不以图面所示限定实施范围,凡是依照本发明的构想所作的改变,或修改为等同变化的等效实施例,仍未超出说明书与图示所涵盖的精神时,均应在本发明的保护范围内。

Claims (12)

1.一种待模拟量子程序的GPU内存分配方法,其特征在于,所述方法包括:
获得分布式计算集群的硬件参数信息,并初始化所述计算集群的GPU状态信息;
确定待模拟量子程序的量子比特数,并通过预设计算方式获取所需模拟的量子态个数和最大量子态操作数;
根据所述硬件参数信息、GPU状态信息、量子态个数以及最大量子态操作数,确定所述待模拟量子程序的GPU内存分配方案。
2.根据权利要求1所述的方法,其特征在于,所述初始化所述计算集群的GPU状态信息,包括:
获得所述计算集群的节点数、每个节点的GPU数量、每个GPU的计算性能参数,其中,所述计算性能参数由每个GPU的核心数以及最大并行线程数决定;
通信连接各个GPU,并获取每个GPU的当前空闲内存以及各个GPU之间的数据传输速率。
3.根据权利要求2所述的方法,其特征在于,所述预设计算方式包括:全振幅模拟计算方式、部分振幅模拟计算方式和单振幅模拟计算方式中的一种。
4.根据权利要求2所述的方法,其特征在于,所述根据所述硬件参数信息、GPU状态信息、量子态个数以及最大量子态操作数,确定所述待模拟量子程序的GPU内存分配方案,包括:
判断是否存在目标GPU,其中,所述目标GPU的最大并行线程数不小于所述最大量子态操作数;
若否,则进一步判断所述计算集群中所有GPU的当前空闲内存是否可以实现所有量子态模拟;
若所述计算集群中所有GPU的当前空闲内存可以实现所述所有量子态模拟,则根据所述所有量子态在所述GPU的当前空闲内存占用方式对应的执行时间,确定所述待模拟量子程序的GPU内存分配方案。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
若存在所述目标GPU,则判断所述目标GPU的当前空闲内存是否可以实现所述所有量子态模拟;
若是,则将所述所有量子态存储于所述目标GPU的空闲内存中,以实现待模拟量子程序的GPU内存分配。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
若所述目标GPU的当前空闲内存不可以实现所述所有量子态模拟,则继续执行所述进一步判断所述计算集群中所有GPU的当前空闲内存是否可以实现所有量子态模拟的步骤。
7.根据权利要求4所述的方法,其特征在于,所述方法还包括:
若所述计算集群中所有GPU的当前空闲内存不可以实现所有量子态模拟,则输出并显示错误提示信息。
8.根据权利要求4所述的方法,其特征在于,所述根据所述所有量子态在所述GPU的当前空闲内存占用方式对应的执行时间,确定所述待模拟量子程序的GPU内存分配方案,包括:
分别计算所述所有量子态平均分配在每个GPU空闲内存的第一执行时间以及所述所有量子态优先占满单个GPU空闲内存后再占用其他GPU空闲内存的第二执行时间,其中,所述第一执行时间和第二执行时间根据所述GPU之间的数据传输速率、所述计算性能参数、所述硬件参数信息以及所述量子态个数确定;
根据所述第一执行时间与所述第二执行时间,确定所述待模拟量子程序的GPU内存分配方案。
9.根据权利要求8所述的方法,其特征在于,所述根据所述第一执行时间与所述第二执行时间,确定所述待模拟量子程序的GPU内存分配方案,包括:
若所述第一执行时间不大于所述第二执行时间,则将所述所有量子态平均分配在所述计算集群中所有GPU的当前空闲内存;
若所述第一执行时间大于所述第二执行时间,则将所述所有量子态优先占满单个GPU空闲内存后再占用其他GPU。
10.一种待模拟量子程序的GPU内存分配装置,其特征在于,所述装置包括:
获得模块,用于获得分布式计算集群的硬件参数信息,并初始化所述计算集群的GPU状态信息;
第一确定模块,用于确定待模拟量子程序的量子比特数,并通过预设计算方式获取所需模拟的量子态个数和最大量子态操作数;
第二确定模块,用于根据所述硬件参数信息、GPU状态信息、量子态个数以及最大量子态操作数,确定所述待模拟量子程序的GPU内存分配方案。
11.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述权利要求1至9任一项中所述的方法。
12.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述权利要求1至9任一项中所述的方法。
CN202210720765.7A 2022-06-23 2022-06-23 一种待模拟量子程序的gpu内存分配方法及装置 Pending CN117311956A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210720765.7A CN117311956A (zh) 2022-06-23 2022-06-23 一种待模拟量子程序的gpu内存分配方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210720765.7A CN117311956A (zh) 2022-06-23 2022-06-23 一种待模拟量子程序的gpu内存分配方法及装置

Publications (1)

Publication Number Publication Date
CN117311956A true CN117311956A (zh) 2023-12-29

Family

ID=89241330

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210720765.7A Pending CN117311956A (zh) 2022-06-23 2022-06-23 一种待模拟量子程序的gpu内存分配方法及装置

Country Status (1)

Country Link
CN (1) CN117311956A (zh)

Similar Documents

Publication Publication Date Title
CN110516810B (zh) 一种量子程序的处理方法、装置、存储介质和电子装置
CN113850389B (zh) 一种量子线路的构建方法及装置
CN111461335B (zh) 基于mpi多进程的含噪声单量子逻辑门实现方法及装置
EP2738675B1 (en) System and method for efficient resource management of a signal flow programmed digital signal processor code
CN110490308B (zh) 加速库的设计方法、终端设备及存储介质
CN116090568B (zh) 量子数据与经典浮点型数据的大小关系确定方法及装置
CN115879562B (zh) 一种量子程序初始映射的确定方法、装置及量子计算机
CN114819163B (zh) 量子生成对抗网络的训练方法、装置、介质及电子装置
CN114511094B (zh) 一种量子算法的优化方法、装置、存储介质与电子装置
WO2022228224A1 (zh) 量子计算任务执行方法、装置及量子计算机操作系统
CN117311956A (zh) 一种待模拟量子程序的gpu内存分配方法及装置
CN117331680A (zh) 一种多gpu模拟量子计算的方法及装置
CN115983392A (zh) 量子程序映射关系的确定方法、装置、介质及电子装置
CN115879557B (zh) 基于量子线路的数据大小比较方法、装置及量子计算机
CN115879558B (zh) 一种多个量子态之间的大小比较方法及装置
CN115879559B (zh) 多个量子态之间的等值关系判断方法、装置及量子计算机
CN115511094B (zh) 量子线路执行结果确定方法、装置及量子计算机操作系统
CN115249069B (zh) 量子比特校准方法、装置及量子计算机操作系统
CN115730669B (zh) 一种量子线路的处理方法、装置及量子计算机操作系统
CN114372583B (zh) 基于机器学习框架的量子程序优化方法及相关设备
CN115879560B (zh) 一种量子数据与经典数据的等值关系判断方法及装置
CN115907016B (zh) 一种基于量子计算搜索目标范围值的方法及相关装置
CN114912619A (zh) 一种量子计算任务调度方法、装置及量子计算机操作系统
CN114881238A (zh) 量子鉴别器的构造方法、装置、介质及电子装置
CN115204399A (zh) 一种量子计算任务计算方法、装置及量子计算机操作系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination