量子计算软件介绍
一、量子语言
由于当前量子计算机的通用体系架构未得到统一,在硬件层面上的技术路线也未最终确定,所以目前还无法确定哪种量子机器指令集相对更科学、更合理。现阶段在量子计算编程领域的研究者们大多从量子线路图“量子计算汇编语言“量子计算高级编程语言的方式入手,不断寻找未来可能最受量子计算机发展欢迎的编程语言。
自20世纪80年代以来,专业从事物理和计算复杂性研究的学者提出了诸多量子算法,他们多数不具备计算机编程思维,使用图形化的方式表示量子程序、量子算法,在某种程度上来说,曾是最简洁的量子编程语言。直到现在,在量子比特数量较少的前提条件下,量子线路图是大多数从事量子计算的研究者一开始采用的最广泛的形式,目前大多数的量子计算平台(如本源量子计算云平台、IBMO平台)均支持这一编程方式。
随着量子计算技术研究的不断深入,人类能够使用的量子比特数量也逐步增长,在这种情况下,量子线路图的编程方式显然无法适应研究需要了,量子汇编语言应用而生类似于经典计算语言,量子汇编语言在最基本的层面上是能够被量子计算机直接识别和执行的一种机器指令集,它是量子计算机设计者通过量子计算机的物理结构赋予量子计算机的操作功能。从最早提出的QASM到本源推出的初代量子计算汇编语言QRunes、Rigetti提出的Quil,这些汇编语言基本都属于量子计算汇编语言这个范時。在经典计算世界,高级编程语言分为命令式和函数式两大类,而在量子计算编程领域,同样适用。命令式量子编程语言有可以将经典代码和量子代码组合在同一程序中的QCL、微软开发的Q#、适用于量子退火器的QMASM;函数式量子编程语言包括Peter Selinger定义的两种密切相关的量子编程语言QFC和QPL、微软研究院StationQ工作的LIQUi、Quipper由于每个量子机器必须由经典设备控制,现有的量子编程语言包含经典控制结构列如循环和条件执行,并允许对经典和量子数据进行操作;量子编程语言有助于使用高级构造表达量子算法。
二、量子软件开发包
使用量子语言进行量子编程,是一件顺理成章的事,但是在开发工程师的眼中,用量子语言进行量子编程只是最基础的一种方法,如何最大效率的使用量子语言构建最为便捷或功能足够强大的量子程序是一直追求的目标。
随着量子语言的不断成熟,量子计算行业中各类量子软件开发包层出不穷,它们提共着各种量子编程工具,诸如各类数据库、代码示例、程序开发的流程和指南,允许开发人员在特定量子平台上创造量子软件应用程序等。
在量子计算行业,量子软件开发包是指一个提供了创建和操作量子程序的量子计算工具集,以及提供了模拟量子程序的方法包,并且允许开发者使用基于云的量子设备来运行、检验自己所开发的量子计算程序。根据不同的后端处理系统,量子软件开发工具分为两大类:一类是可以访问量子处理器的SDK,另一类是基于量子计算模拟器的SDK。前者以苏黎世联邦理工学院开发的ProjectQ、IBM的Qiskit、Rigetti的Forest为代表,这类SDK允许开发者在原型量子器件和量子模拟器上运行量子电路;后者的使用范围相对较大,是目前量子计算行业采取的相对普遍的量子软件开发包后端处理形式,采用量子模拟器制作的量子软件开发包的好处是一一它们不需要跟量子芯片产生直接的物理关联,用户在自己的电脑上通过SDK模拟量子计算芯片的物理功能,执行量子计算过程获得量子计算模拟成果,并可利用量子虚拟机、模拟器的程序优点,模拟量子算法,同时可在通用量子计算机问世之后快速对接使用。微软的Q#开发套件、Google的Criq以及本源的QPanda均属于量子软件开发工具。
三、量子云平台
自1982年费曼(RichardFeynman)提出建造量子计算机的设想以来,近半个世纪的时间里人类一直在坚持不解地实现这一自标。2000年以后,虽然世界各国在量子计算机的硬件研发方面不断取得进步,但是由于量子态非常“挑剔”——它们需要在非常低的温度下储存,否则可能会受到干扰和破坏。
就目前的技术和工艺,还远远达不到像经典计算机那样在常温下批量制造、运行这就间接限制了量子计算机的现实应用。在这样的背景下,越来越多的量子计算公司、研究机构发布了各自的量子计算云平台,已知的包括IBM的QuantumExperience、Rigetti的 Forest、本源量子计算云平台等,主要的目的是在量子计算领域占得先机。
量子云平台,全称应该是量子云计算平台。一定程度上可以理解为用户与各家公司研究机构的量子计算机之间的介质平台;用户通过量子云平台经由调度服务器和互联网句部署在远程的量子计算机提交任务,量子计算机在处理这些任务后再通过调度服务器和互联网将结果返回给用户。
个人用户在本地的经典计算机上通过web界面或量子软件编写量子线路、量子代码然后将编写的内容提交给远程调度服务器,调度服务器安排用户任务按照次序传递给后端量子计算机,量子计算机完成任务后,将计算结果一—返回给调度服务器,调度服务器再将计算结果变成可视化的统计分析发送给用户,至此完成整个量子计算过程。