摘要:未来,量子计算机可能比传统计算机更快地解决特定问题。但它们的实际量子位数很少,错误率很高。然而,量子计算机已经在各个领域得到应用,云提供商提供的量子计算机数量也在稳步增加。要执行量子电路,需要将其映射到量子计算机的硬件上。由此产生的编译电路会严重影响执行的精度,因为会使用量子位和量子门导致错误发生。因此,选择最佳的电路至关重要。SDK 用于实现电路,并且在支持的云提供商和编程语言方面有所不同。这些差异使对其他后端的更改变得复杂。在之前的工作中,我们开发了一个自动化框架来翻译给定的电路并使用多个编译器在可用的量子计算机上对其进行编译。编译结果可以按优先级排序并执行。然而,使用所有编译器和量子计算机进行翻译和编译都是资源密集型的,并且无法很好地扩展到未来的其他后端。因此,我们提出了一种扩展,可以根据用户的需求自动选择合适的编译器和量子计算机组合,例如,缩短等待时间并根据过去的执行情况获得精确的结果。为了演示和验证我们的方法,我们展示了一个原型和案例研究。
摘要 — 基于深度神经网络 (DNN) 或深度学习 (DL) 的人工智能 (AI) 应用因其在解决图像分析和语音识别等问题方面的成功而变得流行。训练 DNN 需要大量计算,而高性能计算 (HPC) 一直是 AI 发展的关键驱动力。虚拟化和容器技术促成了云和 HPC 基础设施的融合。这些具有不同硬件的基础设施增加了部署和优化 AI 训练工作负载的复杂性。可以使用特定于目标的库、图形编译器以及通过改进数据移动或 IO 来优化 HPC 或云中的 AI 训练部署。图形编译器旨在通过为目标硬件/后端生成优化代码来优化 DNN 图的执行。作为 SODALITE(Horizon 2020 项目)的一部分,MODAK 工具旨在优化软件定义基础设施中的应用程序部署。 MODAK 使用数据科学家的输入和性能建模,将最佳应用程序参数映射到目标基础架构并构建优化的容器。在本文中,我们介绍了 MODAK,并回顾了 AI 的容器技术和图形编译器。我们说明了使用图形编译器和 Singularity 容器优化 AI 训练部署。使用 MNIST-CNN 和 ResNet50 训练工作负载的评估表明,定制的优化容器优于 DockerHub 的官方映像。我们还发现图形编译器的性能取决于目标硬件和神经网络的复杂性。索引术语 —MODAK、SODALITE、HPC、云、性能优化、AI 训练、Singularity 容器、图形编译器
我们解决了在投机语义下在编译器转换之间保留非干预的问题。我们开发了一种证明方法,以确保在所有源程序中均匀保存。我们证明方法的基础是一种新的模拟关系形式。它通过指令进行操作,该指令对攻击者对微构造状态的控制进行建模,并且它解释了编译器转换可能会改变微构造状态对执行(以及指令)的影响。使用我们的证明方法,我们显示了消除死亡代码的正确性。当我们试图证明注册分配正确时,我们确定了以前未知的弱点,该弱点会引入非干预。我们已经证实了libsodium密码库中代码上主流编译器的弱点。为了再次获得安全性,我们开发了一种新颖的静态分析,该分析可在源程序和寄存器分配程序的产品上运行。使用分析,我们向现有的注册分配实现提供了一个自动修复程序。我们通过证明方法证明了固定寄存器分配的正确性。
摘要 — 任何量子计算应用程序一旦被编码为量子电路,就必须先进行编译,然后才能在量子计算机上执行。与传统编译类似,量子编译是一个顺序过程,具有许多编译步骤和许多可能的优化过程。尽管有相似之处,但量子计算编译器的开发仍处于起步阶段——缺乏对最佳过程顺序、兼容性、适应性和灵活性的相互整合。在这项工作中,我们利用数十年的经典编译器优化,提出了一个强化学习框架来开发优化的量子电路编译流程。通过不同的约束和统一的接口,该框架支持在单个编译流程中结合使用来自不同编译器和优化工具的技术。实验评估表明,所提出的框架(由 IBM 的 Qiskit 和 Quantinuum 的 TKET 中选择的编译过程设置)在 73% 的预期保真度情况下明显优于两个单独的编译器。该框架作为慕尼黑量子工具包 (MQT) 的一部分在 GitHub (https://github. com/cda-tum/MQTPredictor) 上提供。
智能嵌入式视觉应用的设计变得前所未有 的快捷而安全,这要归功于围绕 CEVA-XM6 DSP 而构建的全方位视觉平台。该平台包含 CEVA 深度神经网络( CDNN )编译器图表、计 算机视觉软件库以及一系列算法。
我们介绍了Trapped-ION Surface Code Compiler(TISCC),这是一种软件工具,该软件工具可根据本机捕获 - 离子门集生成一组通用表面代码补丁操作的电路。为此,TISCC管理着被困的离子系统的内部表示,其中捕获区域和连接处的重复模式被安排在任意大的矩形网格中。表面代码操作是通过在网格上实例化表面代码贴片来编译的,并使用方法对数据量量的横向操作,对稳定器plaquettes进行误差校正和/或相邻贴片之间的晶格手术操作进行了横断面。除了实现基本的表面代码仪器集之外,TISCC还包含角移动功能和单独使用离子运动实现的补丁翻译。在后一种情况下,所有TISCC功能都可以扩展到类似网格的硬件体系结构。TISCC输出已使用Oak Ridge Quasi-Clifford Simulator(ORQC)验证。
将量子程序编译为低级门集时,必须考虑近似错误。我们提出了一种自动跟踪此类错误的方法,然后优化准确性参数以确保指定的总体精度,同时旨在最大程度地减少量子门的实现成本。我们方法的核心思想是提取直接从量子程序的高级描述中指定优化问题的功能。然后,自定义编译器通过优化这些功能,将它们变成(1)总误差和(2)实现成本(例如,总量子门计数)的(1)符号表达式。量子程序的所有未指定参数将显示为这些表达式中的变量,包括精度参数。解决相应的优化问题后,可以从发现的解决方案实例化电路。我们开发了两个原型实现,一个基于Clang/LLVM中的C ++,另一种是使用Q#编译器基础架构。我们将原型基准在典型的量子计算程序上,包括量子傅立叶变换,量子相估计和Shor算法。
摘要 量子计算是一个快速发展的领域,有可能改变我们解决以前棘手问题的方式。新兴硬件的复杂性正在逼近,需要越来越复杂的编程和控制。Scaffold 是一种较旧的量子编程语言,最初设计用于未来大型量子机器的资源估算,而 ScaffCC 是相应的基于 LLVM 的编译器。我们首次对该语言本身、编译器及其传递结构进行了全面而完整的概述。尽管 Abhari 等人(2015 Parallel Comput. 45 2–17)、Abhari 等人(2012 Scaffold:量子编程语言 https://cs.princeton.edu/research/techreps/TR-934-12)的先前研究对该工具链的不同部分进行了零碎的描述,但我们在本文中提供了更全面、更完整的描述。我们还引入了 ScaffCC 的更新,包括旨在与现代量子汇编语言保持同步的条件测量和多维量子比特阵列,以及旨在保持噪声中型量子 (NISQ) 机器的正确性和低资源计数的替代工具链,以及与当前版本的 LLVM 和 Clang 的兼容性。我们的目标是为研究界提供一个功能齐全的 LLVM 框架,用于量子程序分析、优化和可执行代码的生成。
量子模拟内核是一个重要的子程序,在许多量子程序中以非常长的门序列出现。在本文中,我们提出了 Paulihedral,这是一个分块编译器框架,它可以通过利用高级程序结构和优化机会来深度优化此子程序。Paulihedral 首先采用了一种新的 Pauli 中间表示,它可以维护量子模拟内核中的高级语义和约束。这自然可以实现难以在低门级实现的新型大规模优化。具体而言,我们提出了两种与技术无关的指令调度过程和两种与技术相关的代码优化过程,它们协调了编译器的电路综合、门取消和量子位映射阶段。实验结果表明,Paulihedral 在近期超导量子处理器和未来容错量子计算机的广泛应用中都可以胜过最先进的编译器基础设施。
嘈杂的中型量子 (NISQ) 计算机是一个活跃的研究领域。新的量子计算机架构有时是制造过程逐步改进的结果,有时是量子比特技术本身的范式转变。虽然每种新架构在计算意义上都是通用的,但它们设计的无常性挑战了人们为它们编写软件的能力。与传统计算机的情况一样,编译器的作用是减轻这一挑战。量子计算机的软件最好以对程序员来说最简单、最直接的方式编写,而不一定需要了解目标架构的细节。然后,编译器的工作就是生成该软件的有效且适当的表达,该表达考虑到目标架构的细节。在本文中,我们介绍了 Quilc,这是一个开源 4 软件应用程序,用于将用 Quil [ 3 , 24 ] 编写的量子程序编译为优化程序,该程序以目标量子计算机架构的本机操作表示。 Quilc 不需要(实际上也没有办法接受)用户关于细粒度编译策略的指令。相反,它使用 Quilc 必须为其编译用户程序的体系结构的简单描述。体系结构描述语言足够通用,可以处理迄今为止大多数制造的基于门的计算机体系结构,并且可以预测新的体系结构。出于这些原因,我们说 Quilc 是自动的和可重定向的。Quilc 不仅仅是一个桌面计算器(避免进行手动重复计算的便利),因为它充当了有关程序编译的知识库,并且能够综合这些信息来发现量子程序的非平凡表达式。我们在第 5 节中提供了这方面的示例。它也是生产级的,并且是 Rigetti Computing 软件堆栈的重要组成部分。本文的结构如下。首先,在第 2 节中,我们概述了 Quilc,包括与编译有关的量子架构的数学公式。第 3 节使用此形式来描述 Quilc 如何实现可重定向性,其高级概述见