服务器 频道

量子计算的下一步,该考虑软件基础设施了!

  【IT168 评论】在过去十年中,在开发实际的QPU硬件方面取得了巨大进步,IBM发布了一个具有用于用户访问的16位量子位QPU门户。Rigetti公司正在开发8-量子位QPU方面取得了相当的进展。D-Wave已经生产了一个2048量子位量子耦合器。Google正在开发一个将于2017年底,或2018年初发布的49位量子位QPU。中国的量子计算机和量子通信在全球也不遑多让!但量子计算在硬件成熟之后,该如何发展,其发展软肋在哪?所以有了所有这些伟大的硬件选择之后,现在的真正问题就是,我们如何提供一个高级软件基础设施,这样的基础设施必然会加快研究工作,这将有利于现有应用程序工作流程中的量子加速。

  Eclipse XACC是一种开源的混合编程模型和参考实现,称为eXtreme-scale的加速(Accelerator)编程框架,简称为XACC。在这篇文章中,介绍量子计算,以及如何开发智能高级软件基础设施,以便在计算硬件方面实现跨越式发展。

  关于量子计算

  科学计算和数据挖掘是帮助我们更好地了解自然并开发解决能源,健康,物流和金融方面的新问题的重要工具。突出的例子包括计算化学模拟,以调查新的药物;以及远程模型来预测全球气候变化。这些问题和其他类似的问题只能用大规模高性能计算(HPC)资源来解决。计算架构的持续进步支持这些大规模科学计算和数据挖掘任务,HPC系统设计的最新趋势主要集中在将许多CPU内核与其他专用加速器相结合的异构架构上。例如,橡树岭国家实验室的Titan超级计算机依赖于许多GPU来实现高性能数值计算。

量子计算的下一步

  可扩展,模块化和开源软件在应用程序开发人员可访问异构HPC系统方面发挥重要作用。高级编程模型,软件系统和应用程序编程接口(API)对于使用这些大规模科学设备是必要的,这些科学设备不断推动科学计算范围。各国正推动开发运行在超级计算机(即每秒可执行十亿次操作的机器)的高性能计算机系统(HPC),还要考虑到异构HPC体系结构需要超越超级计算。世界各地的一些研究工作正在开始展示可能有助于加速后期计算世界的新型计算架构。最重要的努力是量子计算和利用量子力学和量子信息的非直观规律来执行计算的想法。

  量子计算与常规计算根本的不同之处在于,它们考虑到二进制单位(位)0和1的运算,量子计算机以量子位——具有给定概率的两个不同状态之一的物理系统进行操作。电子的旋转(向上或向下)或光子的偏振(水平或垂直极化)可以用作量子位;尽管目前的现有量子位系统由超导,原子或光学设置组成。在图形上,量子位的状态可以如图1所示,其中你有一个向量可以指向半径为1的球体上的任何位置。

量子计算的下一步

  量子计算的力量来自于位向量子位的泛化。传统的计算被约束到位串的空间,并且计算是从将位串映射到位串的布尔基元构建的。

  然而,量子逻辑运算是将量子态旋转的单一矩阵(在图1中)(在指数式的大向量空间内)。量子空间的快速(和不同)增长的另一个后果是量子纠缠的存在,或是不可分离的状态。这意味着状态不能表示为单个量子位的状态。这与二进制逻辑状态有很大不同,其中寄存器由独立位的集合组成。通过利用上述量子资源,在多项式时间内进行量子计算,如整数分解的Shor算法和量子物理的模拟。

  那么现在我们如何利用这个优势,而不用等待一个通用的独立量子计算机呢?答案是加速具有小规模量子计算机的HPC系统。增加量子资源的HPC系统可能开始帮助我们解决其他棘手的问题。在这方面,我们可以处理与GPU类似的量子处理单元(QPU)——作为现有科学应用的加速单元。

  在过去十年中,在开发实际的QPU硬件方面取得了巨大进步,该硬件具有一定的算法巧妙性,可以在混合计算环境中利用。IBM已经(并公开发布)一个具有用于用户访问的16位量子位QPU门户。Rigetti公司正在开发8-量子位QPU方面取得了相当的进展,D-Wave已经生产了一个2048量子位量子耦合器,Google正在开发一个将于2017年底,或2018年初发布的49位量子位QPU。中国的量子计算机和量子通信在全球也不遑多让!

  有了所有这些伟大的硬件选择之后,现在的真正问题就是,我们如何提供一个高级软件基础设施,明智地将选择的计算任务分配到附加的量子加速器?这样的基础设施必然会加快研究工作,这将有利于现有应用程序工作流程中的量子加速。

  Eclipse基金会,ORNL和XACC

  橡树岭国家实验室已经开始调查用量子加速来增强HPC系统的意义,并提出了一个开源的混合编程模型和参考实现,称为eXtreme-scale的加速器编程框架Eclipse XACC。好消息是,XACC现在是一个完全成熟的Eclipse项目,是Eclipse Science工作组不断努力推动开源软件和围绕量子计算的社区开发的第一个项目,这是量子计算软件早期历史的一个令人兴奋的发展!

  XACC专门设计用于在现有的高性能计算应用程序和工作流程中实现量子加速。该编程模型和相关的开源参考实现遵循传统的协处理器模型,类似OpenCL或CUDA的GPU,但考虑到常规和量子硬件之间相互作用固有的细微之处和复杂性。

  XACC提供了一种高级API,使软件应用程序以量子编程语言和量子硬件不可知的方式将量子代码(以量子核表示)附加到附加的量子加速器。图2以图形方式显示 - 该框架允许以任何可用语言编程量子内核,并在任何可用的硬件后端执行该代码。这使得一个人能够编写一次量子代码,并对一组虚拟(模拟器)或物理硬件执行基准测试,验证和验证以及性能研究。

  为了实现这种互操作性,XACC定义了四个主要的抽象或概念:量子内核,中间表示,编译器和加速器。量子内核是包含用于在QPU上执行的代码的类C函数。这些内核被编译为XACC中间表示(IR),这是一种对促进集成多种语言和硬件至关重要的对象模型。IR提供了由算法程序员使用的四种主要形式:(1)内存中表示和API,(2)磁盘上持久性表示,(3)人类可读量子组件表示,以及(4)控制流图形或量子电路表示。该IR由XACC编译器接口的实现产生,该接口委托内核语言适当的解析器,编译器和优化器。

  最后,XACC IR实例(以及编程的内核)由Accelerator概念的实现来执行,该概念定义了用于注入物理或虚拟量子加速器的接口。加速器将此IR作为输入,并将执行委托给供应商提供的用于QPU(或模拟器的API)的API。

量子计算的下一步

  这些概念的编排使得能够实现科学应用的量子加速的表达式API。图3演示了一个简单的量子位状态传送示例的API。Teleport内核(teleport.hpp)以Scaffold量子编程语言编写,并使用XACC API工作流程(teleport.cpp)进行编译和执行 - (1)初始化框架(加载所有可用的编译器,加速器等) ),(2)参考所需的加速器,(3)创建一个量子位寄存器,(4)构造一个编排量子内核编译的程序实例,(5)获取可执行的内核函数或lambda表示编译的内核代码并在附加的加速器上执行它。

  XACC支持多种语言和物理和虚拟硬件实例。 XACC提供了一种编译器实现,可以实现C类Scaffold编程语言中的量子内核编程。该编译器利用Clang / LLVM库扩展,通过量子门操作来扩展LLVM IR。 XACC扩展了该编译器,支持新的构造,如自定义量子函数和源到源翻译(将Scaffold映射到其他语言)。

  XACC提供了一种加速器实现,可以以Rigetti Quantum Virtual Machine(QVM,Forest API)和物理双量子位Rigetti QPU的任何可用语言执行量子内核。这些加速器将XACC IR映射到Quil(Rigetti低级汇编语言),并利用HTTP Rest客户端将编译的量子内核代码发布到Rigetti QVM / QPU驱动程序服务器。 XACC还支持D-Wave QPU,其展示了跨量子计算模型(绝热/量子耦合和门模型量子计算)的这种异构混合编程模型的广泛适用性。 XACC具有编译器和加速器实现功能,可以分别在D-Wave Qubist QPU驱动程序服务器上分别执行二进制优化问题和执行的小图形嵌入。

  XACC提供基础级API,允许计算科学家以熟悉的加速计算模型方式利用量子计算。它为更高级别的数据结构奠定了基础,这些数据结构为访问常见的量子算法提供了一种易于使用的机制。它的核心是开始提供可扩展的软件基础设施,可以作为所有伟大的语言和硬件实现之间的粘合剂,用于量子计算。展望未来,该项目旨在提供一种熟练的机制,以量子加速增强HPC应用,并提供一种机制,用于对后期计算技术进行编程。

0
相关文章