CN109993309A - 一种基于mpi多进程的双量子逻辑门实现方法 - Google Patents
一种基于mpi多进程的双量子逻辑门实现方法 Download PDFInfo
- Publication number
- CN109993309A CN109993309A CN201910281492.9A CN201910281492A CN109993309A CN 109993309 A CN109993309 A CN 109993309A CN 201910281492 A CN201910281492 A CN 201910281492A CN 109993309 A CN109993309 A CN 109993309A
- Authority
- CN
- China
- Prior art keywords
- quantum
- state
- value
- bit
- logic gates
- 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.)
- Granted
Links
Landscapes
- Optical Modulation, Optical Deflection, Nonlinear Optics, Optical Demodulation, Optical Logic Elements (AREA)
Abstract
本发明属于量子计算领域,具体公开了一种基于MPI多进程的双量子逻辑门实现方法,包括:调用基于MPI通信的2M个进程;其中,M为整数,M≥1,各所述进程编号从0至2M‑1;配置N个量子比特,并初始化所述N个量子比特的2N个量子态,且分配各所述量子态至各所述进程,其中,N为整数,且N≥M+2;根据双量子逻辑门的控制比特位n1和操作比特位n2确定待计算量子态,所述待计算量子态成组出现,每组包含四个量子态;其中:n1和n2均为整数且n1不等于n2;确定存储每组所述待计算量子态的目标进程;运行所述目标进程获得所述双量子逻辑门作用后的量子比特的量子态振幅。本发明能够提高基于多量子比特和双量子逻辑门的量子计算的计算能力与计算效率。
Description
技术领域
本发明属于量子计算领域,特别是一种基于MPI多进程的双量子逻辑门实现方法。
背景技术
量子计算是通过量子逻辑门作用在量子比特上实现量子比特逻辑状态改变实现的,量子比特的逻辑状态可能为|0>态、|1>态、|0>态和|1>态的叠加态,这种叠加性使量子计算的计算量随着量子比特的增加是指数增长的。
双量子逻辑门是一个4*4的矩阵,一个双量子逻辑门对量子线路中的两个量子比特操作只会改变这两个量子比特对应的态的振幅,目前双量子逻辑作用在量子比特上的量子计算实现通常是基于单进程进行的,随着量子比特数量的增加,基于双量子逻辑门的量子计算的计算能力与计算效率大幅下降。
发明内容
本发明的目的是提供一种基于MPI多进程的双量子逻辑门实现方法,以解决现有技术中的不足,它能够提高基于多量子比特和双量子逻辑门的量子计算的计算能力与计算效率。
本发明采用的技术方案如下:
一种基于MPI多进程的双量子逻辑门实现方法,包括:调用基于MPI通信的2M个进程;其中,M为整数,M≥1,各所述进程编号从0至2M-1;配置N个量子比特,并初始化所述N个量子比特的2N个量子态,且分配各所述量子态至各所述进程,其中,N为整数,且N≥M+2;根据双量子逻辑门的控制比特位n1和操作比特位n2确定待计算量子态,所述待计算量子态成组出现,每组包含四个量子态;其中:n1和n2均为整数且n1不等于n2;确定存储每组所述待计算量子态的目标进程;运行所述目标进程获得所述双量子逻辑门作用后的量子比特的量子态振幅。
如上所述的基于MPI多进程的双量子逻辑门实现方法,其中,优选的是,所述配置N个量子比特,并初始化所述N个量子比特的2N个量子态,且分配各所述量子态至各所述进程,具体包括:配置N个量子比特,各所述量子比特的编号为比特位n;其中:0≤n≤N-1;确定量子态和各所述量子态的下标值,所述量子态共有2N个,所述下标值为所述量子态对应的十进制值;初始化所述量子态;将所有所述量子态按照所述下标值的大小依次均匀分配至编号从小到大的各所述进程,每个所述进程内存储的量子态数量为2N-M。
如上所述的基于MPI多进程的双量子逻辑门实现方法,其中,优选的是,所述根据双量子逻辑门的控制比特位和操作比特位确定待计算量子态,具体包括:确定所述控制比特位为n1,所述操作比特位为n2,确定满足所述控制比特位为n1的量子比特的|0>态或|1>态、和所述操作比特位为n2的量子比特的|0>态或|1>态的所有量子态为待计算量子态,其中:所述控制比特位为n1的量子比特的|0>态或|1>态、所述操作比特位为n2的量子比特的|0>态或|1>态组合得到的四个量子态为一组。
如上所述的基于MPI多进程的双量子逻辑门实现方法,其中,优选的是,所述确定存储每组所述待计算量子态的目标进程,具体包括:判断n1的值是否小于n2的值,若小于,则判断n2的值是否小于N-M的值,若n2的值小于N-M的值,则所述每组量子态存储在同一个进程;确定存储所述每组量子态组的进程为对应该组量子态的目标进程。
如上所述的基于MPI多进程的双量子逻辑门实现方法,其中,优选的是,若n2的值大于等于N-M的值,则判断n1的值是否小于N-M的值,若n1的值小于N-M的值,则所述每组量子态的四个所述量子态均匀存储在两个相关联的进程;确定一进程编号为P1;判断P1&2(n2 -N+M)是否大于0,若判断P1&2(n2-N+M)>0,将与编号P1的所述进程相关联的另一进程的编号P2确定为P1-2(n2-N+M);若判断P1&2(n2-N+M)=0,将与编号P1的所述进程相关联的另一进程的编号P2确定为P1+2(n2-N+M)。
如上所述的基于MPI多进程的双量子逻辑门实现方法,其中,优选的是,所述运行所述目标进程获得所述双量子逻辑门作用后的量子比特的量子态振幅之前还包括:编号为P1的所述进程和编号P2的所述进程基于MPI通信相互进行数据传输,使相互获得对方内存储的量子态。
如上所述的基于MPI多进程的双量子逻辑门实现方法,其中,优选的是,若n1的值大于等于N-M的值,则所述每组量子态的四个所述量子态均匀存储在四个相关联的进程,确定一进程编号为S1;判断S1&2(n2-N+M)和S1&2(n1-N+M)是否均大于0;若判断(S1&2(n1-N+M))和(S1&2(n2-N+M))均大于0,将与编号为S1的所述进程相关联的另三进程的编号S2、S3、S4分别确定为S2=S1-2(n1-N+M)-2(n2-N+M),S3=S1-2(n2-N+M),S4=S1-2(n1-N+M);若判断(S1&2(n1-N+M))等于0而(S1&2(n2-N+M))大于0,将与编号为S1的所述进程相关联的另三进程的编号S2、S3、S4分别确定为S2=S1-2(n2-N+M),S3=S1+2(n1-N+M),S4=S1-2(n2-N+M)+2(n1-N+M);若判断(S1&2(n1-N+M))大于0而(S1&2(n2-N+M))等于0,将与编号为S1的所述进程相关联的另三个进程的编号S2、S3、S4分别确定为S2=S1-2(n1-N+M),S3=S1+2(n2-N+M),S4=S1-2(n1-N+M)+2(n2-N+M);若判断(S1&2(n1-N+M))等于0且(S1&2(n2-N+M))均等于0,将与编号为S1的所述进程相关联的另三进程的编号S2、S3、S4分别确定为S2=S1+2(n1-N+M),S3=S1+2(n2-N+M),S4=S1+2(n2-N+M)+2(n1-N+M)。
如上所述的基于MPI多进程的双量子逻辑门实现方法,其中,优选的是,所述运行所述目标进程获得所述双量子逻辑门作用后的量子比特的量子态振幅之前还包括:编号为S1的所述进程、编号为S2的所述进程、编号为S3的所述进程和编号为S4的所述进程彼此之间基于MPI通信相互进行数据传输以获得对方内存储的量子态。
如上所述的基于MPI多进程的双量子逻辑门实现方法,其中,优选的是,若判断n1的值大于n2的值,则交换n1和n2两者对应的值,并将所述双量子逻辑门对应的矩阵按照预设规则进行转换,然后执行判断n2的值是否小于N-M的值的步骤。
如上所述的基于MPI多进程的双量子逻辑门实现方法,其中,优选的是,所述将所述双量子逻辑门对应的矩阵按照预设规则进行转换,具体包括:将双量子逻辑门对应的矩阵的元素下标中的数值1转换为2,数值2转换为1,下标中的其它数值保持不变。
与现有技术相比,本发明配置N个量子比特和2M个基于MPI通信的进程,根据所述双量子逻辑门待作用的量子比特的比特位、及基于MPI的多个所述进程进行实现所述单量子逻辑门的运算,该过程中,通过基于MPI通信的进程实现了量子态的分开存储,而量子逻辑门作用的量子比特的逻辑状态可能为|0>态、|1>态、|0>态和|1>态的叠加态,具体的,量子态可以表示为ψ=a|0>+b|1>,其中,a,b为表示量子态振幅的复数,因此使得结合量子态和双量子逻辑门对应的矩阵运算实现双量子逻辑门时需要将双量子逻辑门和2N-2对量子态对应的初始化振幅分别进行运算实现量子态振幅的更新,通过基于MPI通信的进程实现了量子态的分开存储,可以方便以上运算的并行进行,随着量子比特数目的增大,只需增大基于MPI通信的进程数量便可有效提高基于单量子逻辑门的量子计算的计算能力与计算效率,一定程度上克服了单进程计算在量子比特数量的增加时存在的限制量子计算的计算能力与计算效率的缺陷和不足。
附图说明
图1是本发明实施例提供的基于MPI多进程的双量子逻辑门实现方法的流程示意图。
具体实施方式
下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
如图1所示,本发明的实施例提供了一种基于MPI多进程的双量子逻辑门实现方法,包括步骤S1至步骤S5:
步骤S1:调用基于MPI通信的2M个进程;其中,M为整数,M≥1,各所述进程编号从0至2M-1。
具体的,基于MPI通信的2M个进程,即基于MPI通信的2M个处理器,至少两个处理器之间基于MPI通信进行数据交互,然后每个处理器内按需进行计算,其中MPI是一个跨语言的通讯协议,用于编写并行计算机,支持点对点和广播。且MPI是一个信息传递应用程序接口,包括协议和和语义说明,它们指明其如何在各种实现中发挥其特性。MPI作为高性能计算的主要模型,具有高性能、大规模性和可移植性的特点。MPI用于并行进程,通过通信在进程之间进行消息传递。MPI定义了可以被C、C++和Fortran程序调用的函数库,这些函数库里面主要涉及的是两个进程之间通信的函数。MPI可以在Windows和linux环境中都有相应的库,可以设计相应的算法调用MPI中的API接口,去实现多进程或在集群中运算。配置进程数后MPI运行时相当于多个进程在同时计算,会有效的提高计算效率。MPI的运行方式如下:
mpiexec-n NUMBER./program
其中mpiexec-n为mpi运行时的命令,NUMBER为设置的进程个数,program为运行的程序。
步骤S2:配置N个量子比特,并初始化所述N个量子比特的2N个量子态,且分配各所述量子态至各所述进程,其中,N为整数,且N≥M+2。
具体的,基于双量子逻辑门仿真计算的应用场景,配置的量子比特数N大于等于M+2,保证了每个进程中至少存储4个量子态。需要说明的是,根据量子比特的量子态叠加性可知,N个量子比特对应的量子态有2N个。
例如:5个量子比特:q0、q1、q2、q3、q4,其中,q右下角的下标为所述量子比特的编号,又称为比特位n,可以看出0≤n≤N-1,则对应的量子态有32个,分别为00000(0)、00001(1)、00010(2)、00011(3)、00100(4)、00101(5)、00110(6)、00111(7)、01000(8)、01001(9)、01010(10)、01011(11)、01100(12)、01101(13)、01110(14)、01111(15)、10000(16)、10001(17)、10010(18)、10011(19)、10100(20)、10101(21)、10110(22)、10111(23)、11000(24)、11001(25)、11010(26)、11011(27)、11100(28)、11101(29)、11110(30)、11111(31)。其中()内数值为该量子态对应的十进制值,在本实施例中,也称为量子态的下标值。另外需要说明的是,量子态的表示中,量子位从左到右排布,又称为左低位,右高位,即量子态表示遵循q4q3q2q1q0的排布规则。32个二进制表示的量子态的十进位制值为0至31。
对32个量子态进行初始化,具体是指把下标值为0的量子态初始化为1,其它量子态初始化为0,需要说明的是,初始化量子态是指初始化量子态的振幅,考虑到量子态的振幅为复数,在本实施例中,把下标值为0的量子态初始化为1是指下标值为0的量子态的振幅初始值初始化为1+0i,其它量子态初始化为0是指把指下标值为其它值(即非0值)的量子态的振幅初始值初始化为0+0i。
另外,在具体操作时,分配各所述量子态至各所述进程,是指将所有所述量子态按照所述下标值的大小依次均匀分配至编号从小到大的各所述进程,每个所述进程内存储的量子态数量为2N-M。
继续以以上32个量子态为例,调用8个进程(即M=3),32个量子态在8个进程中的分配存储如下表1所示,
表1 5个量子比特的32个量子态在8进程中的存储分布
由表1可知,5个量子比特的31个量子态分布在8个(23)进程中时,每个进程存储有4(22)个量子态,每个量子态的下标值S等于该量子态对应的进程编号S1*22+该量子态的最低两位量子态的十进制数值。可以理解为,每个进程编号对应的二进位值是该进程内存储的量子态的高M位,可结合表1理解如下,0号进程存储的四个量子态的高M(M=2)位均为000,1号进程存储的四个量子态的高M位均为001,2号进程存储的四个量子态的高M位均为010,3号进程存储的四个量子态的高M位均为011,4号进程存储的四个量子态的高M位均为100,5号进程存储的四个量子态的高M位均为101,6号进程存储的四个量子态的高M位均为110,7号进程存储的四个量子态的高M位均为111。
步骤S3:根据双量子逻辑门的控制比特位n1和操作比特位n2确定待计算量子态,所述待计算量子态成组出现,每组包含四个量子态;其中:n1和n2均为整数且n1不等于n2。
需要说明的是,双量子逻辑门是量子逻辑门的一种,双量子逻辑门具有两个参数,分别为控制比特位和操作比特位,双量子逻辑门对应的矩阵表示为4*4矩阵,具体可以表示为常见的双量子逻辑门为CNOT门,CNOT(n1,n2)中n1为控制位,n2为操作位,其作用为:控制位的量子态不变化,当控制位为|0>态时,操作位n2的量子态不变,当控制位为|1>态时,操作位n2的量子态取反。n1等于n2时表示控制比特和操作比特是同一个量子比特,这在构建量子线路时是不允许的,所以n1和n2均为整数且n1不等于n2。
而根据双量子逻辑门的控制比特位n1和操作比特位n2确定待计算量子态,是指确定满足所述控制比特位为n1的量子比特的|0>态或|1>态、和所述操作比特位为n2的量子比特的|0>态或|1>态的所有量子态为待计算量子态。而所述待计算量子态成组出现,每组包含四个量子态是由量子态的叠加性(即量子态可能处于|0>态和|1>态的叠加态)决定的,所述控制比特位为n1的量子比特的|0>态或|1>态、所述操作比特位为n2的量子比特的|0>态或|1>态组合得到的四个量子态为一组。
举例来说,对如上所介绍的32个量子态中,当双比特量子逻辑门作用在第一个比特(q0,n1=0)和第二个比特上(q1,n2=1)上时,对应的00000(0)、00001(1)、00010(2)、00011(3)为一组,00100(4)、00101(5)、00110(6)、00111(7)为一组,01000(8)、01001(9)、01010(10)、01011(11)为一组,01100(12)、01101(13)、01110(14)、01111(15)为一组,10000(16)、10001(17)、10010(18)、10011(19)为一组,10100(20)、10101(21)、10110(22)、10111(23)为一组,11000(24)、11001(25)、11010(26)、11011(27)为一组,11100(28)、11101(29)、11110(30)、11111(31)为一组,可以看出,每一组均满足第一个比特(q0,n1=0)为|0>或|1>第二个比特上(q1,n2=1)为|0>或|1>,而其它量子比特的量子态一致的条件。
再举例来说,对如上所介绍的32个量子态中,当双比特量子逻辑门作用在第一个比特(q0,n1=0)和第二个比特上(q3,n2=3)上时,对应的00000(0)、00001(1)、01000(8)、01001(9)为一组,00010(2)、00011(3)、01010(10)、01011(11)为一组,00100(4)、00101(5)、01100(12)、01101(13)为一组,00110(6)、00111(7)、01110(14)、01111(15)为一组,10000(16)、10001(17)、1000(24)、11001(25)为一组,10010(18)、10011(19)、11010(26)、11011(27)为一组,10100(20)、10101(21)、11100(28)、11101(29)为一组,10110(22)、10111(23)、11110(30)、11111(31)为一组,可以看出,每一组均满足第一个比特(q0,n1=0)为|0>或|1>第二个比特上(q3,n2=3)为|0>或|1>,而其它量子比特的量子态一致的条件。
步骤S4:确定存储每组所述待计算量子态的目标进程。
继续结合表1来说明,当双比特量子逻辑门作用在第一个比特(q0,n1=0)和第二个比特上(q3,n2=3)上时,对应的00000(0)、00001(1)、01000(8)、01001(9)一组量子态分布在0号进程和2号进程中,00010(2)、00011(3)、01010(10)、01011(11)一组量子态分布在0号进程和2号进程中,00100(4)、00101(5)、01100(12)、01101(13)一组量子态分布在1号进程和3号进程中,00110(6)、00111(7)、01110(14)、01111(15)一组量子态分布在1号进程和3号进程中,10000(16)、10001(17)、1000(24)、11001(25)一组量子态分布在4号进程和6号进程中,10010(18)、10011(19)、11010(26)、11011(27)一组量子态分布在4号进程和6号进程中,10100(20)、10101(21)、11100(28)、11101(29)一组量子态分布在5号进程和7号进程中,10110(22)、10111(23)、11110(30)、11111(31)一组量子态分布在5号进程和7号进程中。此时,0号进程和2号进程作为相关联进程,1号进程和3号进程作为相关联进程,4号进程和6号进程作为相关联进程,5号进程和7号进程作为相关联进程。
确定存储每组所述待计算量子态的目标进程,即确定存储每组所述待计算量子态的相关联的进程。
步骤S5:运行所述目标进程获得所述双量子逻辑门作用后的量子比特的量子态振幅。
具体的,运行目标进程获得所述双量子逻辑门作用后的量子比特的量子态振幅是指在每个进程内结合量子逻辑门矩阵和一组量子态的概率福进行运算更新该组量子态的概率幅,具体如下:
定义4个复数如下:其中Complex为“复数”的意思,state是“态”的意思,两者均用于定义变量。
Complex s00=state[0];
Complex s01=state[2];
Complex s10=state[4];
Complex s11=state[6];
state[rea100_idx]=s00*U00+s01*U01+s10*U02+s11*U03;
state[rea101_idx]=s00*U10+s01*U11+s10*U12+s11*U13;
state[rea110_idx]=s00*U20+s01*U21+s10*U22+s11*U23;
state[rea111_idx]=s00*U30+s01*U31+s10*U32+s11*U33;
其中表示双量子逻辑门对应的矩阵,以上表示了双量子逻辑门与一组量子态进行运算更新量子态概率幅的过程,依次将其它组量子态下标对应的态的值按上述运算过程运算后得到的新的量子态的数组,即为一个双量子门逻辑门操作5个量子比特组成的量子线路的仿真结果。
通过以上步骤S1至步骤S5,配置N个量子比特和2M个基于MPI通信的进程,根据所述双量子逻辑门待作用的量子比特的比特位、及基于MPI的多个所述进程实现所述双量子逻辑门的运算,该过程中,通过基于MPI通信的进程实现了量子态的分开存储,而量子逻辑门作用的量子比特的逻辑状态可能为|0>态、|1>态、|0>态和|1>态的叠加态,具体的,量子态可以表示为ψ=a|0>+b|1>,其中,a,b为表示量子态振幅的复数,结合量子态和双量子逻辑门对应的矩阵运算实现双量子逻辑门时需要将双量子逻辑门和2N-2对量子态对应的初始化振幅分别进行运算实现量子态振幅的更新,通过基于MPI通信的进程实现了量子态的分开存储,可以方便以上运算的并行进行,随着量子比特数目的增大,只需增大基于MPI通信的进程数量便可有效提高基于双量子逻辑门的量子计算的计算能力与计算效率,一定程度上克服了单进程计算在量子比特数量的增加时存在的限制量子计算的计算能力与计算效率的缺陷和不足。
作为本实施例的优选实施方案,步骤S4中所述确定存储每组所述待计算量子态的目标进程,具体包括:
步骤S41:判断n1的值是否小于n2的值,若小于,则判断n2的值是否小于N-M的值。
步骤S41a:若n2的值小于N-M的值,则所述每组量子态存储在同一个进程;确定存储所述每组量子态组的进程为对应该组量子态的目标进程。
步骤S41b:若n2的值大于等于N-M的值,则判断n1的值是否小于N-M的值;
步骤S42a:若n1的值小于N-M的值,则所述每组量子态的四个所述量子态均匀存储在两个相关联的进程;
步骤S42b:若n1的值大于等于N-M的值,则所述每组量子态的四个所述量子态均匀存储在四个相关联的进程;
在步骤S42a中n1的值小于N-M的值,且n2的值大于等于N-M的值的情况下,所述每组量子态的四个所述量子态均匀存储在两个相关联的进程的情况下,确定存储每组所述待计算量子态的目标进程,具体包括:
步骤S42a-1:确定一进程编号为P1;
步骤S42a-2:判断P1&2(n2-N+M)是否大于0,若判断P1&2(n2-N+M)>0,将与编号P1的所述进程相关联的另一进程的编号P2确定为P1-2(n2-N+M);若判断P1&2(n2-N+M)=0,将与编号P1的所述进程相关联的另一进程的编号P2确定为P1+2(n2-N+M)。
该过程中,可以理解的是,经过以上分析可知,每个进程编号对应的二进位值是该进程内存储的量子态的高M位二进位制数值,而在n2的值大于等于N-M的值的情况下2(n2-N+M)对应的二进制为100...0,其中:0的个数为n2-N+M个,该二进位值100...0与确定的一进程的编号P1进行位与运算,其中位与运算的符号为“&”,当运算结果为0时,说明该进程内的量子态的第n2位为|0>态,当运算结果为1时,说明该进程内的量子态的第n2位为|1>态。
N个量子比特的量子态中,第n2位为|0>态的量子态表示为|····0n2····>,第n2位为|1>态的量子态表示为|····1n2····>。其中:量子态表示中的····中的每一个省略点号表示一个量子态,连续的多个省略点号的表示完全一样的量子态。在一个量子态中,省略点号的个数为N-1。
考虑到量子态存储时是按照量子态的下标值的大小依次存储到编号从小到大的各进程中的,所以,量子态|····1n2····>的下标值大于量子态|····0n2····>的下标值,且两者之差等于2n2。量子态|····1n2····>的对应的进程编号大于量子态|····0n2····>对应的进程编号,且两者之差等于2n2/每个进程内存储的量子态数2(N-M),即进程编号之差为2(n2-N+M)。
综上,当确定一进程的编号P1后,该进程编号P1与2(n2-N+M)对应的二进制进行位与运算,其中位与运算的符号为“&”,当运算结果为0时,说明该进程内的量子态的第n2位为|0>态时,即编号P1的进程内存储的量子态为量子态|····0n2····>,此时要获得存储量子态|····1n2····>的进程编号P2,则需要确定P2为P1+2(n2-N+M);当确定的一进程的编号P1进行位与&运算,当运算结果为1时,说明该进程内的量子态的第n2位为|1>态时,即编号P1的进程内存储的量子态为量子态|····1n2····>,此时要获得存储量子态|····0n2····>的进程编号P2,则需要确定P2为P1-2(n2-N+M)。
在步骤S42a中描述的n1的值小于N-M的值,且n2的值大于等于N-M的值时存在的所述每组量子态的四个所述量子态均匀存储在两个相关联的进程的情况下,在执行步骤S5所述的运行所述目标进程获得所述双量子逻辑门作用后的量子比特的量子态振幅之前还包括:
步骤S45a:编号为P1的所述进程和编号P2的所述进程基于MPI通信相互进行数据传输,使相互获得对方内存储的量子态。
通过MPI通信相互进行数据传输是通过MPI中的MPI_Sendrecv接口,将相关联的进程中的量子态值互相发送到对应的进程中,以使得每个进程均获得相关联进程中的量子态值数据副本。
在步骤S42b中n2的值大于n1的值,且n1的值大于等于N-M的值,所述每组量子态的四个所述量子态均匀存储在四个相关联的进程的情况下,确定存储每组量子态的四个所述量子态的四个相关联的进程的过程如下:
步骤S42b-1:确定一进程编号为S1;
步骤S42b-2:判断S1&2(n2-N+M)和S1&2(n1-N+M)是否均大于0;
步骤S42b-2-1:若判断(S1&2(n1-N+M))和(S1&2(n2-N+M))均大于0,将与编号为S1的所述进程相关联的另三进程的编号S2、S3、S4分别确定为S2=S1-2(n1-N+M)-2(n2-N+M),S3=S1-2(n2-N+M),S4=S1-2(n1-N+M);
步骤S42b-2-2:若判断(S1&2(n1-N+M))等于0而(S1&2(n2-N+M))大于0,将与编号为S1的所述进程相关联的另三进程的编号S2、S3、S4分别确定为S2=S1-2(n2-N+M),S3=S1-2(n2-N+M)+2(n1-N+M),S4=S1+2(n1-N+M);
步骤S42b-2-3:若判断(S1&2(n1-N+M))大于0而(S1&2(n2-N+M))等于0,将与编号为S1的所述进程相关联的另三个进程的编号S2、S3、S4分别确定为S2=S1-2(n1-N+M),S3=S1-2(n1 -N+M)+2(n2-N+M),S4=S1+2(n2-N+M);
步骤S42b-2-4:若判断(S1&2(n1-N+M))等于0且(S1&2(n2-N+M))均等于0,将与编号为S1的所述进程相关联的另三进程的编号S2、S3、S4分别确定为S2=S1+2(n1-N+M),S3=S1+2(n2 -N+M),S4=S1+2(n2-N+M)+2(n1-N+M)。
该过程中,可以理解的是,经过以上分析可知,每个进程编号对应的二进位值是该进程内存储的量子态的高M位二进位,而在n2的值大于n1的值,且n1的值大于等于N-M的值的情况下,2(n2-N+M)对应的二进制为100...0,其中:0的个数为n2-N+M个,该二进位值100...0与确定的一进程的编号S1进行位与&运算,当运算结果为0时,说明该进程内的量子态的第n2位为|0>态,当运算结果为1时,说明该进程内的量子态的第n2位为|1>态。
同理,2(n1-N+M)对应的二进制为100...0,其中:0的个数为n1-N+M个,该二进位值100...0与确定的一进程的编号S1进行位与&运算,当运算结果为0时,说明该进程内的量子态的第n1位为|0>态,当运算结果为1时,说明该进程内的量子态的第n1位为|1>态。
量子态的第n1位为|0>态第n2位为|0>态的表示为量子态|····0n2··0n1··>,量子态的第n1位为|1>态第n2位为|0>态的表示为量子态|····0n2··1n1··>,量子态的第n1位为|0>态第n2位为|1>态的表示为量子态|····1n2··0n1··>,量子态的第n1位为|1>态第n2位为|1>态的表示为量子态|····1n2··0n1··>。其中:量子态表示中的····中的每一个··表示一个量子态,连续····的表示完全一样的量子态。
考虑到量子态存储时是按照量子态的下标值的大小依次存储到编号从小到大的各进程中的,所以,量子态|····0n2··1n1··>的下标值大于量子态|····0n2····0n1····>的下标值,且两者之差等于2n1。量子态|····0n2··1n1··>的下标值大于量子态|····0n2····0n1····>的下标值,且两者之差等于2n1。量子态|····1n2··0n1··>的下标值大于量子态|····0n2····0n1····>的下标值,且两者之差等于2n2。量子态|····1n2··1n1··>的下标值大于量子态|····0n2····0n1····>的下标值,且两者之差等于2n2+2n1。其中:量子态表示中的····中的每一个省略点号表示一个量子态,连续的多个省略点号的表示完全一样的量子态。在一个量子态中,省略点号的个数为N-1。
综上,(a)当确定的一进程的编号S1与2(n1-N+M)对应的二进制进行位与运算,其中位与运算的符号为“&”,S1与2(n2-N+M)对应的二进制进行位与&运算当运算,结果均大于0时,说明该进程内的量子态的第n1位为|1>态,第n2位为|1>态,即编号S1的进程内存储的量子态为量子态|····1n2··1n1··>。
此时:
要获得存储量子态|····0n2····0n1····>的进程编号S2,则需要确定S2为S1-2(n1-N+M)-2(n2-N+M),即S2=S1-2(n1-N+M)-2(n2-N+M);
要获得存储量子态|····0n2····1n1····>的进程编号S3,则需要确定S3为S1-2(n2-N+M),即S3=S1-2(n2-N+M);
要获得存储量子态|····1n2····0n1····>的进程编号S4,则需要确定S4为S1-2(n1-N+M),即S4=S1-2(n1-N+M)。
(b)当确定的一进程的编号S1与2(n1-N+M)对应的二进制进行位与&运算,结果等于0,S1与2(n2-N+M)对应的二进制进行位与算当运算,其中位与运算的符号为“&”,结果大于0时,说明该进程内的量子态的第n1位为|0>态,第n2位为|1>态,即编号S1的进程内存储的量子态为量子态|····1n2··0n1··>。
此时:
要获得存储量子态|····0n2····0n1····>的进程编号S2,则需要确定S2为S1-2(n2-N+M),即S2=S1-2(n2-N+M);
要获得存储量子态|····0n2····1n1····>的进程编号S3,则需要确定S3为S1-2(n2-N+M)+2(n1-N+M),即S3=S1-2(n2-N+M)+2(n1-N+M);
要获得存储量子态|····1n2····1n1····>的进程编号S4,则需要确定S4为S1+2(n1-N+M),即S4=S1+2(n1-N+M)。
(c)当确定的一进程的编号S1与2(n1-N+M)对应的二进制进行位与&运算,结果大于0,S1与2(n2-N+M)对应的二进制进行位与&运算当运算,结果等于0时,说明该进程内的量子态的第n1位为|1>态,第n2位为|0>态,即编号S1的进程内存储的量子态为量子态|····0n2··1n1··>。
此时:
要获得存储量子态|····0n2····0n1····>的进程编号S2,则需要确定S2为S1-2(n1-N+M),即S2=S1-2(n1-N+M);
要获得存储量子态|····1n2····0n1····>的进程编号S3,则需要确定S3为S1+2(n2-N+M)-2(n1-N+M),即S3=S1+2(n2-N+M)-2(n1-N+M);
要获得存储量子态|····1n2····1n1····>的进程编号S4,则需要确定S4为S1+2(n2-N+M),即S4=S1+2(n2-N+M)。
(d)当确定的一进程的编号S1与2(n1-N+M)对应的二进制进行位与&运算,结果等于0,S1与2(n2-N+M)对应的二进制进行位与&运算当运算,结果等于0时,说明该进程内的量子态的第n2位为|0>态,第n1位为|0>态,即编号S1的进程内存储的量子态为量子态|····0n2··1n1··>。
此时:
要获得存储量子态|····0n2····0n1····>的进程编号S2,则需要确定S2为S1+2(n1-N+M),即S2=S1+2(n1-N+M);
要获得存储量子态|····1n2····0n1····>的进程编号S3,则需要确定S3为S1+2(n2-N+M),即S3=S1+2(n2-N+M);
要获得存储量子态|····1n2····1n1····>的进程编号S4,则需要确定S4为S1+2(n2-N+M)+2(n1-N+M),即S4=S1+2(n1-N+M)+2(n2-N+M)。
在步骤S42b中描述的n2的值大于n1的值,且n1的值大于等于N-M的值时,所述每组量子态的四个所述量子态均匀存储在四个相关联的进程的情况下,在执行步骤S5所述的运行所述目标进程获得所述双量子逻辑门作用后的量子比特的量子态振幅之前还包括:
步骤S45b:编号为S1的所述进程、编号为S2的所述进程、编号为S3的所述进程和编号为S4的所述进程彼此之间基于MPI通信相互进行数据传输以获得对方内存储的量子态。
通过MPI通信相互进行数据传输是通过MPI中的MPI_Sendrecv接口,将相关联的进程中的量子态值互相发送到对应的进程中,以使得每个进程均获得相关联进程中的量子态值数据副本。
作为本实施例的优选技术方案,在步骤S41中所述的在n1的值不等于n2的值的前提下,判断n1的值是否小于n2的值,若判断n1的值大于n2的值,则交换n1和n2两者对应的值,并将所述双量子逻辑门对应的矩阵按照预设规则进行转换,然后执行判断n2的值是否小于N-M的值的步骤。
需要说明的,将所述双量子逻辑门对应的矩阵按照预设规则进行转换,具体为:将双量子逻辑门对应的矩阵的元素下标中的数值1转换为2,数值2转换为1,下标中的其它数值保持不变,实现了与原双量子逻辑门相反的作用。
举例来说,双量子逻辑门对应的矩阵按照预设规则进行转换后
本实施例利用MPI通信的多进程进行多个量子比特的双量子逻辑门仿真计算,通过多个量子比特在多个进程中的分布以及进程编号与量子态下标值之间的关系精准查找每组待计算量子态的相关联进程,减少了双量子逻辑门仿真计算的时间和空间开销,保证了多个量子比特的双量子逻辑门仿真计算。
以上依据图式所示的实施例详细说明了本发明的构造、特征及作用效果,以上所述仅为本发明的较佳实施例,但本发明不以图面所示限定实施范围,凡是依照本发明的构想所作的改变,或修改为等同变化的等效实施例,仍未超出说明书与图示所涵盖的精神时,均应在本发明的保护范围内。
Claims (10)
1.一种基于MPI多进程的双量子逻辑门实现方法,其特征在于,包括:
调用基于MPI通信的2M个进程;其中,M为整数,M≥1,各所述进程编号从0至2M-1;
配置N个量子比特,并初始化所述N个量子比特的2N个量子态,且分配各所述量子态至各所述进程,其中,N为整数,且N≥M+2;
根据双量子逻辑门的控制比特位n1和操作比特位n2确定待计算量子态,所述待计算量子态成组出现,每组包含四个量子态;其中:n1和n2均为整数且n1不等于n2;
确定存储每组所述待计算量子态的目标进程;
运行所述目标进程获得所述双量子逻辑门作用后的量子比特的量子态振幅。
2.根据权利要求1所述基于MPI多进程的双量子逻辑门实现方法,其特征在于,所述配置N个量子比特,并初始化所述N个量子比特的2N个量子态,且分配各所述量子态至各所述进程,具体包括:
配置N个量子比特,各所述量子比特的编号为比特位n;其中:0≤n≤N-1;
确定量子态和各所述量子态的下标值,所述量子态共有2N个,所述下标值为所述量子态对应的十进制值;
初始化所述量子态;
将所有所述量子态按照所述下标值的大小依次均匀分配至编号从小到大的各所述进程,每个所述进程内存储的量子态数量为2N-M。
3.根据权利要求2所述基于MPI多进程的双量子逻辑门实现方法,其特征在于,所述根据双量子逻辑门的控制比特位和操作比特位确定待计算量子态,具体包括:
确定所述控制比特位为n1,所述操作比特位为n2;
确定满足所述控制比特位为n1的量子比特的|0>态或|1>态、和所述操作比特位为n2的量子比特的|0>态或|1>态的所有量子态为待计算量子态,其中:所述控制比特位为n1的量子比特的|0>态或|1>态、所述操作比特位为n2的量子比特的|0>态或|1>态组合得到的四个量子态为一组。
4.根据权利要求1所述基于MPI多进程的双量子逻辑门实现方法,其特征在于,所述确定存储每组所述待计算量子态的目标进程,具体包括:
判断n1的值是否小于n2的值,若小于,则判断n2的值是否小于N-M的值,若n2的值小于N-M的值,则所述每组量子态存储在同一个进程;
确定存储所述每组量子态组的进程为对应该组量子态的目标进程。
5.根据权利要求4所述基于MPI多进程的双量子逻辑门实现方法,其特征在于,若n2的值大于等于N-M的值,则判断n1的值是否小于N-M的值,若n1的值小于N-M的值,则所述每组量子态的四个所述量子态均匀存储在两个相关联的进程;
确定一进程编号为P1;
判断P1&2(n2-N+M)是否大于0,若判断P1&2(n2-N+M)>0,将与编号P1的所述进程相关联的另一进程的编号P2确定为P1-2(n2-N+M);若判断P1&2(n2-N+M)=0,将与编号P1的所述进程相关联的另一进程的编号P2确定为P1+2(n2-N+M)。
6.根据权利要求5所述基于MPI多进程的双量子逻辑门实现方法,其特征在于,所述运行所述目标进程获得所述双量子逻辑门作用后的量子比特的量子态振幅之前还包括:
编号为P1的所述进程和编号P2的所述进程基于MPI通信相互进行数据传输,使相互获得对方内存储的量子态。
7.根据权利要求5所述基于MPI多进程的双量子逻辑门实现方法,其特征在于,若n1的值大于等于N-M的值,则所述每组量子态的四个所述量子态均匀存储在四个相关联的进程;
确定一进程编号为S1;
判断S1&2(n2-N+M)和S1&2(n1-N+M)是否均大于0;
若判断(S1&2(n1-N+M))和(S1&2(n2-N+M))均大于0,将与编号为S1的所述进程相关联的另三进程的编号S2、S3、S4分别确定为S2=S1-2(n1-N+M)-2(n2-N+M),S3=S1-2(n2-N+M),S4=S1-2(n1 -N+M);
若判断(S1&2(n1-N+M))等于0而(S1&2(n2-N+M))大于0,将与编号为S1的所述进程相关联的另三进程的编号S2、S3、S4分别确定为S2=S1-2(n2-N+M),S3=S1+2(n1-N+M),S4=S1-2(n2-N+M)+2(n1 -N+M);
若判断(S1&2(n1-N+M))大于0而(S1&2(n2-N+M))等于0,将与编号为S1的所述进程相关联的另三个进程的编号S2、S3、S4分别确定为S2=S1-2(n1-N+M),S3=S1+2(n2-N+M),S4=S1-2(n1-N+M)+2(n2-N+M);
若判断(S1&2(n1-N+M))等于0且(S1&2(n2-N+M))均等于0,将与编号为S1的所述进程相关联的另三进程的编号S2、S3、S4分别确定为S2=S1+2(n1-N+M),S3=S1+2(n2-N+M),S4=S1+2(n2-N+M)+2(n1-N+M)。
8.根据权利要求7所述基于MPI多进程的双量子逻辑门实现方法,其特征在于,所述运行所述目标进程获得所述双量子逻辑门作用后的量子比特的量子态振幅之前还包括:
编号为S1的所述进程、编号为S2的所述进程、编号为S3的所述进程和编号为S4的所述进程彼此之间基于MPI通信相互进行数据传输以获得对方内存储的量子态。
9.根据权利要求4所述基于MPI多进程的双量子逻辑门实现方法,其特征在于,若判断n1的值大于n2的值,则交换n1和n2两者对应的值,并将所述双量子逻辑门对应的矩阵按照预设规则进行转换,然后执行判断n2的值是否小于N-M的值的步骤。
10.根据权利要求9所述基于MPI多进程的双量子逻辑门实现方法,其特征在于,所述将所述双量子逻辑门对应的矩阵按照预设规则进行转换,具体包括:
将双量子逻辑门对应的矩阵的元素下标中的数值1转换为2,数值2转换为1,下标中的其它数值保持不变。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910281492.9A CN109993309B (zh) | 2019-04-09 | 2019-04-09 | 一种基于mpi多进程的双量子逻辑门实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910281492.9A CN109993309B (zh) | 2019-04-09 | 2019-04-09 | 一种基于mpi多进程的双量子逻辑门实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109993309A true CN109993309A (zh) | 2019-07-09 |
CN109993309B CN109993309B (zh) | 2021-02-19 |
Family
ID=67132673
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910281492.9A Active CN109993309B (zh) | 2019-04-09 | 2019-04-09 | 一种基于mpi多进程的双量子逻辑门实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109993309B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111461336A (zh) * | 2020-04-03 | 2020-07-28 | 合肥本源量子计算科技有限责任公司 | 基于mpi多进程的含噪声双量子逻辑门实现方法及装置 |
CN111461335A (zh) * | 2020-04-03 | 2020-07-28 | 合肥本源量子计算科技有限责任公司 | 基于mpi多进程的含噪声单量子逻辑门实现方法及装置 |
CN113222158A (zh) * | 2020-01-21 | 2021-08-06 | 合肥本源量子计算科技有限责任公司 | 一种量子态的获得方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2986555A1 (en) * | 2013-04-18 | 2016-02-24 | Bar-Ilan University | Systems comprising non-immunogenic and nuclease resistant nucleic acid origami devices for molecular computation |
CN108921296A (zh) * | 2018-05-24 | 2018-11-30 | 合肥本源量子计算科技有限责任公司 | 一种量子比特的虚拟映射方法及系统 |
CN109063844A (zh) * | 2018-07-13 | 2018-12-21 | 合肥本源量子计算科技有限责任公司 | 一种表示量子程序的数据结构 |
CN109478258A (zh) * | 2016-06-02 | 2019-03-15 | 谷歌有限责任公司 | 使用子逻辑控制训练量子演进 |
-
2019
- 2019-04-09 CN CN201910281492.9A patent/CN109993309B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2986555A1 (en) * | 2013-04-18 | 2016-02-24 | Bar-Ilan University | Systems comprising non-immunogenic and nuclease resistant nucleic acid origami devices for molecular computation |
CN109478258A (zh) * | 2016-06-02 | 2019-03-15 | 谷歌有限责任公司 | 使用子逻辑控制训练量子演进 |
CN108921296A (zh) * | 2018-05-24 | 2018-11-30 | 合肥本源量子计算科技有限责任公司 | 一种量子比特的虚拟映射方法及系统 |
CN109063844A (zh) * | 2018-07-13 | 2018-12-21 | 合肥本源量子计算科技有限责任公司 | 一种表示量子程序的数据结构 |
Non-Patent Citations (1)
Title |
---|
曹博: ""量子保密通信网络及其协议研究"", 《中国优秀硕士论文全文数据库》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113222158A (zh) * | 2020-01-21 | 2021-08-06 | 合肥本源量子计算科技有限责任公司 | 一种量子态的获得方法及装置 |
CN113222158B (zh) * | 2020-01-21 | 2023-09-05 | 本源量子计算科技(合肥)股份有限公司 | 一种量子态的获得方法及装置 |
CN111461336A (zh) * | 2020-04-03 | 2020-07-28 | 合肥本源量子计算科技有限责任公司 | 基于mpi多进程的含噪声双量子逻辑门实现方法及装置 |
CN111461335A (zh) * | 2020-04-03 | 2020-07-28 | 合肥本源量子计算科技有限责任公司 | 基于mpi多进程的含噪声单量子逻辑门实现方法及装置 |
CN111461336B (zh) * | 2020-04-03 | 2023-11-03 | 本源量子计算科技(合肥)股份有限公司 | 基于mpi多进程的含噪声双量子逻辑门实现方法及装置 |
CN111461335B (zh) * | 2020-04-03 | 2023-12-15 | 本源量子计算科技(合肥)股份有限公司 | 基于mpi多进程的含噪声单量子逻辑门实现方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109993309B (zh) | 2021-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109993309A (zh) | 一种基于mpi多进程的双量子逻辑门实现方法 | |
US11586577B2 (en) | Autonomous memory architecture | |
Jeannot et al. | Near-optimal placement of MPI processes on hierarchical NUMA architectures | |
Gupta et al. | Landscape synergy in evolutionary multitasking | |
US9612750B2 (en) | Autonomous memory subsystem architecture | |
Mojumder et al. | Profiling dnn workloads on a volta-based dgx-1 system | |
Ma et al. | Process distance-aware adaptive MPI collective communications | |
WO2023124296A1 (zh) | 基于知识蒸馏的联合学习训练方法、装置、设备及介质 | |
CN111461335B (zh) | 基于mpi多进程的含噪声单量子逻辑门实现方法及装置 | |
CN110908799A (zh) | 一种分布式训练中的通信方法、装置、设备、介质 | |
CN113935235A (zh) | 基于遗传算法和代理模型的工程设计优化方法及装置 | |
CN113821983A (zh) | 基于代理模型的工程设计优化方法、装置及电子设备 | |
CN111832144B (zh) | 一种全振幅量子计算模拟方法 | |
CN114303194A (zh) | 在具有人工智能模式的存储器系统中复制数据 | |
CN111079888A (zh) | 一种基于混合qpso-de寻优预测水质溶氧方法及系统 | |
Dieguez et al. | Solving multiple tridiagonal systems on a multi-GPU platform | |
CN113011563A (zh) | 基于gpu的卷积神经网络批归一化处理方法 | |
WO2021003581A1 (en) | Blockchain microprocessor and method | |
TW202201284A (zh) | 自動機器學習系統效能調優方法、裝置、設備及介質 | |
CN117112145B (zh) | 训练模型分配方法、装置、计算机设备和存储介质 | |
CN117725348B (zh) | 一种gpu计算大规模数组求和过程中的线程管理方法及系统 | |
US11966328B2 (en) | Near-memory determination of registers | |
Zheng et al. | Inferring genome-wide gene regulatory networks with GPU or CPU parallel algorithm | |
CN117331680A (zh) | 一种多gpu模拟量子计算的方法及装置 | |
CN117311956A (zh) | 一种待模拟量子程序的gpu内存分配方法及装置 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |