分享
分销 收藏 举报 申诉 / 77
播放页_导航下方通栏广告

类型量子汇编语言和量子中间表示发展白皮书.pdf

  • 上传人:Stan****Shan
  • 文档编号:1203764
  • 上传时间:2024-04-18
  • 格式:PDF
  • 页数:77
  • 大小:7.03MB
  • 下载积分:25 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    量子 汇编语言 中间 表示 发展 白皮书
    资源描述:
    量子汇编语言和量子中间表示发展白皮书 1 一、量子计算与量子编程概述(一一)量子计算量子计算 随着社会生产力的发展,人们对高性能计算提出了更高的要求。面对摩尔定律的逐渐失效,科学家和工程师正全力研究发展新的计算技术,推动算力发展。量子计算以量子比特为基本计算单元,利用量子叠加等原理实现并行计算,能在某些计算困难问题上提供指数级加速,是未来计算能力实现跨越式发展的重要方向。当前,量子计算正处于发展初期阶段,超导、离子阱、中性原子、光量子、半导体等多种硬件处理器平台并行发展,开放竞争,技术路线尚未收敛。随着量子计算硬件平台逐渐进入具有百位量子比特的中规模含噪声量子(Noisy Intermediate-Scale Quantum,NISQ)处理器时代,基于NISQ样机开展应用研究探索已成为产业界和行业用户的共同目标。近年来,量子计算应用聚焦组合优化、量子模拟、量子人工智能等多类问题展开探索。量子组合优化通过利用量子算法在大量可能方案中更高效准确的找到最佳方案,具体可用于金融投资组合、金融衍生品定价、物流优化、旅行商问题等问题。量子模拟运用人工可控的量子系统模拟另外一个量子系统的性质和演化规律,应用范围涵盖基础物理研究、生命科学、制药、化工等多个领域。量子人工智能将量子计算与人工智能相结合,在处理大数据模型时具备潜在的加速优势,有望在机器学习、自然语言处理、大数据分析等问题中实现应用价值。量子应用在量子计算机上的执行需要借助特定的量子算法来实现。当前,实现量子算法的一种主要的方式是数字量子计算量子汇编语言和量子中间表示发展白皮书 2(Digital Quantum Computing),它与基于数字逻辑门的经典计算机类似,根据具体的量子芯片处理器底层架构,构建了一套通用量子逻辑门操作(简称为“量子门”)。可以证明,特定的量子门集合能够满足图灵完备性,可以完成通用的量子计算任务。量子计算机在执行量子算法之后,返回的是量子态。为了获得具体的量子态信息,我们还需要执行量子测量操作。根据量子力学基本原理,测量后的量子态会发生塌缩,单次测量会得到确定的状态输出。通过重复制备相同的量子态,进行多次测量,可以统计出不同状态的概率,获得更具体的量子态信息。量子计算机的输出结果通常是不同量子态的概率。常见的量子门和量子测量门图标如图 1 所示1。基于量子门和量子测量门的集合,按照特定的顺序进行编排,可以构建出量子线路,实现一些常见的通用量子算法,如 Deutsch算法、Shor算法和Grover算法等。在NISQ阶段,量子计算机端到端解决问题的能力还较弱。在量子测量得到结果之后,利用经典计算机根据测量结果更新量子计算机所需要运行的量子线路,然后再继续利用量子计算机得到量子测量结果。这种利用经典计算机来辅助量子计算机,进行迭代计算的 1 来源:量子信息网络产业联盟 图 8 常见的量子逻辑门和量子测量操作1 量子汇编语言和量子中间表示发展白皮书 3 模式叫做经典-量子混合计算,这类算法通常被称为变分量子算法,可以应用到量子化学模拟、量子组合优化和量子机器学习等领域。量子计算机是实现量子计算应用的基石,其构建涉及量子硬件平台、量子软件、量子算法等多项必备要素,其中量子软件包括应用开发软件和量子计算编译软件两大类。量子计算编译软件作为底层软件,需要满足量子计算的底层理论与算法逻辑,涵盖量子汇编语言、量子中间表示等,特异性与专业性较强,目前处于设计开发与生态构建的早期阶段,是国内外研究布局的重点。本文重点聚焦量子汇编语言和量子中间表示,调研当前量子编程的发展现状,并探讨未来的发展方向。(二二)量子编程量子编程 量子计算机是一个综合软件和硬件的复杂系统,从量子应用到量子硬件的过程,简单来说可以用下面的量子计算全栈系统图来描述,如图 2 所示2。从图中可以看到,量子编程是处于量子算法和量子硬件的中间层,是将量子计算的应用成功在量子计算机上执行的承上启下的一个重要部分。量子编程需要借助一些工具来实现,这个工具就是量子编程语言。参照量子编程语言在整个量子计算机全栈系统图中所处的层次,可以将量子编程语言分为如下几类:高级量子程序设计语言(High-level Quantum Programming Language)、量子中间表示(Quantum Intermediate Representation,QIR)和 量 子 汇 编 语 言(Quantum 2 来源:量子信息网络产业联盟 量子汇编语言和量子中间表示发展白皮书 4 Assembly Language,QASM)。类比于经典编程语言,高级量子程序设计语言是一种面向用户的程序语言,开发者通过调用预制的量子算法库和自定义算法,从而可以方便的实现自己的量子应用。量子汇编语言则是更加贴近于量子硬件的编程语言,可以通过量子操作系统直接调用底层量子指令。在当前阶段,量子编程语言和量子硬件仍然处在发展阶段,人们可以直接通过高级量子程序设计语言来生成量子汇编语言,将量子汇编语言作为构建编译器的中间表示。对于小规模的量子任务,人们也可以直接根据量子算法需求直接用量子汇编语言来编写程序,并且在量子硬件上执行。图 9 量子计算系统全栈示意图2 量子汇编语言和量子中间表示发展白皮书 5 量子中间表示也是将高级量子程序设计语言编译成量子汇编语言的工具,它是一种特殊的数据结构,能够方便的使用一些经典的编译工具和自定义编译优化方法,将量子程序编译的更为高效。在编写量子线路已经固定的、整个执行逻辑比较简单的量子算法时,可能很难会需要用到特殊的量子中间表示来进行编译。但是在涉及到复杂的量子算法,比如经典-量子混合算法时,使用量子中间表示构建的编译器就可以更容易实现一些加速优化方法。比如在进行经典-量子混合算法时,可能会遇到迭代的过程中,所有的量子门操作参数均为 0 的情况。这种情况下,所有的量子门操作等价于恒等操作(identity),量子线路的运行结果就是其初始的量子态。通常如果是直接使用量子汇编语言来编写的量子算法,那么这种操作也会在量子计算机上运行。如果是用高级量子程序设计语言来编写,并且使用量子中间表示来进行编译、转换和优化,那么在编译优化的过程中可以方便的定义一些优化转换的方法,使得这种不会产生任何实际效果的迭代结果可以直接得到,不需要使用量子计算机。并且与直接使用量子汇编语言作为中间表示进行的编译相比,量子中间表示可以让整个编译过程更加高效,功能更加丰富。基于量子中间表示的量子编译器是运行复杂量子算法的必由之路。自从量子计算机理念被提出来后,人们就开始了量子编程语言的设计。下表统计了部分量子编程语言,并区分了其在整个量子计算机系统中的层级。在后面的章节中,我们先简要介绍高级量子程序设计语言,然后再详细介绍本白皮书重点关注的,与量子硬件关系更为密切的量子汇编语言和量子中间表示。量子汇编语言和量子中间表示发展白皮书 6 表 1 量子编程语言概览3 时间时间 量子编程语言量子编程语言 抽象层级抽象层级 研发单位研发单位 1998 QCL 低 维也纳研究所(奥地利)2003 Q language 高 图卢兹实验室(法国)2014 ScaffCC 低 普林斯顿大学(美国)2016 QASM 低 洛斯阿拉莫斯国家实验室(美国)2016 ProjectQ 高 苏黎世联邦理工学院(瑞士)2016 Quil 高 Rigetti Computing(美国)2017 OpenQASM(2.0)低 IBM(美国)2017 eQASM 低 代尔夫特理工大学(荷兰)2017 Qiskit 高 IBM(美国)2017 QPanda 高 本源量子(中国)2018 cQASM 低 代尔夫特理工大学(荷兰)2018 Cirq 高 Google(美国)2018 XACC 低 橡树岭国家实验室(美国)2018 QPanda 高 本源量子(中国)2019 QRunes 低 本源量子(中国)2020 QIR 低 QIR 联盟(美国)2020 Quingo 高 国防科技大学、华东师范大学(中国)2021 NetQASM 低 代尔夫特理工大学(荷兰)2021 QCIS 低 中国科学技术大学(中国)2021 MindQuantum 高 MindSpore 开源组织(中国)2021 OpenQASM 3.0 低 IBM(美国)2022 isQ 低 弧光量子(中国)3 来源:量子信息网络产业联盟 量子汇编语言和量子中间表示发展白皮书 7 二、高级量子程序设计语言概述及分类(一一)概述概述 高级量子程序设计语言是专为设计和实现量子算法而创建的工具。随着量子计算技术的发展,越来越多的高级量子程序设计语言正在被开发出来,以帮助研究人员和开发者更好地利用量子计算机的潜力。在这些高级量子程序设计语言中,我们可以根据它们是否依赖于现有的经典编程语言来分为两类:嵌入式量子程序设计语言和独立式量子程序设计语言。嵌 入 式 量 子 程 序 设 计 语 言 是 一 种 嵌 入 式 领 域 特 定 语 言(embedded Domain-Specific Language,eDSL),它是基于现有经典编程语言(如 C+或 Python)构建的。这些语言通常作为库或框架集成到宿主语言中,允许开发者使用熟悉的语法和工具来编写量子程序。嵌入式量子程序设计语言可以轻松地与经典代码交互,并利用经典编程生态系统的强大功能,例如编译器、调试器和开发环境等。此外,嵌入式量子程序设计语言还可以简化经典-量子混合计算的编程任务 独立式量子程序设计语言则是从零开始设计的高级量子程序设计语言,不依赖于任何现有的其他编程语言,其定位类似于经典编程语言中的 C+或 Python 等通用的编程语言。独立式量子程序设计语言的目标是提供一个更直观且与硬件无关的抽象层,以便专注于量子算法的设计和优化。由于它们独立于任何特定的经典编程语言,因此独立式量子程序设计语言可能需要开发者学习新的语法和编程量子汇编语言和量子中间表示发展白皮书 8 范式。然而,这种全新的设计也为开发者提供了更多自由度,能够更好地表达量子计算特有的概念,比如叠加态、纠缠和测量等。无论是嵌入式还是独立式量子程序设计语言,它们都旨在降低量子计算的入门门槛,使更多的研究人员和开发者能够参与到这个快速发展的领域中来。下面我们将针对部分嵌入式和独立式量子程序设计语言进行更为深入的介绍。(二二)嵌入式量子程序设计语言嵌入式量子程序设计语言 典型的嵌入式量子程序设计语言包括 Qiskit、ProjectQ、MindSpore Quantum、QPanda等。下面将列举几类来介绍。1.Qiskit Qiskit4是由 IBM 公司开发的、基于 Python 的量子计算编程语言,主要用于在量子线路、操控脉冲、量子算法级别运作的量子计算机上。Qiskit 提供了丰富的工具用于创建和操控量子程序,并支持把该程序下发到量子原型机上运行。它遵循通用量子计算的电路模式,可以运行在任何遵循该模式的量子计算设备上。2.ProjectQ ProjectQ5是由苏黎世联邦理工学院发起的一款用于量子计算的开源软件架构。它提供了丰富的软件工具,旨在帮助研究人员去发现新的量子算法,并通过测试、调试和运行来改进量子算法。值得一提的是,ProjectQ虽然也是基于 Python的 eDSL语言,但是其内置 4 https:/qiskit.org/5 https:/doi.org/10.22331/q-2018-01-31-49 量子汇编语言和量子中间表示发展白皮书 9 了一些较为高级但对于量子计算来说又十分直观的语法风格,这使得 ProjectQ的特定域编程的特点更加突出。3.MindSpore Quantum MindSpore Quantum6(简 称“MindQuantum”)是 基 于 昇 思MindSpore开源深度学习框架和HiQ量子计算云平台开发的通用量子计算框架,支持多种量子神经网络的训练和推理。融合了 HiQ 团队的高性能量子计算模拟器和昇思 MindSpore 高性能自动微分能力,MindQuantum 能够高效处理量子机器学习、量子化学模拟和量子优化等问题,为广大的科研人员、老师和学生提供快速设计和验证量子机器学习算法的高效平台。4.QPanda QPanda7是由本源量子发布的开源量子计算编程框架,以 C+为宿主语言,提供基于 C+的库 QPanda2 和基于 Python 的库 pyqpanda两种编程调用方式,经过几年的更新和迭代,形成了比较完备的架构。在设计之初,QPanda 便以服务研究人员为出发点,以开放性、极简性、异构性为设计原则,实现高性能仿真、多元化仿真为目标,并在此之上提供诸多实用便捷的工具。在上层应用方面,QPanda 提供了许多基本算法,有效的简化了研究人员的开发时间,在底层运算上,提供了多种模拟后端,包括全振幅、部分振幅、单振幅、张量网络、密度矩阵和稀疏态模拟等多种模拟后端,与此同时,QPanda支持调用集群、超算和真实量子芯片的计算资源。QPanda将 6 https:/ 7 https:/ 量子汇编语言和量子中间表示发展白皮书 10 经典、量子操作相统一,支持经典量子混合编程,提供诸多有利于量子程序构建、编译优化、运行、分析的实用工具,而且 QPanda 还支持 qif、qwhile 等控制流的量子程序设计方式。QPanda 拥有一个完开放的社区,完善的工具链,简便的编程方式,期望成为通用的量子编程框架,为研究人员的使用提供了更加高效的方式。(三三)独立式量子程序设计语言独立式量子程序设计语言 独立式量子程序设计语言往往会提供大量经典和量子数据类型、控制结构和高级能力。对应经典领域中,如 Python、C/C+等通用的高级编程语言。典型的独立式量子程序设计语言包括 QRunes、Quingo、isQ等。1.QRunes QRunes 是高级量子经典混合编程语言,提供了高级抽象、自动取消计算、比特重用等功能的实现,利用完备的类型系统和健全的语法语义,协调约束量子操作和经典操作。QRunes 采用运行时编译,并且可拓展可重构。QRunes 编写的程序可以被编译成用户指定的目标,该目标可以是任何编程接口或者量子汇编语言。在设计量子语言 QRunes 时,为了和其他量子语言或者软件包进行区分,考虑了两个问题:其一是量子编程环境应该满足混合量子计算的需求;其二是量子代码的可重用性。量子经典混合编程结合了量子计算机和经典计算机的力量。例如量子控制流 Qif、Qwhile的实现和变分量子算法,这些场景要求量子语言不是只考虑量子电路的搭建,还要考虑在整个算法过程中是如何编译的。在经典编程中,跨平台语言在现在软件工程中得到了广泛的应用。对比到量子编程量子汇编语言和量子中间表示发展白皮书 11 中,QRunes 希望实现可重用或者可移植的量子程序,从而省略语言差异和实现细节,实现只包含量子算法逻辑的量子语言。QRunes 包含大量高级语言特性,拥有丰富的类型系,包括经典类型系统和量子类型系统。与其他量子高级语言相比,QRunes 在语言的高级抽象上进行了尝试,把量子过程中确定过程的操作抽象成指令或表达式的形式,如+=、-=操作,再由编译器根据上下文编译到对应后端的量子汇编语言上。QRunes 的这些高级抽象尝试在对量子算法的设计和量子编程的传播上有重大意义。QRunes 特有量子内存管理机制,其类似于经典操作中的运行时管理,通过取消临时变量的计算来达到辅助比特的回收利用。在运行量子程序时,临时变量与目标变量的纠缠会对测量结果产生影响,QRunes 研发能够针对临时变量进行自动取消计算,消除临时变量对结果产生影响的优化技术。通过可行的自动取消计算实现的算法,研究量子资源管理技术。该算法要求在保留原本量子程序的计算操作的同时,能够消除临时变量对于结果的影响,并且不会对结果造成影响。对于能够进行自动取消计算的临时变量,如果为每一个临时变量都单独分配一个量子比特会导致量子资源大量的被消耗,根据临时变量的生命周期,在临时变量完成自动取消计算优化后,此时临时变量的作用比特为|0态。对该作用比特进行重新利用,使得一个比特可以保持多个临时变量,达到节约资源的目的。2.Quingo 使用量子程序设计语言控制 NISQ硬件时,可能产生两个需求:一是利用实时经典逻辑实现量子-经典异构计算,从而支持描述带实量子汇编语言和量子中间表示发展白皮书 12 时测量反馈的量子算法,例如迭代相位估计算法;二是显式地控制量子操作的时序甚至波形等底层信息,从而可以描述量子校准实验。绝大部分高级量子程序设计语言无法同时满足这两点需求。当涉及到基于量子比特测量结果的实时经典运算时,绝大部分高级量子程序设计语言要么无法描述实时经典逻辑(如 Qiskit 等),要么相应的描述复杂且不够直观(如 Pyquil等)。聚焦上述需求和已有高级量子程序设计语言的不足,国防科技大学 QUANTA 团队、悉尼科技大学、华东师范大学等国内外团队共同提出了 Quingo(青果)语言,设计了面向 NISQ 时代的 Quingo 量子编程框架,可同时支持描述量子算法和量子实验。Quingo 语言相比于其他语言最核心的不同之处在于,Quingo 语言在高级语言设计上对量子-经典异构计算和量子实验的强有力的支持。这两个特性的体现和其背后的 Quingo 框架是密不可分的。一定程度上可以说,Quingo 语言所蕴含的特点是 Quingo 框架的执行模型等诸多设计的表象,介绍Quingo语言实质上是揭示Quingo框架蕴含的内容。Quingo 框架包含四个组成部分,分别为量子程序、量子编译器、量子经典相关硬件以及运行时系统。量子程序的执行模型决定了这些组件的组织方式和工作模式。综合并总结以往的高级量子程序设计语言执行模型的演变可发现,伴随着量子计算系统的成熟,执行模型大致可以分为 3类QRAM(Quantum Random Access Machine,量子 随 机 存 取 机)模 型,受 限 的 量 子-经 典 异 构 计 算(HQCC,Heterogeneous Quantum-Classical Computation)模型以及改进的 HQCC量子汇编语言和量子中间表示发展白皮书 13 模型,如图 3 所示8。QRAM 模型是在 1996 年被 Knill 提出,由于当时没有成熟的量子计算物理系统,所以 QRAM模型(图 3(a))忽略了对量子经典异构的体系结构考虑。而受限的 HQCC 模型,如图 3(b)所示,在经典主机与量子比特层添加了专门用于调控量子比特的执行层,使得在经典主机端编译过后的可执行量子程序通过执行层转换为施加在量子比特上的波形。但受限的 HQCC 模型并没有考虑量子协处理器等相关概念,也没有考虑到基于测量的反馈控制的算法需求。因此,参考 OpenCL 的增强的 HQCC 模型应运而生。在此执行模型下,量子协处理器端的量子控制硬件可以实时地处理与量子比特的交互逻辑,从而保证诸如相位估计算法等面向NISQ的量子算法成功运行。为了支持量子-经典异构计算,Quingo 框架采用了增强的 HQCC。因此 Quingo 框架的量子程序主要由经典程序设计语言编写的主程序和由 Quingo 语言编写的量子内核程序组合而成。量子内核程序负责描述图 3(c)中量子协处理器上所执行的逻辑,通过量子编译器、运行时系统以及相关硬件的配合,使得面向 NISQ的量子算法可以很好 8 来源:Quingo:A Programming Framework for Heterogeneous Quantum-Classical Computing with NISQ Features,https:/arxiv.org/abs/2009.01686 图 10 高级量子程序设计语言的三种不同的执行模型8 量子汇编语言和量子中间表示发展白皮书 14 地完成执行。这也是 Quingo 语言不同于一些其他高级量子程序设计语言,可更好地支持面向量子-经典异构计算的原因。此外,在 Quingo 语言层面对底层量子操作的时序控制,除了在Quingo 语言层面向用户提供基于时间自动机的时序控制接口之外,还需要整个 Quingo 框架的支持,确保量子控制器可以准确地按照语言层面描述的时序规则,发射施加于量子比特的脉冲信号。总的来说,Quingo 语言作为 Quingo 框架对外描述量子协处理器上行为的接口,其诸多语言上的特性本质上是 Quingo 框架所具备的能力的表象。借助 Quingo 框架的支持,Quingo 语言可以面向量子-经典异构计算模型,编写面向 NISQ的量子算法并支持描述一部分常用的量子实验过程。3.isQ isQ 是一款支持经典-量子混合编程的高级量子程序设计语言。在经典语法设计方面,isQ 支持多种经典变量类型,如整形,浮点型,布尔型等,在语法功能上,支持包括经典变量定义,四则运算,逻辑运算,位运算,函数定义及调用,控制流等。在量子语法设计方面,isQ 引入量子类型,支持量子比特的定义及基本的酉门操作和测量操作,以及自定义酉门,自定义量子 oracle 等高级量子操作。此外,isQ 提供用以表示控制的修饰符,用户可通过该修饰符定义在量子算法中常见的受控门。此外为方便量子变分算法,量子机器学习等算法的编写,isQ还支持参数化编程。在编译层面,isQ 基于 MLIR 框架,定义了特有的量子中间表示,并根据 MLIR 提供的转换接口,实现了如量子电路综合,量子酉门量子汇编语言和量子中间表示发展白皮书 15 分解,量子线路优化等优化功能,并最终通过代码生成模块,将优化后的中间表示转化为更底层的量子中间表示或汇编语言,如 qir,qcis 等。在底层对接层面,isQ 提供了高效的量子模拟器,并已实现了国内外多家量子硬件的对接工作。三、量子汇编语言现状及进展(一一)概述概述 量子汇编语言(QASM)是从经典计算机的汇编语言中拓展出来的一个概念。在现代的计算机体系结构中,汇编语言是一种用来描述电子计算机、微处理器或其他可编程器件的低级语言。在不同的设备中,汇编语言对应着不同的机器语言指令集,因此一种汇编语言专用于某种计算机系统结构。汇编语言不仅可以被直接用来实现程序设计,还可以通过编译器从高级语言(如 C/C+、Python 等)编译而来,然后通过汇编过程转换成可执行的机器代码。汇编语言包含的指令和具体实现有关,一般包括数据传输指令、算术指令、逻辑指令、比较指令、控制指令、内存管理指令和 I/O指令等。值得注意的是,不同的处理器架构在具体指令的实现上会存在差别。当前主流的汇编语言有 x86 汇编语言、ARM 汇编语言、MIPS 汇编语言等。量子汇编语言需要描述的处理器是量子处理器,如同经典的汇编语言一样,是一种用来标识处理器的机器语言的低级别量子编程语言。可以作为量子硬件与量子软件的接口,向上可以由量子编译器从高级量子程序设计语言转换而来,向下可以转换成量子处理器量子汇编语言和量子中间表示发展白皮书 16 可以识别的物理信号。一般来说需要包含量子单比特门、量子两比特门、量子测量等指令。不同的量子硬件架构(超导电路、离子阱、中性原子等)的 QASM 可以有诸多共同的部分,同时会存在一定的差异,例如超导量子计算机可以采用 QuMIS9作为量子汇编语言,它是由若干个单量子比特门和两量子比特门组成;而对于光量子线路,初等量子门则表示单光子上的一些基本运算。目前已有的 QASM 包括 Quil、OpenQASM、cQASM、eQASM、NetQASM、QCIS 等,如下表 5 所示。根据 QASM 与硬件的依赖关系可大致分为两类:一类是硬件独立的量子汇编语言,例如 Rigetti发布的 Quil;一类是面向特定硬件系统(量子线路或物理系统)的汇编语言,如我国中科院量子创新院等联合发布的 QCIS是针对超导量子硬件系统建造的。表 2量子汇编语言概览10 量子汇编 语言 提出/发表时间 特点 组织/机构(国别)License Quil 2016 首次引入量子与经典共享内存的架构模型 Rigetti(美国)Apache License 2.0 OpenQASM(2.0)2017 最为广泛使用和支持的量子汇编语言。IBM(美国)Apache License 2.0 eQASM 2017 一种面向“量子+经典”混合编程定义的汇编语言 代尔夫特理工大学(荷兰)NA cQASM 2018 一种与硬件无关的通用量子汇编语言 QuTech(荷兰)NA 9https:/arxiv.org/abs/1708.07677 10 来源:量子信息网络产业联盟 量子汇编语言和量子中间表示发展白皮书 17 NetQASM 2021 一种面向量子网络的编程汇编语言 代尔夫特理工大学(荷兰)MIT QCIS 2021 一种面向物理系统的控制汇编语言 中国科学技术大学、中国科学院(中国)NA OpenQASM 3.0 2021 在 OpenQASM 2.0的基础上增加循环、实时测量反馈等功能,支持更广泛的量子线路。IBM(美国)Apache License 2.0 (二二)OpenQASMOpenQASM 1.OpenQASM 2.0 量子汇编语言是用电路模型描述量子计算的机器独立语言,基于早期的 QASM 提出的 OpenQASM 2.0 是一种基于量子电路模型的通用量子电路的命令式量子电路编程语言。它提出参数化酉矩阵来定义新量子门的概念,通过内置的单量子比特通用门和 CNOT 及自定义新门来控制物理系统。理论上任何基于超导与离子阱量子理论构建的量子计算都能用 OpenQASM 2.0 描述计算电路。1.1 OpenQASM 2.0 的特点的特点 1)基本定义 量子比特 在 OpenQASM 2.0 中,量子比特是描述量子信息的基本单位。每个量子比特可以处于 0、1、或是这两个状态的叠加态。使用 qreg 关键字定义量子寄存器,例如 qreg q3;表示定义了一个包含 3 个量量子汇编语言和量子中间表示发展白皮书 18 子比特的寄存器。量子比特在电路中通过 qi 的形式进行引用,其中 i 是量子比特的索引。示例:qreg q2;/定义包含 2 个量子比特的寄存器 h q0;/对第一个量子比特施加 Hadamard 门 cx q0,q1;/在第一个和第二个量子比特之间施加 CNOT门 该示例定义了一个 2 量子比特,并且在第一个量子比特上施加了一个 H门,然后在第一个和第二个量子比特之间施加 CNOT门。经典比特 经典比特用于存储和处理经典信息,与量子比特相对应。使用 creg 关键字定义经典寄存器,例如 creg c2;表示定义了一个包含 2个经典比特的寄存器。经典比特在电路中通过 ci 的形式进行引用,其中 i 是经典比特的索引。示例:creg c1;/定义包含 1 个经典比特的寄存器 measure q0-c0;/测量第一个量子比特,并将结果写入第一个经典比特 1)量子门和操作定义 在 OpenQASM 2.0中,一些常见的量子门包括:Hadamard门(H门):在给定量子比特上施加Hadamard门,将量子比特从经典状态|0 或|1 转换为等概率的叠加态。Pauli门:包含 X、Y和 Z门。在给定量子比特上施加 Pauli门,实现对应的 Pauli操作。量子汇编语言和量子中间表示发展白皮书 19 CNOT 门(Controlled-NOT 门):在控制量子比特上为目标量子比特施加 CNOT 门。如果控制量子比特的状态为|1,则目标量子比特翻转。测量操作(Measure):测量给定量子比特的状态,并将结果存储在相应的经典比特中。U 门(任意单量子比特门):在给定量子比特上施加一个任意单量子比特门,其中、是门的参数。SWAP门:交换两个量子比特的状态。Rx、Ry、Rz 门:分别绕 X、Y、Z 轴旋转的任意角度的单比特旋转门。OpenQASM 2.0 已经支持以下门:ID|CX|X|Y|Z|S|SDG|H|T|TDG|CCX|C3X|C4X|C3SQRTX|RX|RY|RZ|CZ|CY|CH|SWAP|CSWAP|CRX|CRY|CRZ|CU1|CU3|RXX|RZZ|RCCX|RC3X|U1|U2|U3 足够满足当前开发需求。2)测量 在 OpenQASM 2.0 中,测量是一个用于获取量子比特状态的重要操作。语法:measure qubit-classical_bit;描述:测量给定量子比特的状态,并将结果存储在相应的经典比特中。示例:qreg q1;/定义一个包含 1 个量子比特的寄存器 量子汇编语言和量子中间表示发展白皮书 20 creg c1;/定义一个包含 1 个经典比特的寄存器 measure q0-c0;/测量第一个量子比特,并将结果写入第一个经典比特 在这个例子中,measure 操作将第一个量子比特的状态测量,并将结果写入第一个经典比特。测量后,量子比特的状态将塌缩到经典比特所测得的值,这是量子计算中不可逆的过程。3)程序结构 OpenQASM 2.0 的程序结构主要由量子电路和经典位定义组成。一般由头文件库、寄存器定义、电路构建、测量组成。以下是一个典型的 OpenQASM 2.0 程序结构的示例:/1.导入必要的库 include qelib1.inc;/2.定义量子寄存器 qreg q3;/定义一个包含 3 个量子比特的寄存器/3.定义经典寄存器 creg c3;/定义一个包含 3 个经典比特的寄存器/4.构建量子电路/通过在量子寄存器上应用量子门来构造电路 h q0;/在第一个量子比特上施加 Hadamard 门 cx q0,q1;/在第一个和第二个量子比特之间施加 CNOT门/5.进行测量 measure q0-c0;/测量第一个量子比特,并将结果写入第一个经典比特 量子汇编语言和量子中间表示发展白皮书 21 measure q1-c1;/测量第二个量子比特,并将结果写入第二个经典比特 measure q2-c2;/测量第三个量子比特,并将结果写入第三个经典比特 在这个示例中:include qelib1.inc;导入了一些基础的量子门,例如 Hadamard 门等。这是一个标准的库文件,它包含了一些常用的量子门定义。qreg q3;定义了一个包含 3 个量子比特的量子寄存器。creg c3;定义了一个包含 3 个经典比特的经典寄存器。在 h q0;和 cx q0,q1;等语句中,通过在量子寄存器上应用量子门,构建了量子电路。measure q0-c0;和类似的语句进行了测量操作,将测量结果存储在经典寄存器中。4)量子经典混合 OpenQASM 2.0可用于可编程的超导量子计算机,以指令的形式简洁的描述了对指定比特位量子进行操作。相对于常规汇编代码,OpenQASM 2.0具有更高可读性与可编写性,只需要关心”执行操作-量子参数-待操作量子位”即可完成量子电路的编写。被称为最简单的量子汇编语言。OpenQASM 2.0是针对超导量子计算机开发的语言,不存在经典计算机中描述的“地址”与“指令集”,所以 OpenQASM 2.0是无法直接运行在经典计算机上。但是可以通过模拟的方式,在经典计算机上进行模拟计算。需要注意的是随着仿真的比特位的增加,仿真消耗的资源将会以指数增加。量子汇编语言和量子中间表示发展白皮书 22 1.2 工具链工具链 OpenQASM 2.0 是用于描述量子电路的编程语言,通常与量子计算的硬件和模拟器一起使用。IBM Quantum Experience 提供了一个在线平台,允许用户在真实的 IBM Quantum 硬件上运行量子程序,或者在模拟器上测试其量子算法。用户可以使用 OpenQASM 2.0 编写量子程序,并通过 IBM Quantum Experience 将其提交到 IBM Quantum 计算机上执行。Qiskit 是 IBM 提供的开源量子计算软件开发框架,支持使用 Python 编写量子程序。Qiskit 包括用于构建、优化和执行量子电路的库,以及与 OpenQASM 2.0 集成的工具。用户可以通过 Qiskit 使用 OpenQASM 2.0 编写和运行量子算法。Q#是由 Microsoft 提供的用于量子计算的编程语言,其中也包含 OpenQASM 2.0 的支持。Quantum Development Kit 提供了与 Visual Studio 集成的工具,使用户能够使用 Q#编写和模拟量子程序。Quipper是由 Microsoft Research提供的另一个量子计算编程语言,它支持使用 OpenQASM 2.0 描述量子电路。Quipper 提供了一系列用于量子算法开发的工具和库。QuIDE 是一个用于设计和模拟量子电路的图形用户界面工具。它允许用户通过拖放量子门来构建量子电路,并提供了与 OpenQASM 2.0 的集成。1.3 总结总结 OpenQASM 2.0作为针对超导量子计算机开发的汇编语言,可以运行在超导量子计算机上,而无需其他针对汇编代码的改动。其易量子汇编语言和量子中间表示发展白皮书 23 读性十分方便科研人员直接修改 OpenQASM 2.0 开发的量子电路,极大减小开发难度。自从 OpenQASM 2.0 提出以来,大多数量子编程语言、框架、编译器软件或后端都支持 OpenQASM 2.0 或使用 OpenQASM 2.0 作为公共交换格式进行互操作。OpenQASM 2.0 是 IBM Quantum Experience 的编程接口语言,当前已经广泛的被使用。但是 OpenQASM 2.0 没有传统编程语言的变量与循环的功能,这使得使用 OpenQASM 2.0 编辑较大量子比特的量子电路时,汇编代码会极其庞大而导致可读性极大降低。在面对参数偏移的方法更新参数时,OpenQASM 2.0 需要通过更新整个 QASM 汇编文件才能完成参数更新。2.OpenQASM 3.0 2.1 OpenQASM 3.0 的特点的特点 OpenQASM 3.011在 OpenQASM 2.0 上做了拓展,旨在用超越简单量子比特和门的概念来描述更广泛的量子电路,这些概念主要是任意经典控制流、门修饰符(如 control 和 inverse)、时序和微码的脉冲实现。OpenQASM 3.0扩展功能时尽可能保持贴近 OpenQASM 2.0 语言结构,尽量保证向后兼容,但其与 OpenQASM 2.0 语法仍存在一些差异,如版本号字符串、标识符命名规则等。OpenQASM 3.0扩展量子电路概念,定义其为对量子数据的量子操作(如门、测量、重置)和必须在量子比特相干时间内执行的并发实时经典计算的有序序列构成的计算例程。数据在量子操作和实量子汇编语言和量子中间表示发展白皮书 24 时经典计算间流动,经典计算可依赖测量结果,量子操作可涉及或以实时经典计算的数据为条件执行。图 4 展示了量子程序的编译和执行模型11,以及 OpenQASM 3.0在其中的位置。量子程序包括近时(Near Time)计算和扩展的量子电路。近时计算时间要求没那么严,不在 OpenQASM 3.0 的考虑范围中。量子程序通过输出 OpenQASM 3.0 电路和外部实时函数与量子硬件交互。量子程序发出要在量子处理器(QPU)上执行的载荷。载荷由扩展的量子电路和外部的实时经典函数组成。OpenQASM 3.0是描述量子电路的语言,其中包括对外部经典函数的接口调用。它虽被认为是低级编程语言,但一般不被量子控制硬件直接使用,而是通过手写、脚本生成(元编程)或高级工具软件生成,然后进一步编译成在控制量子系统的模拟信号级操作的低级指令。OpenQASM 3.0 编译器可以转换和优化用 IR 描述的电路的所有方面,包括所使用的基门、量子位映射、时序、脉冲和控制流。最终的物理电路和外部函数被传递给目标代码生成器,该生成器为 QPU生成二进制文件。工具链 11来源:OpenQASM 3:A Broader and Deeper Quantum Assembly Language,http
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:量子汇编语言和量子中间表示发展白皮书.pdf
    链接地址:https://www.zixin.com.cn/doc/1203764.html
    页脚通栏广告

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork