摘要:随着量子编程的发展,越来越多的量子编程语言被开发出来。因此,调试和测试量子程序变得越来越重要。虽然经典程序中的错误修复已经取得了长足的进步,但对量子程序的研究仍然不足。为此,本文对量子程序中的错误修复进行了全面的研究。我们从四种流行的量子编程语言(Qiskit、Cirq、Q#和ProjectQ)中收集并研究了96个现实世界中的错误及其修复。我们的研究表明,量子程序中的错误很大一部分(超过80%)是量子特有的错误,这需要在错误修复领域进行进一步的研究。我们还总结和扩展了量子程序中的错误模式,并细分了最关键的部分——与数学相关的错误,使其更适用于量子程序的研究。我们的研究结果总结了量子程序中错误的特点,并为研究测试和调试量子程序提供了基础。索引词——错误修复、量子软件测试、量子程序调试、实证研究
摘要 — 量子软件测试的自动化对于支持系统且经济高效的测试至关重要。为此,我们提出了一种名为 Quito 的量子软件测试工具,它可以自动生成测试套件,涵盖用 Qiskit 编码的量子程序的输入和输出上定义的三个覆盖标准,即输入覆盖率、输出覆盖率和输入输出覆盖率。Quito 还根据程序规范实现了两种类型的测试预言,即检查量子程序是否产生了错误的输出或使用统计测试检查概率测试预言。我们描述了该工具的架构和方法。我们还用一个量子程序和一个有缺陷的版本验证了该工具。结果表明,Quito 可以生成测试套件并执行检测故障的测试评估,并产生具有良好时间性能的测试结果。 Quito 的代码:https://github.com/Simula-COMPLEX/quito Quito 的视频:https://youtu.be/kuI9QaCo8A8 可用的工件:https://doi.org/10.5281/zenodo.5288665
在 Gottesman 的论文中,最终目标是完整描述量子程序并证明 Gottesman-Knill 定理,该定理表明任何 Clifford 电路都可以被有效模拟。在这里我们观察到上述判断看起来像类型判断,并表明它们确实可以这样处理(§3)。因此,它们可用于对程序做出粗略的保证,而无需完整描述程序的行为。我们展示了一个将该系统应用于超密集编码算法的简单示例(§5)。在§6 中,我们使用 GHZ 状态 | 000 ⟩ + | 111 ⟩ 演示了类型系统如何跟踪纠缠的产生和破坏。在§7 中,我们扩展类型系统以处理 Clifford 群之外的程序,并使用它来表征 Toffoli 门。我们将在§8 中讨论该系统未来可能的应用。本文中的系统和示例在 Coq 中进行了形式化,网址为 https://github.com/inQWIRE/GottesmanTypes。
•尤其是但不限于光伏面板,智能手机,平板电脑和计算机的废物电气和电子设备(WEEE)的单独收集和回收; •分开收集和回收电池和蓄能器; •拆卸,再制造和回收寿命终止车辆(ELV)和寿命末船; •选择性分离和回收建筑工程或建筑物; •对塑料进行分类和回收; •分开收集和回收生物废物; •纺织品的单独收集和回收; •尤其是复合材料和多层材料的回收,但不限于碳或玻璃纤维。应特别注意公众用于共同保护目的的面具,在这种情况下,也将考虑最佳实践解决方案; •从废物中恢复关键的原材料•包装的分类和回收。•实施创新解决方案,以识别,跟踪,分离,预防和净化含有危险物质的废物,以实现对处理的废物的增值回收利用,并安全地处理有害物质或减少项目框架内问题规模。应特别注意那些被认为是对环境和人类健康有害的物质,也称为关注的物质。
实用误差分析对于嘈杂的中等规模量子(NISQ)计算的设计,优化和评估至关重要。然而,量子程序中的边界错误是一个巨大的挑战,因为量子错误的影响取决于指数的大量子状态。在这项工作中,我们提出了Gleipnir,这是一种新颖的方法论,实际上可以计算量子程序中经过验证的错误界限。gleipnir引入了(ˆ 𝜌,𝛿) - diamond norm,这是一个误差度量,该误差度量受近似状态ˆ及其距离组成的量子谓词约束的误差度量,并将其距离为理想状态𝜌。可以使用基于矩阵乘积状态的张量网络自适应地计算此谓词(ˆ 𝜌,𝛿)。gleipnir具有轻巧的逻辑,用于基于(ˆ 𝜌,𝛿)-diamond Norm Metric的嘈杂量子程序中的错误界限的推理。我们的实验结果表明,Gleipnir能够为具有10至100 QUBIT的现实世界量子程序有效地产生严重的误差范围,并且可用于评估量子编译器转换的误差缓解性能。
当前的量子计算机特别容易出错,需要进行高度优化以减少操作次数并最大限度地提高编译程序的成功概率。这些计算机仅支持分解为一和两量子比特门的操作,以及物理连接的量子比特对之间的两量子比特门。典型的编译器首先分解操作,然后将数据路由到连接的量子比特。我们提出了一种新的编译器结构 Orchestrated Trios,它首先分解为三量子比特 Toffoli,将高级 Toffoli 操作的输入路由到附近的量子比特组,然后完成分解为硬件支持的门。通过让路由过程访问电路的高级结构而不是丢弃它,这显著降低了通信开销。第二个好处是现在能够为路由过程后已知的特定硬件量子比特选择架构调整的 Toffoli 分解(例如 8-CNOT Toffoli)。我们在 IBM Johannesburg 上进行了实际实验,结果表明,与 Qiskit 相比,Toffoli 的双量子比特门数平均减少了 35%,单个 Toffoli 的成功率提高了 23%。此外,我们还编译了许多近期基准算法,结果表明,Johannesburg 架构的模拟成功率平均提高了 344%(或 4.44 倍),并与其他架构类型进行了比较。
摘要 — 量子程序实现解决复杂计算问题的量子算法。由于量子计算 (QC) 的固有特性(例如概率性质和叠加计算),测试此类程序具有挑战性。然而,需要自动化和系统化的测试来确保量子程序的正确行为。为此,我们提出了一种称为 Quito(量子输入输出覆盖)的方法,该方法由三个定义在量子程序输入和输出上的覆盖标准以及它们的测试生成策略组成。此外,我们定义了两种类型的测试预言,以及一个使用统计分析确定测试套件通过和失败的程序。为了评估这三个覆盖标准的成本效益,我们对五个量子程序进行了实验。我们使用突变分析来确定覆盖标准的有效性和测试用例数量的成本。根据突变分析的结果,我们还确定了量子程序的等效突变体。索引术语 — 量子程序、软件测试、覆盖标准、突变分析
让拭子晾干5分钟。不允许刷毛接触任何其他表面。将拭子(首先)返回原始的拭子袖子。纸套的末端可以保持静止。如果拭子套筒中的开口大于1英寸,则将套筒的边缘胶带胶带以保护拭子。拭子袖子可以放在带有提交表格的信封中,以返回实验室。
嘈杂的中型量子 (NISQ) 计算机是一个活跃的研究领域。新的量子计算机架构有时是制造过程逐步改进的结果,有时是量子比特技术本身的范式转变。虽然每种新架构在计算意义上都是通用的,但它们设计的无常性挑战了人们为它们编写软件的能力。与传统计算机的情况一样,编译器的作用是减轻这一挑战。量子计算机的软件最好以对程序员来说最简单、最直接的方式编写,而不一定需要了解目标架构的细节。然后,编译器的工作就是生成该软件的有效且适当的表达,该表达考虑到目标架构的细节。在本文中,我们介绍了 Quilc,这是一个开源 4 软件应用程序,用于将用 Quil [ 3 , 24 ] 编写的量子程序编译为优化程序,该程序以目标量子计算机架构的本机操作表示。 Quilc 不需要(实际上也没有办法接受)用户关于细粒度编译策略的指令。相反,它使用 Quilc 必须为其编译用户程序的体系结构的简单描述。体系结构描述语言足够通用,可以处理迄今为止大多数制造的基于门的计算机体系结构,并且可以预测新的体系结构。出于这些原因,我们说 Quilc 是自动的和可重定向的。Quilc 不仅仅是一个桌面计算器(避免进行手动重复计算的便利),因为它充当了有关程序编译的知识库,并且能够综合这些信息来发现量子程序的非平凡表达式。我们在第 5 节中提供了这方面的示例。它也是生产级的,并且是 Rigetti Computing 软件堆栈的重要组成部分。本文的结构如下。首先,在第 2 节中,我们概述了 Quilc,包括与编译有关的量子架构的数学公式。第 3 节使用此形式来描述 Quilc 如何实现可重定向性,其高级概述见
摘要 — 将高级量子程序编译到大小受限(即量子比特数量有限)和时间受限(即量子操作数量有限)的机器中是一项挑战。在本文中,我们介绍了 SQUARE(战略量子辅助重用),这是一种编译基础架构,用于解决模块化量子程序中临时量子比特(称为辅助)的分配和回收问题。SQUARE 的核心是战略性地执行非计算以创造量子比特重用的机会。当前的嘈杂中型量子 (NISQ) 计算机和前瞻性的容错 (FT) 量子计算机具有根本不同的约束,例如数据局部性、指令并行性和通信开销。我们基于启发式的辅助重用算法平衡了这些考虑因素,并将计算纳入资源受限的 NISQ 或 FT 量子机,并在必要时限制并行性。为了精确捕获程序的工作量,我们提出了一个改进的指标,即“活动量子体积”,并使用该指标来评估我们算法的有效性。我们的结果表明,SQUARE 将 NISQ 应用程序的平均成功率提高了 1.47 倍。令人惊讶的是,用于未计算的额外门创建了具有更好局部性的辅助门,并导致交换门大大减少,总体上门噪声也更低。SQUARE 还实现了 FT 机器的活动量子体积平均减少 1.5 倍(最高 9.6 倍)。索引术语 — 量子计算、编译器优化、可逆逻辑综合