CN115409195B - 一种基于qasm编程架构的量子程序可视化推演方法及装置 - Google Patents
一种基于qasm编程架构的量子程序可视化推演方法及装置 Download PDFInfo
- Publication number
- CN115409195B CN115409195B CN202211025236.1A CN202211025236A CN115409195B CN 115409195 B CN115409195 B CN 115409195B CN 202211025236 A CN202211025236 A CN 202211025236A CN 115409195 B CN115409195 B CN 115409195B
- Authority
- CN
- China
- Prior art keywords
- quantum
- matrix
- register
- module
- gate
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 32
- 230000000007 visual effect Effects 0.000 title claims abstract description 13
- 238000005259 measurement Methods 0.000 claims abstract description 71
- 238000013507 mapping Methods 0.000 claims abstract description 58
- 238000004088 simulation Methods 0.000 claims abstract description 30
- 238000004364 calculation method Methods 0.000 claims abstract description 17
- 230000002452 interceptive effect Effects 0.000 claims abstract description 17
- 238000004458 analytical method Methods 0.000 claims abstract description 15
- 238000010224 classification analysis Methods 0.000 claims abstract description 8
- 238000012216 screening Methods 0.000 claims abstract description 8
- 239000011159 matrix material Substances 0.000 claims description 95
- 239000002096 quantum dot Substances 0.000 claims description 35
- 239000013598 vector Substances 0.000 claims description 27
- 238000006243 chemical reaction Methods 0.000 claims description 18
- 230000003993 interaction Effects 0.000 claims description 9
- 238000012545 processing Methods 0.000 claims description 3
- 238000001914 filtration Methods 0.000 claims description 2
- 230000009466 transformation Effects 0.000 description 15
- 230000004888 barrier function Effects 0.000 description 14
- 238000013519 translation Methods 0.000 description 12
- 230000002441 reversible effect Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 9
- 238000004422 calculation algorithm Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 238000013461 design Methods 0.000 description 4
- 239000000284 extract Substances 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000036961 partial effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 238000002553 single reaction monitoring Methods 0.000 description 1
- 238000013426 sirius red morphometry Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N10/00—Quantum computing, i.e. information processing based on quantum-mechanical phenomena
- G06N10/80—Quantum programming, e.g. interfaces, languages or software-development kits for creating or handling programs capable of running on quantum computers; Platforms for simulating or accessing quantum computers, e.g. cloud-based quantum computing
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Condensed Matter Physics & Semiconductors (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供一种基于QASM编程架构的量子程序可视化推演方法及装置。该装置包括:QASM代码解析模块,用于对源量子程序进行分类分析,提取其中的寄存器信息和操作名称,以及将操作名称转译为适用于单量子比特的转译符;QGOQ模块,用于将转译符入队至对应的量子寄存器下的QGOQ中;寄存器映射模块,用于存储量子寄存器和对应的经典寄存器进行交互操作时的映射关系,以及筛选和提供映射关系;模拟运行模块,用于命令所有量子寄存器下的量子门操作队列进行出队以使位于同一深度的所有转译符对应的量子门操作同时模拟运行和演算;深度是指量子门操作在QGOQ中所处的顺序;测量模块,用于对需要进行测量的量子寄存器进行模拟测量操作。
Description
技术领域
本发明涉及量子计算技术领域,尤其涉及一种基于QASM编程架构的量子程序可视化推演方法及装置。
背景技术
目前的已有技术是以N量子比特在量子逻辑门序列操作下的状态演变以及在测量操作下得到的概率测量结果的量子计算模型为基础的技术。在该技术中,使用的模型是以量子物理作为基本原理的计算模型,所以存在以下问题:(1)量子程序在设计上过于复杂,构建量子程序的逻辑不同于经典逻辑,不具备直观的逻辑构造,程序和算法设计存在一定的偶然性。(2)量子程序在调试上存在局限性,由于量子比特状态一经测量即会坍缩,直接对量子程序进行调试无法得到完整的调试信息。基于上述情形,本发明面临下面三方面的问题:(1)目前缺少量子程序运行全过程中量子比特状态变化的自动化经典模拟预演方法;(2)缺少QASM量子程序运行过程的经典模拟调试方法以辅助QASM量子程序的编写和测试;(3)在当前量子计算领域,量子算法应用和编程架构各方面生态还不够成熟,亟需一些方法可以将量子算法和编程设计的结果性验证方法转化为过程性分析方法。
发明内容
为了至少能够部分地解决上述的问题,本发明提供一种基于QASM编程架构的量子程序可视化推演方法及装置。
一方面,本发明提供一种基于QASM编程架构的量子程序可视化推演装置,包括:QASM代码解析模块、QGOQ模块、寄存器映射模块、模拟运行模块和测量模块,QGOQ表示量子门操作队列,是指量子程序中对于同一量子比特进行的有先后操作顺序的多个量子门操作所组成的队列结构;
所述QASM代码解析模块,用于对源量子程序进行分类分析,提取其中的寄存器信息和操作名称,以及将操作名称转译为适用于单量子比特的转译符;
所述QGOQ模块,用于将转译符入队至对应的量子寄存器下的QGOQ中;
所述寄存器映射模块,用于存储量子寄存器和对应的经典寄存器进行交互操作时的映射关系,以及筛选和提供映射关系;
所述模拟运行模块,用于命令所有量子寄存器下的量子门操作队列进行出队以使位于同一深度的所有转译符对应的量子门操作同时模拟运行和演算;所述深度是指量子门操作在QGOQ中所处的顺序;
所述测量模块,用于对需要进行测量的量子寄存器进行模拟测量操作。
进一步地,所述QASM代码解析模块中,所述对源量子程序进行分类分析具体包括:
遍历源量子程序,寻找量子比特和经典比特的定义语句,通过定义语句获得量子寄存器或经典寄存器的标识符,根据标识符筛选出合法的若干块独立的代码段,并根据标识符确定每块代码段是属于仅涉及量子比特的逻辑门操作的代码段还是属于涉及量子比特和经典比特交互的门操作的代码段。
进一步地,若一个量子门操作名称同时对应多个转译符,则所述QGOQ模块应先将对应的多个量子寄存器下的QGOQ进行对齐操作,再将多个转译符入队至对应的各个量子寄存器下的QGOQ,以使多个转译符位于同一深度;
以及,对于有多步测量操作的序列,所述QGOQ模块在将转译符入队时应确保对应QGOQ的每一层深度上至多只有一个测量门。
进一步地,所述寄存器映射模块包括寄存器映射表和交互操作筛选器;
所述寄存器映射表,用于将量子寄存器信息、经典寄存器信息和操作备注组成一条映射关系进行存储;所述操作备注用于记录交互操作类型对应的转译符和寄存器操作数;
所述交互操作筛选器,用于将模拟运行模块传递来的转译符和操作备注进行匹配以筛选得到映射关系,并将映射关系提供给模拟运行模块。
进一步地,对于测量操作,筛选出映射关系后,只需要把量子比特作为键,找到对应的经典比特值,就可以将该映射关系提供给模拟运行模块;对于Qif或Qwhile操作,在筛选出映射关系后,仅需将当前的第一条映射关系和操作备注中具体操作数传给模拟运行模块。
进一步地,所述模拟运行模块包括转译符解释表TOT、量子逻辑门矩阵表QGMT、控制位载入器CQL、转化矩阵生成器TMG、量矢转化器QSVC和日志记录工具;
所述TOT,用于存储转译符所代表的任务操作类型,所述任务操作类型包括G、C、T和M四种类型;G表示将任务递交给QGMT,C表示将任务递交给CQL,T表示将任务递交给QGMT之后再转交给CQL,M表示将任务递交给测量模块;
所述QGMT,用于存储转译符、量子门和矩阵三者之间的映射关系;
所述CQL,用于加载转译符中的控制位,并使用控制位对转译符中的目标位对应的矩阵进行加工;
所述TMG,用于对输入的所有矩阵进行张量积计算,得到转化矩阵;
所述QSVC,用于使用转化矩阵对量子态矢进行转化操作;
所述日志记录工具,用于记录QGMT、CQL、TMG和QSVC中的所有操作内容。
进一步地,所述CQL具体用于:
当CQL接收到一个或多个来自同一个量子门的控制位转译符时,等待接收QGMT传来目标位转译符对应的矩阵U0,并收集所有控制位的索引号和目标位的索引号;
从所有的索引号中选出最小的索引号和最大的索引号,分别用Qmin和Qmax表示,以使得[Qmin,Qmax]中的所有比特都参与矩阵的控制位载入操作;
将控制位的索引号分别记为Qci,Qci+1,…,Qcn,目标位的索引号记为Qt,[Qmin,Qmax]中既不属于控制位也不属于目标位的索引号记作Qkj,Qkj+1,…,Qkm;
对于所有的控制位,均采用I矩阵作为对应的矩阵;对于目标位Qt采用U0作为对应的矩阵;从Qmin到Qmax,按索引号从小到大的顺序将各自对应的矩阵依次进行张量积计算,得到矩阵U1;
遍历矩阵U1的所有行号,行号均采用二进制数表示,每一位对应QciQci+1…Qt…Qcn,其中,QciQci+1…Qcn均为1的行号数必然有两个,分别记为a1和a2,将矩阵U1中(a1,a1),(a1,a2),(a2,a1),(a2,a2)这四个位置分别置换为U0中(1,1),(1,2),(2,1),(2,2)对应的矩阵数,得到矩阵U2;
对于任意一个Qki,将U2均分为多个大小为2Qki*2Qki的矩阵Aij,每个Aij均与单位矩阵I进行张量积计算,得到对应的Bij,然后将所有的Bij按拆分的顺序组合起来,即得到载入了控制位的矩阵U3。
进一步地,所述测量模块包括记录表、测量算子生成器MOG、概率计算器PC和日志记录工具;
所述记录表,用于记录模型运行模块传递来的量子寄存器信息;
所述MOG,用于检查记录表中的所有量子寄存器信息,根据量子寄存器的数量N生成2N个测量算子;
所述日志记录工具,用于记录PC得到的所有经典二进制结果的概率。
另一方面,本发明提供一种基于QASM编程架构的量子程序可视化推演方法,包括:
步骤1:将源量子程序分割为若干块独立的代码段;
步骤2:对当前块代码段进行分类分析以确定其属于仅涉及量子比特的逻辑门操作的代码段或者属于涉及量子比特和经典比特交互的门操作的代码段,若属于前者,则执行步骤3;若属于后者,则执行步骤4;
步骤3:提取当前块代码段涉及的量子寄存器信息和操作名称,并将操作名称转译为适用于单量子比特的转译符,然后将转译符入队至对应的量子寄存器下的量子门操作队列中;所述量子门操作队列是指量子程序中对于同一量子比特进行的有先后操作顺序的多个量子门操作所组成的队列结构;
步骤4:存储当前块代码段中相关的量子寄存器和对应的经典寄存器进行交互操作时的映射关系,并提取出其中的操作名称,将操作名称转译为适用于单量子比特的转译符,然后将转译符入队至对应的量子寄存器下的量子门操作队列中;
步骤5:重复执行步骤2至步骤4,直至处理完所有的代码段,得到所有量子寄存器下的量子门操作队列;
步骤6:令所有量子寄存器下的量子门操作队列进行一次出队以使位于同一深度的所有转译符对应的量子门操作同时模拟运行和演算,得到同一深度上的多个矩阵,将多个矩阵进行张量积运算得到转化矩阵,使用转化矩阵对当前的量子态矢进行转化,得到新的量子态矢;
步骤7:重复步骤6,直至出队的转译符对应的量子门操作为测量操作,则执行步骤8;
步骤8:根据需要进行测量的量子寄存器的数量N生成2N个测量算子,然后针对每个测量算子得到一个经典二进制结果的测量概率,最终得到2N个经典二进制结果的概率分布情况。
进一步地,在步骤6之前,还包括:将所有量子寄存器下的量子门操作队列进行对齐操作。
本发明的有益效果:
(1)适用于QASM指令集下各种量子程序的经典模拟演算场景,比如多量子比特在量子逻辑门序列下的状态演变,或者针对特定量子算法的独立量子逻辑门序列的过程演算。
(2)解决了量子程序调试方法的局限性。经典调试是量子程序设计中重要的一环也是复杂的一环,其矩阵运算模拟量子计算的特点,使经典计算能够有效处理量子程序运行中的数据存储和计算。本发明不仅适用于完整量子程序的经典调试,而且解决了任意量子初态在量子逻辑门操作序列下的正向和逆向经典调试问题。例如在量子傅里叶变换中,大多数量子寄存器在进行傅里叶变换前的状态是未知的,利用本发明能够使逆向调试得到QPU寄存器的相对相位和振幅信息更为高效,并自动构建应用QFT前后量子状态的依赖关系,达到和量子初态测量所得概率分布和经过QFT的量子状态测量所的概率分布的依赖关系保持一致,即达到正逆向调试的过程正确性。
(3)本发明适用于新兴的量子编程架构,尤其是在量子可逆线路编程方面,量子可逆电路技术拓展具有简洁性和灵活性,本发明能够符合量子可逆电路的设计理念,对完善量子可逆电路各方面生态具有促进作用,比如量子可逆电路的优化算法亟需完善,利用本发明可以将真值表、R-M、最小完备Hash函数等可逆电路算法面向线路编程时对寄存器进行准确高效的映射。
附图说明
图1为本发明实施例提供的基于QASM编程架构的量子程序可视化推演装置的结构示意图;
图2为本发明实施例提供的对齐操作示意图;
图3为本发明实施例提供的模拟运行模块的运作示意图;
图4为本发明实施例提供的测量模块的运作示意图;
图5为本发明实施例提供的1bit逻辑或运算的线路示意图;
图6为本发明实施例提供的2bit逻辑或运算的线路示意图;
图7为本发明实施例提供的基于QASM编程架构的量子程序可视化推演方法的流程示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供一种基于QASM编程架构的量子程序可视化推演装置,包括QASM代码解析模块、QGOQ模块、寄存器映射模块(Registers Map Module,RMM)、模拟运行模块(Simulation Running Module,SRM)和测量模块(Measure Module,MM);QGOQ(Quantum Gate Operation Queue)表示量子门操作队列,是指量子程序中对于同一量子比特进行的有先后操作顺序的多个量子门操作所组成的队列结构。
其中,QASM代码解析模块用于对源量子程序进行分类分析,提取其中的寄存器信息和操作名称,以及将操作名称转译为适用于单量子比特的转译符。QGOQ模块用于将转译符入队至对应的量子寄存器下的QGOQ中。寄存器映射模块用于存储量子寄存器和对应的经典寄存器进行交互操作时的映射关系,以及筛选和提供映射关系。模拟运行模块用于命令所有量子寄存器下的量子门操作队列进行出队以使位于同一深度的所有转译符对应的量子门操作同时模拟运行和演算;所述深度是指量子门操作在QGOQ中所处的顺序。测量模块用于对需要进行测量的量子寄存器进行模拟测量操作。
具体地,解析模块还可以获取量子比特或经典比特的初始定义数量,以及量子比特初态信息。
作为一种可实施方式,QASM代码解析模块对源量子程序进行分类分析具体包括:遍历源量子程序,寻找量子比特和经典比特的定义语句,通过定义语句获得量子寄存器或经典寄存器的标识符,根据标识符筛选出合法的若干块独立的代码段,并根据标识符确定每块代码段是属于仅涉及量子比特的逻辑门操作的代码段还是属于涉及量子比特和经典比特交互的门操作的代码段。
具体地,仅涉及量子比特的逻辑门操作如Hadamard、RX、CU、Toffoli等基本逻辑门,以及Reset、Barrier等特殊的量子门操作。涉及量子比特和经典比特交互的门操作,如测量操作、Qif操作、Qwhile操作。需要说明的是,对于带控制位的多比特门操作,解析模块会将其拆分转译为具体的控制位和目标位。
解析模块将仅涉及量子比特的逻辑门操作转译为转译符的示例如表1所示,将涉及量子比特和经典比特交互的门操作转译为转译符的示例如表2所示。
表1量子逻辑门解析转译示例表
操作代码段 | 量子寄存器 | 量子逻辑门 | 转译符 |
h q[0] | q0 | H | h |
rx(pi/2)q[1] | q1 | RX | rx(pi/2) |
cx q[0],q[1] | q0,q1 | CX | cxC,cxT |
swap q[0],q[1] | q0,q1 | SWAP | swap,swap |
rxx(pi/2)q[0],q[1] | q0,q1 | RXX | rxx(pi/2),rxx(pi/2) |
ccx q[0],q[1],q[2] | q0,q1,q2 | Toffoli | ccxC,ccxC,ccxT |
rc3x q[0],q[1],q[2],q[3] | q0,q1,q2,q3 | RCCCX | rc3xC,rc3xC,rc3xC,rc3xT |
表2量子比特与经典比特交互操作解析转译示例表
操作代码段 | 寄存器映射 | 操作门 | 转译符 |
measure q[1]->c[1] | q1,c1 | Measure | m |
if(c==2)h q[0] | q0,c0,c1 | Qif,H | hIf |
从表1所示可知,若一个量子门操作是多量子比特门,在将该量子门操作名称进行转译时,会同时转译生成多个转译符,由于该多个转译符均对应同一个量子门操作,因此在将该多个转译符入队至QGOQ中时,应确保它们位于同一深度。为此,若一个量子门操作名称同时对应多个转译符,则在所述QGOQ模块中,先将对应的多个量子寄存器下的QGOQ进行对齐操作,再将多个转译符入队至对应的各个量子寄存器下的QGOQ,以使多个转译符位于同一深度。
具体地,N量子比特构成的线路会有N条并行的QGOQ。所谓对齐操作是指在较短的QGOQ之后填充I门或Barrier门,填充至最长的QGOQ的长度,以对所有相关的QGOQ的长度实现统一,这样就能保证多量子比特操作的所有转译符入队后仍处于同一深度,如图2所示。
此外,对于有多步测量操作的序列,为实现每一步测量的细化分析,需要保证QGOQ的每一层深度上至多只有一个测量门。在本方法中,规定当QGOQ中的某一条量子比特操作序列入队一个测量操作时,将同一深度下的下一条操作序列直至最高位的比特操作序列进行对齐操作,并再填充一次I门,这样就能保证后续可能的多次测量操作不会与该测量操作处于同一深度。
表3为某一具体量子程序对应的部分深度的量子门操作队列。
表3量子门操作队列
线路深度 | q0 | q1 | q2 | q3 | q4 |
1 | h | h | h | h | x |
2 | cxC | cxT | i | i | i |
3 | i | cxC | cxT | i | i |
4 | i | i | cxC | cxT | i |
5 | c3xT | c3xC | c3xC | c3xC | i |
6 | i | i | swap | swap | i |
... | ... | ... | ... | ... | ... |
作为一种可实施方式,所述寄存器映射模块包括寄存器映射表和交互操作筛选器;寄存器映射表(Registers Map Table,RMT)用于将量子寄存器信息、经典寄存器信息和操作备注组成一条映射关系进行存储;所述操作备注用于记录交互操作类型对应的转译符和寄存器操作数。交互操作筛选器(Interactive Action Filters,IAF)用于将模拟运行模块传递来的转译符和操作备注进行匹配以筛选得到映射关系,并将映射关系提供给模拟运行模块。
具体地,量子寄存器和对应的经典寄存器之间的交互操作可能是测量操作,也可能是Qif或Qwhile操作。一般地,如果是测量操作,量子寄存器和经典寄存器之间的映射关系应为1对1;而如果是Qif或Qwhile操作,量子寄存器和经典寄存器之间的映射关系可以为1对n。操作备注的作用在于使IAF能够快速筛选出需要的映射关系。如果是测量操作,可以在操作备注中仅用“m”来作为转译符,但对于Qif或Qwhile操作,除了需要在操作备注中指明转译符,还需要在转译符的基础上声明具体的经典寄存器操作数,如“if c=101”,表示需要声明经典寄存器c2、c1、c0中的操作数分别为1、0、1。寄存器映射表的示例如表4所示。
表4寄存器映射表
量子比特 | 经典比特 | 操作备注 |
q0 | c0 | m |
q1 | c1 | m |
q2 | c2 | m |
q0 | c0,c1,c2 | if 101 |
q1 | c0,c1 | if 00 |
... | ... | ... |
当模拟运行模块从QGOQ提取出交互操作时,会将具体的操作转译符传给RMM,这时就需要IAF根据转译符和RMT的操作备注筛选出一部分映射关系。对于测量操作,筛选出映射关系后,只需要把量子比特作为键,找到对应的经典比特值,就可以将该映射关系提供给模拟运行模块;对于Qif或Qwhile操作,在筛选出映射关系后,仅需将当前的第一条映射关系和操作备注中声明的具体操作数传给模拟运行模块即可。
作为一种可实施方式,所述模拟运行模块(SRM)包括转译符解释表(Translational OperatorTable,TOT)、量子逻辑门矩阵表(Quantum Gate Matrix Table,QGMT)、控制位载入器(Control Qubit Loader,CQL)、转化矩阵生成器(TransformationMatrix Generator,TMG)、量矢转化器(Quantum State VectorConverter,QSVC)和日志记录工具;
其中,TOT用于存储转译符所代表的任务操作类型,所述任务操作类型包括G、C、T和M四种类型;G表示将任务递交给QGMT,C表示将任务递交给CQL,T表示将任务递交给QGMT之后再转交给CQL,M表示将任务递交给测量模块;部分转义符解释表内容如表5所示。QGMT用于存储转译符、量子门和矩阵三者之间的映射关系,QGMT中包含转译符与量子逻辑门的映射关系,因此这类转译符必须要代表一类特定的逻辑门,部分量子逻辑门矩阵表内容如表6所示。CQL用于加载转译符中的控制位,并使用控制位对转译符中的目标位对应的矩阵进行加工。TMG用于对输入的所有矩阵进行张量积计算,得到转化矩阵。QSVC用于使用转化矩阵对量子态矢进行转化操作。日志记录工具用于记录QGMT、CQL、TMG和QSVC中的所有操作内容。
具体地,SRM是整个量子程序可视化推演的核心模块,其具体运作方式如图3所示。SRM开始运作前,会接收到解析模块传来的量子比特和经典比特数量信息,如果解析模块额外得到了量子比特的初态信息,也会附带传给SRM。SRM会根据获得的信息,初始化一个长度为2N(N指量子比特数量)的量子态矢(Quantum State Vector,QSV),并根据初态信息,对QSV进行赋值,得到初态矢量|ψ0>。如果没有得到初态信息,则QSV中的所有矢量数都默认为0。SRM初始化矢量后,会命令所有量子寄存器下的QGOQ进行一次出队,获取队首的N个转译符,而这些转译符,对应的就是量子程序中同一深度上的量子门。
CQL是一个可选功能,如果转译符中包含控制位和目标位信息,SRM会将控制位传给CQL,目标位传给QGMT,QMGT将得到的矩阵信息再传给CQL,接着CQL负责对矩阵进行控制位的加工,其操作原理可表示为CU=F(U)。在得到同一深度上的多个矩阵之后,还需要经过TMG将所有矩阵进行张量积计算,得到一个2N*2N的转化矩阵U。最后,QSVC会将转化矩阵U对QSV进行转化操作,即|ψi>=U|ψ0>。接着,SRM会继续从QGOQ中取出转译符,循环操作,QSV在每次循环操作中进行转化。第一日志记录工具则负责记录QGMT、CQL、TMG和QSVC的所有具体操作内容,其生成的日志就是用户需要的运行调试信息的一部分。
表5转义符解释表
转译符 | 类型解释 |
h | G |
m | G M |
cxC | C |
cxT | G T |
rx(pi/2) | G |
... | ... |
表6量子逻辑门矩阵表
进一步地,对SRM中的CQL实现细节进行详细阐述:当CQL接收到一个或多个来自同个量子逻辑门的控制位转译符时,会等待QGMT传来目标位转译符对应的矩阵U0,CQL在收集到所有控制位的比特索引号和目标位索引号及矩阵之后开始运作。首先,CQL会在所有的索引号中选出最小的索引号和最大的索引号,分别用Qmin和Qmax表示。如此一来,[Qmin,Qmax]中的所有比特都会参与矩阵的控制位载入操作,记控制位索引号分别为Qci,Qci+1,…,Qcn,目标位索引号为Qt,而[Qmin,Qmax]中即不属于控制位也不属于目标位的记作Qkj,Qkj+1,…,Qkm。接下来,进行矩阵的初始化操作,记Qc和Qk的总数为M,将M个单位矩阵I依次进行张量积计算,得到矩阵U1。然后,对矩阵进行目标位载入操作,遍历矩阵的所有行号,行号均采用二进制数表示,每一位对应QciQci+1…Qt…Qcn,其中,QciQci+1…Qcn均为1的行号数必然有两个,分别记为a1和a2,将矩阵U1中(a1,a1),(a1,a2),(a2,a1),(a2,a2)这四个位置分别置换为U0中(1,1),(1,2),(2,1),(2,2)对应的的矩阵数,得到矩阵U2。最后,还需要将Qk填充进矩阵,对于其中的一个Qki,将U2均分为多个大小为2Qki*2Qki的矩阵Aij,每个Aij均与单位矩阵I进行张量积计算,得到Bij,接着将所有的Bij按拆分的顺序组合起来,即可得到载入了控制位的矩阵U3。
下面举一个例子来演示CQL的运作原理,当SRM某次获得的转译符如下时:
ccxC | ccxT | i | ccxC |
首先,得到两端的索引位分别为0和3,则[0,3]之间的所有比特都需要参与控制位载入运算。
目标位ccxT从QGMT得到的矩阵U0为X,即
第二步,控制位和目标位的总数为3,将3个单位矩阵I依次相乘,即
第三步,将U1的(0b101,0b101),(0b101,0b111),(0b111,0b101),(0b111,0b111)分别置换为U0的四个对角数,得到U2:
最后,对U2进行无关位Qk的填充,在该例子中,将U2均匀拆分为多个4*4大小的矩阵,每个矩阵与I计算张量积,最后按拆分的顺序组装得到最终结果U3,如下:
此时,U3就是已经载入控制位的逻辑门矩阵了,CQL的工作完成,下一步会将U3传给TMG进行转化矩阵的生成。
作为一种可实施方式,所述测量模块包括记录表、测量算子生成器MOG、概率计算器PC和日志记录工具;
其中,记录表用于记录模型运行模块传递来的量子寄存器信息。MOG用于检查记录表中的所有量子寄存器信息,根据量子寄存器的数量N生成2N个测量算子。PC用于遍历所有测量算子,针对每个测量算子利用 得到一个经典二进制结果的测量概率,最终得到2N个经典二进制结果的概率分布信息。日志记录工具用于记录PC得到的所有经典二进制结果的概率,对应的记录日志也是用户需要的运行调试信息的一部分。
具体地,SRM经TOT得到转译符代表的信息是测量操作时,会将QSV和转译符所在的量子寄存器一同传给测量模块,测量模块负责对QSV中指定测量的量子寄存器进行模拟测量操作,其具体运作方式可参考图4。记录表初始为空,每当有SRM传来的量子寄存器信息时,就将该寄存器信息存入记录表中。
本发明实施例提供的基于QASM编程架构的量子程序可视化推演装置,具有以下优势:
(1)解析模块能对QASM程序进行代码段分割,并识别出其中的定义代码段、量子操作代码段,利用定义代码段提取出的信息进一步对量子操作代码段进行信息提取。
(2)提出QGOQ结构,目的是模拟量子线路的实际布局,而QGOQ的对齐处理模拟的是量子线路设计时的左对齐规则。
(3)提出将多量子比特操作转化为多个单量子比特转译符,模拟运行时再通过基本酉矩阵和特定的算法将多个单量子比特转译符融合成适用于经典计算机的转化矩阵,从根本上避免了因多量子比特操作而造成的种类复杂性,减少了QGMT的复杂度。
(4)提出了寄存器映射模块RMM,确保了量子寄存器和经典寄存器在量子操作中的位置独立性,提升了量子程序调用寄存器的高度调试性。
(5)测量模块中采用了记录表的设定,目的是使测量操作单步细化,按照实际测量顺序得到累加的测量概率分布,相比直接计算所有测量比特的概率分布,单步测量的优势在于能够从多个比特中筛选出处于纠缠态的量子比特。
实施例2
应用上述的基于QASM编程架构的量子程序可视化推演装置,本发明实施例还提供一种基于QASM编程架构的量子程序可视化推演方法,包括以下步骤:
S201:将源量子程序分割为若干块独立的代码段;
S202:对当前块代码段进行分类分析以确定其属于仅涉及量子比特的逻辑门操作的代码段或者属于涉及量子比特和经典比特交互的门操作的代码段,若属于前者,则执行步骤S203;若属于后者,则执行步骤S204;
S203:提取当前块代码段涉及的量子寄存器信息和操作名称,并将操作名称转译为适用于单量子比特的转译符,然后将转译符入队至对应的量子寄存器下的量子门操作队列中;所述量子门操作队列是指量子程序中对于同一量子比特进行的有先后操作顺序的多个量子门操作所组成的队列结构;
S204:存储当前块代码段中相关的量子寄存器和对应的经典寄存器进行交互操作时的映射关系,并提取出其中的操作名称,将操作名称转译为适用于单量子比特的转译符,然后将转译符入队至对应的量子寄存器下的量子门操作队列中;
S205:重复执行步骤S202至步骤S204,直至处理完所有的代码段,得到所有量子寄存器下的量子门操作队列;
S206:令所有量子寄存器下的量子门操作队列进行一次出队以使位于同一深度的所有转译符对应的量子门操作同时模拟运行和演算,得到同一深度上的多个矩阵,将多个矩阵进行张量积运算得到转化矩阵,使用转化矩阵对当前的量子态矢进行转化,得到新的量子态矢;
需要说明的是,为了保证模拟运行模块在所有深度都能得到同样大小的转化矩阵,在解析模块将所有的转译符传给QGOQ模块并全部入队之后,还需要再进行一次针对所有QGOQ的对齐操作,目的是避免模拟运行模块因遇到空操作而无法得到完整的转化矩阵。因此,当解析模块完成所有代码段的解析工作之后,所有QGOQ的长度应该是一致的,从而可以保证模拟运行模块在所有深度都能得到同样大小的转化矩阵。
S207:重复步骤S206,直至出队的转译符对应的量子门操作为测量操作,则执行步骤S208;
S208:根据需要进行测量的量子寄存器的数量N生成2N个测量算子,然后针对每个测量算子根据得到一个经典二进制结果的测量概率,最终得到2N个经典二进制结果的概率分布情况。其中,kNkN-1…k1k0表示2N种测量算子,每一位分别取值0或1,表示矩阵的共轭转置,ψ表示当前状态,M表示测量算子。
实施例3
在上述实施例2的基础上,本发明实施例以量子可逆电路技术中的2bit逻辑或运算的测试作为例,其对应的量子程序的可视化推演方法具体包括:
量子逻辑或运算的线路构造利用了Toffoli门的性质,把或运算表述为仅当两个比特的值均为0时,或运算的结果为0,其余情况为1,因此,可以通过在Toffoli门的控制位两边添加X门,并在目标位之后添加一个X门,这样就能实现或运算。如图5所示,这是一个1bit逻辑或运算的示例线路图。其中,q0和q1表示或运算的两个输入操作数,在图5的示例中,q0初始值为1,q1初始值为0;q2表示输出操作数,其初始状态必须为0;两排Barrier之间的线路则是量子或运算的线路表示;或运算结果是q2的值,因此测量操作只针对q2,映射至c0。
在本实施例中,仅讨论2bit量子逻辑或运算。图6所示是一个2bit逻辑或运算的示例线路图,其构造方法由图5所示线路图扩展得来。其中q1q0作为输入操作数A,q3q2作为输入操作数B,q5q4作为输出操作数C,即A or B=C,A的初始值为10,B的初始值为00,预测C的输出值应为10。
对应的QASM量子程序为:
按照实施例2给出的方法流程,QASM量子程序首先经过解析模块提取相关信息,解析转译表如表7所示:
表7 2bit或逻辑运算量子程序解析转译表
解析模块将整个程序解析转译之后,会将相关的信息传给QGOQ、RMM和SRM。其中,QGOQ接收到的是操作转译符,经过最终对齐操作的完整QGOQ如表8所示;RMM接收到的是两处测量操作的量子寄存器与经典寄存器的映射关系,生成的RMT如表9所示;SRM得到的信息是量子寄存器数量,即6个量子比特,以此构造26长度的QSV。
表8 2bit或逻辑运算量子程序QGOQ
线路深度 | q0 | q1 | q2 | q3 | q4 | q5 |
1 | x | i | i | i | reset | reset |
2 | barrier | barrier | barrier | barrier | barrier | barrier |
3 | x | x | x | x | i | i |
4 | ccxC | i | ccxC | i | ccxT | i |
5 | x | ccxC | i | ccxC | i | ccxT |
6 | i | x | x | x | x | x |
7 | barrier | barrier | barrier | barrier | barrier | barrier |
8 | i | i | i | i | m | i |
9 | i | i | i | i | i | m |
表9 2bit或逻辑运算量子程序RMT
量子比特 | 经典比特 | 操作备注 |
q4 | c0 | m |
q5 | c1 | m |
接下来QGOQ对量子操作进行出队,传给SRM,生成转化矩阵,QSV在多次转化矩阵的作用下不断进行演变。当SRM提取到测量操作转译符时,则会将测量工作转交给测量模块MM,测量模块根据记录表的量子比特数量生成多个测量算子,计算得到概率分布。SRM和MM的日志记录如下(由日志记录工具生成):
初始状态:|ψ>=|000000>
初始矢量:|ψ>=[[1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]]T
---------------------------------------------------------------------
第1步:q[5]清零,q[4]清零,q[0]:X
*q[0]通过的逻辑门为:
[[0 1]
[1 0]]
<!>存在清零操作,不显示转化矩阵。
当前矢量为:
[[0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]]T
当前状态为:
|ψ>=|000001>
******************************
状态分布列表如下:
000001 1 1
******************************
---------------------------------------------------------------------
第2步:q[5]闲置,q[4]闲置,q[3]闲置,q[2]闲置,q[1]闲置,q[0]闲置
转化矩阵为:
[[1 0 0...0 0 0]
[0 1 0...0 0 0]
[0 0 1...0 0 0]
...
[0 0 0...1 0 0]
[0 0 0...0 1 0]
[0 0 0...0 0 1]]
当前矢量为:
[[0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]]T
当前状态为:
|ψ>=|000001>
******************************
状态分布列表如下:
000001 1 1
******************************
---------------------------------------------------------
第3步:q[3]:X,q[2]:X,q[1]:X,q[0]:X
*q[3]通过的逻辑门为:
[[0 1]
[1 0]]
*q[2]通过的逻辑门为:
[[0 1]
[1 0]]
*q[1]通过的逻辑门为:
[[0 1]
[1 0]]
*q[0]通过的逻辑门为:
[[0 1]
[1 0]]
转化矩阵为:
[[0 0 0...0 0 0]
[0 0 0...0 0 0]
[0 0 0...0 0 0]
...
[0 0 0...0 0 0]
[0 0 0...0 0 0]
[0 0 0...0 0 0]]
当前矢量为:
[[0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]]T
当前状态为:
|ψ>=|001110>
******************************
状态分布列表如下:
001110 14 1
******************************
------------------------------------------------------------------
第4步:q[4]:Toff目标位,q[2]:Toff控制位,q[0]:Toff控制位
*q[4],q[2],q[0]通过的逻辑门为:
[[1 0 0 0 0 0 0 0]
[0 1 0 0 0 0 0 0]
[0 0 1 0 0 0 0 0]
[0 0 0 0 0 0 0 1]
[0 0 0 0 1 0 0 0]
[0 0 0 0 0 1 0 0]
[0 0 0 0 0 0 1 0]
[0 0 0 1 0 0 0 0]]
转化矩阵为:
[[1 0 0...0 0 0]
[0 1 0...0 0 0]
[0 0 1...0 0 0]
[0 0 0...0 0 0]
[0 0 0...0 1 0]
[0 0 0...0 0 0]]
当前矢量为:
[[0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]]T
当前状态为:
|ψ>=|001110>
******************************
状态分布列表如下:
001110 14 1
******************************
----------------------------------------------------------------
第5步:q[5]:Toff目标位,q[3]:Toff控制位,q[1]:Toff控制位,q[0]:X
*q[5],q[3],q[1]通过的逻辑门为:
[[1 0 0 0 0 0 0 0]
[0 1 0 0 0 0 0 0]
[0 0 1 0 0 0 0 0]
[0 0 0 0 0 0 0 1]
[0 0 0 0 1 0 0 0]
[0 0 0 0 0 1 0 0]
[0 0 0 0 0 0 1 0]
[0 0 0 1 0 0 0 0]]
*q[0]通过的逻辑门为:
[[0 1]
[1 0]]
转化矩阵为:
[[0 1 0...0 0 0]
[1 0 0...0 0 0]
[0 0 0...0 0 0]
...
[0 0 0...0 0 0]
[0 0 0...0 0 0]
[0 0 0...0 0 0]]
当前矢量为:
[[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]]T
当前状态为:
|ψ>=|001111>
******************************
状态分布列表如下:
001111 15 1
******************************
---------------------------------------------------------------------
第6步:q[5]:X,q[4]:X,q[3]:X,q[2]:X,q[1]:X
*q[5]通过的逻辑门为:
[[0 1]
[1 0]]
*q[4]通过的逻辑门为:
[[0 1]
[1 0]]
*q[3]通过的逻辑门为:
[[0 1]
[1 0]]
*q[2]通过的逻辑门为:
[[0 1]
[1 0]]
*q[1]通过的逻辑门为:
[[0 1]
[1 0]]
转化矩阵为:
[[0 0 0...0 1 0]
[0 0 0...0 0 1]
[0 0 0...0 0 0]
...
[0 0 0...0 0 0]
[1 0 0...0 0 0]
[0 1 0...0 0 0]]
当前矢量为:
[[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0]]T
当前状态为:
|ψ>=|110001>
******************************
状态分布列表如下:
110001 49 1
******************************
-------------------------------------------------------------
第7步:q[5]闲置,q[4]闲置,q[3]闲置,q[2]闲置,q[1]闲置,q[0]闲置
转化矩阵为:
[[1 0 0...0 0 0]
[0 1 0...0 0 0]
[0 0 1...0 0 0]
...
[0 0 0...1 0 0]
[0 0 0...0 1 0]
[0 0 0...0 0 1]]
当前矢量为:
[[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0]]T
当前状态为:
|ψ>=|110001>
******************************
状态分布列表如下:
110001 49 1
******************************
---------------------------------------------------------------------
第8步:测量q[4]
转化矩阵为:
[[1 0 0...0 0 0]
[0 1 0...0 0 0]
[0 0 1...0 0 0]
...
[0 0 0...1 0 0]
[0 0 0...0 1 0]
[0 0 0...0 0 1]]
当前矢量为:
[[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0]]T
当前状态为:
|ψ>=|110001>
******************************
状态分布列表如下:
110001 49 1
******************************
预期测量结果为:
测量得到0的概率为1
测量得到1的概率为0
----------------------------------------------------------------
第9步:测量q[5]
转化矩阵为:
[[1 0 0...0 0 0]
[0 1 0...0 0 0]
[0 0 1...0 0 0]
...
[0 0 0...1 0 0]
[0 0 0...0 1 0]
[0 0 0...0 0 1]]
当前矢量为:
[[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0]]T
当前状态为:
|ψ>=|110001>
******************************
状态分布列表如下:
110001 49 1
******************************
预期测量结果为:
测量得到00的概率为0
测量得到01的概率为0
测量得到10的概率为1
测量得到11的概率为0
日志最终得到的测量概率分布中指明测量得到10的概率是1,符合预期结果。
需要说明的是,本发明方法支持任意量子程序(并不限于上述实施例2)面向QASM编程架构的运行过程模拟演算,利用本发明方法也可以实现量子编程代码片段面向QASM编程架的正逆向调试。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (9)
1.一种基于QASM编程架构的量子程序可视化推演装置,其特征在于,包括:QASM代码解析模块、QGOQ模块、寄存器映射模块、模拟运行模块和测量模块,QGOQ表示量子门操作队列,是指量子程序中对于同一量子比特进行的有先后操作顺序的多个量子门操作所组成的队列结构;
所述QASM代码解析模块,用于对源量子程序进行分类分析,提取其中的寄存器信息和操作名称,以及将操作名称转译为适用于单量子比特的转译符;
所述QGOQ模块,用于将转译符入队至对应的量子寄存器下的QGOQ中;
所述寄存器映射模块,用于存储量子寄存器和对应的经典寄存器进行交互操作时的映射关系,以及筛选和提供映射关系;
所述模拟运行模块,用于命令所有量子寄存器下的量子门操作队列进行出队以使位于同一深度的所有转译符对应的量子门操作同时模拟运行和演算;所述深度是指量子门操作在QGOQ中所处的顺序;所述模拟运行模块包括转译符解释表TOT、量子逻辑门矩阵表QGMT、控制位载入器CQL、转化矩阵生成器TMG、量矢转化器QSVC和第一日志记录工具;
所述TOT,用于存储转译符所代表的任务操作类型,所述任务操作类型包括G、C、T和M四种类型;G表示将任务递交给QGMT,C表示将任务递交给CQL,T表示将任务递交给QGMT之后再转交给CQL,M表示将任务递交给测量模块;
所述QGMT,用于存储转译符、量子门和矩阵三者之间的映射关系;
所述CQL,用于加载转译符中的控制位,并使用控制位对转译符中的目标位对应的矩阵进行加工;
所述TMG,用于对输入的所有矩阵进行张量积计算,得到转化矩阵;
所述QSVC,用于使用转化矩阵对量子态矢进行转化操作;
所述第一日志记录工具,用于记录QGMT、CQL、TMG和QSVC中的所有操作内容;
所述测量模块,用于对需要进行测量的量子寄存器进行模拟测量操作。
2.根据权利要求1所述的一种基于QASM编程架构的量子程序可视化推演装置,其特征在于,所述QASM代码解析模块中,所述对源量子程序进行分类分析具体包括:
遍历源量子程序,寻找量子比特和经典比特的定义语句,通过定义语句获得量子寄存器或经典寄存器的标识符,根据标识符筛选出合法的若干块独立的代码段,并根据标识符确定每块代码段是属于仅涉及量子比特的逻辑门操作的代码段还是属于涉及量子比特和经典比特交互的门操作的代码段。
3.根据权利要求1所述的一种基于QASM编程架构的量子程序可视化推演装置,其特征在于,若一个量子门操作名称同时对应多个转译符,则所述QGOQ模块应先将对应的多个量子寄存器下的QGOQ进行对齐操作,再将多个转译符入队至对应的各个量子寄存器下的QGOQ,以使多个转译符位于同一深度;
以及,对于有多步测量操作的序列,所述QGOQ模块在将转译符入队时应确保对应QGOQ的每一层深度上至多只有一个测量门。
4.根据权利要求1所述的一种基于QASM编程架构的量子程序可视化推演装置,其特征在于,所述寄存器映射模块包括寄存器映射表和交互操作筛选器;
所述寄存器映射表,用于将量子寄存器信息、经典寄存器信息和操作备注组成一条映射关系进行存储;所述操作备注用于记录交互操作类型对应的转译符和寄存器操作数;
所述交互操作筛选器,用于将模拟运行模块传递来的转译符和操作备注进行匹配以筛选得到映射关系,并将映射关系提供给模拟运行模块。
5.根据权利要求4所述的一种基于QASM编程架构的量子程序可视化推演装置,其特征在于,对于测量操作,筛选出映射关系后,把量子比特作为键,找到对应的经典比特值,将该映射关系提供给模拟运行模块;对于Qif或Qwhile操作,在筛选出映射关系后,将当前的第一条映射关系和操作备注中具体操作数传给模拟运行模块。
6.根据权利要求1所述的一种基于QASM编程架构的量子程序可视化推演装置,其特征在于,所述CQL具体用于:
当CQL接收到一个或多个来自同一个量子门的控制位转译符时,等待接收QGMT传来目标位转译符对应的矩阵U0,并收集所有控制位的索引号和目标位的索引号;
从所有的索引号中选出最小的索引号和最大的索引号,分别用Qmin和Qmax表示,以使得[Qmin, Qmax]中的所有比特都参与矩阵的控制位载入操作;
将控制位的索引号分别记为Qci,Qci+1,…,Qcn,目标位的索引号记为Qt,[Qmin, Qmax]中既不属于控制位也不属于目标位的索引号记作Qkj,Qkj+1,…,Qkm;
对于所有的控制位,均采用I矩阵作为对应的矩阵;对于目标位Qt采用U0作为对应的矩阵;从Qmin到Qmax,按索引号从小到大的顺序将各自对应的矩阵依次进行张量积计算,得到矩阵U1;
遍历矩阵U1的所有行号,行号均采用二进制数表示,每一位对应QciQci+1…Qt…Qcn,其中,QciQci+1…Qcn均为1的行号数必然有两个,分别记为a1和a2,将矩阵U1中(a1, a1), (a1,a2), (a2, a1), (a2, a2)这四个位置上的矩阵数分别置换为U0中(1, 1), (1, 2), (2,1), (2, 2)这4个位置上对应的矩阵数,得到矩阵U2;
7.根据权利要求1所述的一种基于QASM编程架构的量子程序可视化推演装置,其特征在于,所述测量模块包括记录表、测量算子生成器MOG、概率计算器PC和第二日志记录工具;
所述记录表,用于记录模型运行模块传递来的量子寄存器信息;
所述MOG,用于检查记录表中的所有量子寄存器信息,根据量子寄存器的数量N生成2N个测量算子;
所述PC,用于遍历所有测量算子,针对每个测量算子利用P(kNkN-1…k1k0)=<ψ|M†M|ψ>得到一个经典二进制结果的测量概率,最终得到2N个经典二进制结果的概率分布信息;
所述第二日志记录工具,用于记录PC得到的所有经典二进制结果的概率。
8.一种基于QASM编程架构的量子程序可视化推演方法,其特征在于,包括:
步骤1:将源量子程序分割为若干块独立的代码段;
步骤2:对当前块代码段进行分类分析以确定其属于仅涉及量子比特的逻辑门操作的代码段或者属于涉及量子比特和经典比特交互的门操作的代码段,若属于前者,则执行步骤3;若属于后者,则执行步骤4;
步骤3:提取当前块代码段涉及的量子寄存器信息和操作名称,并将操作名称转译为适用于单量子比特的转译符,然后将转译符入队至对应的量子寄存器下的量子门操作队列中;所述量子门操作队列是指量子程序中对于同一量子比特进行的有先后操作顺序的多个量子门操作所组成的队列结构;
步骤4:存储当前块代码段中相关的量子寄存器和对应的经典寄存器进行交互操作时的映射关系,并提取出其中的操作名称,将操作名称转译为适用于单量子比特的转译符,然后将转译符入队至对应的量子寄存器下的量子门操作队列中;
步骤5:重复执行步骤2至步骤4,直至处理完所有的代码段,得到所有量子寄存器下的量子门操作队列;
步骤6:令所有量子寄存器下的量子门操作队列进行一次出队以使位于同一深度的所有转译符对应的量子门操作同时模拟运行和演算,得到同一深度上的多个矩阵,将多个矩阵进行张量积运算得到转化矩阵,使用转化矩阵对当前的量子态矢进行转化,得到新的量子态矢;
步骤7:重复步骤6,直至出队的转译符对应的量子门操作为测量操作,则执行步骤8;
步骤8:根据需要进行测量的量子寄存器的数量N生成2N个测量算子,然后针对每个测量算子得到一个经典二进制结果的测量概率,最终得到2N个经典二进制结果的概率分布情况。
9.根据权利要求8所述的一种基于QASM编程架构的量子程序可视化推演方法,其特征在于,在步骤6之前,还包括:将所有量子寄存器下的量子门操作队列进行对齐操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211025236.1A CN115409195B (zh) | 2022-08-25 | 2022-08-25 | 一种基于qasm编程架构的量子程序可视化推演方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211025236.1A CN115409195B (zh) | 2022-08-25 | 2022-08-25 | 一种基于qasm编程架构的量子程序可视化推演方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115409195A CN115409195A (zh) | 2022-11-29 |
CN115409195B true CN115409195B (zh) | 2023-04-25 |
Family
ID=84161229
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211025236.1A Active CN115409195B (zh) | 2022-08-25 | 2022-08-25 | 一种基于qasm编程架构的量子程序可视化推演方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115409195B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116050529B (zh) * | 2022-11-30 | 2024-09-20 | 北京百度网讯科技有限公司 | 量子电路图纠错方法、装置、设备、存储介质及程序产品 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109961150A (zh) * | 2019-03-27 | 2019-07-02 | 中国科学技术大学 | 一种应对退相干的量子程序变换方法及系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019113600A1 (en) * | 2017-12-08 | 2019-06-13 | Microsoft Technology Licensing, Llc | Debugging quantum programs |
US11586966B2 (en) * | 2018-09-27 | 2023-02-21 | International Business Machines Corporation | Development and analysis of quantum computing programs |
CN112232512B (zh) * | 2020-09-08 | 2023-09-29 | 中国人民解放军战略支援部队信息工程大学 | 量子计算模拟平台及线性方程组量子求解模拟方法、系统 |
CN112527283A (zh) * | 2020-12-18 | 2021-03-19 | 四川大学 | 一种量子计算模拟工具集 |
-
2022
- 2022-08-25 CN CN202211025236.1A patent/CN115409195B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109961150A (zh) * | 2019-03-27 | 2019-07-02 | 中国科学技术大学 | 一种应对退相干的量子程序变换方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN115409195A (zh) | 2022-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110826719B (zh) | 一种量子程序的处理方法、装置、存储介质和电子装置 | |
Zandieh et al. | Kdeformer: Accelerating transformers via kernel density estimation | |
CN110188885A (zh) | 一种量子计算模拟方法、装置、存储介质和电子装置 | |
US20210350214A1 (en) | Convolutional neural network computing method and system based on weight kneading | |
CN110110851A (zh) | 一种lstm神经网络的fpga加速器及其加速方法 | |
CN107977541B (zh) | 一种优化量子线路仿真的方法 | |
JP7035827B2 (ja) | 学習識別装置および学習識別方法 | |
CN113850389B (zh) | 一种量子线路的构建方法及装置 | |
Rizzi et al. | Simulation of time evolution with multiscale entanglement renormalization ansatz | |
CN115409195B (zh) | 一种基于qasm编程架构的量子程序可视化推演方法及装置 | |
CN110889507A (zh) | 一种量子程序转有向无环图的方法、装置、存储介质及电子装置 | |
JP7199683B2 (ja) | ニューラル機械翻訳モデルの訓練方法及び装置並びにそのためのコンピュータプログラム | |
Drozd et al. | A resource approach to on-line testing of computing circuits | |
CN107967132A (zh) | 一种用于神经网络处理器的加法器和乘法器 | |
CN114764620B (zh) | 一种量子卷积操作器 | |
Feng et al. | Incremental few-shot object detection via knowledge transfer | |
CN116150757A (zh) | 一种基于cnn-lstm多分类模型的智能合约未知漏洞检测方法 | |
CN113222160B (zh) | 一种量子态的转换方法及装置 | |
CN113128015B (zh) | 预估单振幅模拟量子计算所需资源的方法和系统 | |
Luszczek et al. | Increasing accuracy of iterative refinement in limited floating-point arithmetic on half-precision accelerators | |
CN115775029B (zh) | 量子线路转化方法、装置、介质及电子装置 | |
CN115544882A (zh) | 基于双向长短时记忆神经网络的托卡马克放电建模系统 | |
Wu et al. | Machine Learning-enabled Performance Model for DNN Applications and AI Accelerator | |
CN113222158B (zh) | 一种量子态的获得方法及装置 | |
WO2021013117A1 (en) | Systems and methods for providing block-wise sparsity in a neural network |
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 |