量子计算机
一、量子计算机整体架构
1、量子计算的定位:异构计算
量子计算领域属于一个新兴高速发展的领域,在近二十年间,不论是量子算法的研究,还是量子芯片的研发均取得了巨大的进展。由于量子计算的理论研究有限,目前所说的量子计算机并非是一个可独立完成计算任务的设备,而是一个可以对特定问题有指数级别加速的协处理器。相应的,目前所说的量子计算,如下图所示,本质上来说是一种异构运算,即在经典计算机执行计算任务的同时,将需要加速的程序在量子芯片上执行。
2、量子程序代码构成:宿主代码+设备代码
因此,量子计算的程序代码实际执行中分为两种,一种是运行在CPU上的宿主代码(Host code),主要用于执行不需要加速的任务,并为需要加速的任务提供需要的数据;一种是运行在量子芯片上的设备代码(Device code),主要用于描述量子线路,控制量子程序在量子芯片上的执行顺序,以及数据的传输。不同类型的代码由于其运行的物理位置不同,编译方式和访问的资源均不同,这跟英伟达公司推出的用GPU解决复杂的计算问题的并行计算架构CUDA非常类似。如下表所示,以下所提及的量子程序,指的是Device code。
二、量子程序架构(设备代码的架构)
1、量子高级语言
与经典计算机语言类似,描述量子程序的语言也有高级语言与低级语言之分。量子高级语言,类似于经典计算机语言中C++。在描述量子线路时,不需要考虑量子芯片的底层物理实现,包括可执行量子逻辑门的种类,量子比特的连通性等,这就像一个经典的程序设计师并不需要考虑底层的执行芯片是x86架构,还是RISC架构一样。QPanda.QRunes均属于量子高级语言。量子高级语言主要用于描述量子线路的逻辑门构成,量子程序段之间的执行顺序,如QifQwhile等,以及内存之间的通信。
2、量子汇编语言的编译原则
量子高级语言会根据底层芯片的特点,通过量子程序编译器,编译为量子汇编语言。
量子程序编译器一般会考虑两个方面:量子芯片可执行的量子逻辑门种类和量子比特的连通性。
3、不可直接执行的量子比特逻辑门拆分
根据量子计算的原理,任意的单量子比特逻辑门可以拆分为绕X轴旋转的量子逻辑门和绕Y轴旋转量子逻辑门的序列;任意的两量子比特逻辑门可以拆分为由CNOT/CZ门和单量子比特逻辑门的序列。量子芯片提供的可直接执行的逻辑门是完备的,即可以表征所有的量子比特逻辑门,因此,如果量子高级语言描述的量子程序中包含了量子芯片不可直接执行的量子逻辑门,量子程序编译器会根据量子芯片提供的量子逻辑门将其转化为可执行量子逻辑门构成的序列。
4、量子比特连通性与不连通门的转换
相同数量的量子比特对于不同的量子芯片结构,可执行两量子比特逻辑门的量子比持对可能完全不同。目前常见的量子芯片结构有链式结构,十字结构,以及全连通结构。对于链式结构,量子比特成链状排布,每个量子比特只能与其相邻的两个量子比特执行两量子比特逻辑门;对于十字结构,量子比特成方阵装排布,每个量子比特能与其相邻的四个量子比特执行两量子比特逻辑门;对于全连通结构,每个量子比特可以与其他所有量子比特执行两量子比特逻辑门。如果量子高级语言描述的量子程序中包含量子芯片不可直接执行的两量子比特逻辑门,量子程序编译器会根据量子芯片的连通性,利用交换门和可执行的两比特门的序列,取代量子程序中的两量子比特逻辑门。
例如下图,一个三量子比特的链式结构量子芯片,可执行两量子比特逻辑门的量子比特对有{{1,2},{2,3}},CNOT1,3对于此量子芯片是不可执行的逻辑门,可以用SWAP1,2、CNOT2,3、SWAP1,2构成的量子逻辑门序列取代CNOT1,3。
5、量子程序的可执行文件
对于经典程序来说,汇编语言转化为计算机可直接执行二进制文件,即可被经典计算机执行;而量子芯片可直接执行的文件并非一串01组合的二进制文件,而是由测控设备产生的精密的脉冲模拟信号,因此对于量子汇编语言,应该转化成测控设备所能执行文件。此文件中不仅包含着每个量子比特逻辑门的脉冲波形,还需要包含波形的执行顺序,根据波形执行顺序的表征形式不同,量子计算硬件架构可细分为两类。
6、传统量子体系结构
顺序执行的传统量子体系结构的可执行文件:量子程序的整段波形文件
在传统的量子体系结构中,波形执行顺序体现在波形文件中,即编译器将量子汇编程序中的量子比特逻辑门的波形,按照执行顺序拼接为一个整体的波形,并将此波形以二进制文件的形式存放至测控设备的内存中。波形文件本身包含看量子逻辑门的执行顺序,测控设备通过执行波形文件,输出测控波形。此量子体系结构对应的硬件架构为上位机-测控设备-量子芯片架构。
7、顺序执行的传统量子体系结构优缺点
这种架构的优势在于,测控设备可以从内存中直接读取波形,并施加到量子芯片上延时极短,执行效率很高,但由于上位机与测控设备之间的通信时间很长,远大于量子比特的退相干时间,即在量子比特完成测量发送至上位机,以及上位机根据测量结果将后续要执行的波形文件发送至测控设备内存的期间,量子比特已经退相干,无法继续执行量子比特逻辑门。因此,这种架构只能运行顺序执行的上位机发送的波形文件,在执行期间不可改变波形的执行顺序,进而无法执行包含基于测量结果的跳转量子程序。
8、顺序执行的传统量子体系结构的改进
改进方案是将量子程序中可能执行的量子程序段的波形,全部上传至测控设备的内存中,当测量设备得到量子比特的测量结果时,根据测量结果决定接下来输出的波形在内存中的地址,且整个反馈过程的延时远小于量子比特的退相干时间。因此,此方案可以实现基于量子比特测量结果的反馈控制,但此方法需要将可能执行的量子程序段的波形全部存储在测控设备的内存中,随着量子比特数量和量子程序波形长度的增长该架构对内存的开销极大,可扩展性较低。
9、增强扩展性的新量子体系结构
增强扩展性的新量子体系结构的可执行文件构成:所有逻辑门的波形文件+微处理器程序
为了降低任意波形发生器的内存开销,增加系统的可扩展性,目前已有科研团队提出另一种量子计算机架构:上位机-微处理器-测控设备-量子芯片架构:该架构下,波形执行顺序通过微处理器发送的指令控制,虽然上位机与测控设备之间的通信速度很慢但FPGA可以与测控设备高速通信,因此采用FPGA搭建的微处理器控制测控设备按顺序执行波形。编译器将量子汇编程序中的每个量子比特逻辑门的波形以二进制文件的形式存放至测控设备的内存中,并生成微处理器可执行的微处理器程序,微处理器通过执行该程序,在特定的时间向测控设备发送控制指令触发对应的测控波形,同时,该微处理器可以接收测控设备发送的量子比特的测量结果,并通过执行微处理器程序,决定测 控设备执行的波形。
10、增强扩展性的新量子体系结构的优缺点
优点是:测控设备无需存放量子程序对应的所有波形,大大减少了内存开销;但缺点在于,通过执行微处理器程序控制测控设备,对微处理器的执行速度要求较高。如果微处理器将微处理器程序转化为测控设备的控制指令的时间大于量子芯片执行波形的时间,则会导致量子芯片在退相干时间内执行的有效的量子比特逻辑门数量降低;另一方面,微处理器向测控设备发送控制指令存在延时,如果顺序执行量子程序,则该延退无任何影响,但如果要执行基于测量结果跳转的量子程序,则每次反馈控制都会产生两倍延时时间的空泡,影响量子芯片的执行效率。
-
- Win11安装VMware Workstation Pro,Centos,Xshell,Xftp图文教程(Linux学习必备)
-
编程 | 2023-02-24 21:36
-
- 全球首个云渗透测试认证专家课程发布!腾讯安全领衔编制
-
编程 | 2023-02-21 12:51
-
- JavaWeb day5 Tomcat配置及idea创建Maven-Tomcat项目
-
编程 | 2023-02-21 12:47
-
- C语言实例|使用C程序优雅地杀掉其它程序进程
-
编程 | 2023-02-21 00:15
-
- 腾讯云服务器快速部署ChilloutMix
-
编程 | 2023-02-21 00:08
-
- vscode远程开发使用SSH远程连接服务器的方法「内网穿透」
-
编程 | 2023-02-20 21:46
-
- springboot使用mybatis开启事务回滚
-
编程 | 2023-02-20 21:42
-
- git可视化工具Sourcetree使用全攻略(git冲突解决)
-
编程 | 2023-02-20 21:36
-
- Win11安装VMware Workstation Pro,Centos,Xshell,Xftp图文教程(Linux学习必备)
-
编程 | 2023-02-20 21:32
-
- 领英群发消息方法技巧
-
编程 | 2023-02-20 18:12
- 1Python之列表推导式最全汇总(上篇)
- 2Win11安装VMware Workstation Pro,Centos,Xshell,Xftp图文教程(Linux学习必备)
- 3springboot使用mybatis开启事务回滚
- 4windows2003 的安装及安装过程遇到的问题小结
- 5git可视化工具Sourcetree使用全攻略(git冲突解决)
- 6django+vue项目搭建实现前后端通信
- 7Redis 分片集群的实现
- 8springboot使用mybatis开启事务回滚
- 9GPU版本安装Pytorch的最新方法步骤
- 10Win11安装VMware Workstation Pro,Centos,Xshell,Xftp图文教程(Linux学习必备)
- 1 Win11安装VMware Workstation Pro,Centos,Xshell,Xftp图文教程(Linux学习必备)
- 2 Redis处理高并发之布隆过滤器详解
- 3 一文带你了解MySQL字符集和比较规则
- 4 MySQL常见内置函数以及其使用教程
- 5 解决Spring Cloud feign GET请求无法用实体传参的问题
- 6 Feign调用中的两种Header传参方式小结
- 7 yocto queue微型队列数据结构源码解读
- 8 Idea中如何查看SpringSecurity各Filter信息
- 9 arrify 转数组实现示例源码解析
- 10 Css-In-Js实现classNames库源码解读
-
264
全网最强下载神器IDM使用教程之利用IDM加速下载百度网盘大文件的方法
· -
218
MySQL如何查看正在运行的SQL详解
· -
198
关于yolov8训练的一些改动及注意事项
· -
150
chatgpt国内镜像 pycharm idea插件使用详解
· -
148
VS Code里使用Debugger for Unity插件调试的方法(2023最新版)
· -
125
全网最强下载神器IDM使用教程之利用IDM加速下载百度网盘大文件的方法
· -
117
JavaWeb day5 Tomcat配置及idea创建Maven-Tomcat项目
· -
103
buildcheck包报错问题排查解决
· -
97
vscode远程开发使用SSH远程连接服务器的方法「内网穿透」
· -
96
全网最强下载神器IDM使用教程之利用IDM加速下载百度网盘大文件的方法
·
网友评论