共计 3689 个字符,预计需要花费 10 分钟才能阅读完成。
KY1, Bertran Shao2, Adam Sun
Amazon HERO;2. 开发者生态负责人;3.Solutions Architect
2022.11.17,启科量子正式开源其外部团队研发的量子线路模拟器:QuSprout 软件。联合早前其开源的启科量子编程框架 QuTrunk,开发者能够基于启科的量子计算平台实现真正的量子编程。因为 QuSprout 的性能程度间接影响量子编程计算的效率,而 QuSprout 自身又重大依赖硬件平台。家喻户晓亚马逊云科技是寰球驰名云计算服务提供商,提供了丰盛的硬件平台,故如何将 QuSprout 与亚马逊云科技高性能服务实现有机的交融,将变得十分有意义。明天咱们会将 QuSprout 部署在亚马逊云科技高性能计算(HPC)平台上,并比照剖析 QuSprout 在 CPU 以及 GPU 两种不同硬件平台的计算效率。
1、QuSprout 简介
QuSprout 是启科量子自主研发的一款收费、开源的量子计算模仿后端,用户在 QuTrunk 量子编程框架生成量子线路后,须要连贯到 QuSprout 计算后端来进行模拟计算。
同时,QuSprout 反对多个量子线路的工作治理、MPI 多过程并行计算。目前反对 Kylin,Ubuntu,CentOS 操作系统,反对在 x86,arm64 体系上编译部署,(倡议应用 KylinV10,Ubuntu22.04,CentOS7.9)
量子模仿方面,QuSprout 通过 RPC 与 QuTrunk 量子编程框架连贯,次要负责量子线路的工作治理、
QuSprout 应用 C++ 作为宿主语言,目前曾经实现 40+ 个量子门,包含 H, CH, P, CP, R, CR, Rx, Ry, Rz 等,为量子线路的计算提供了更高的性能和更弱小的灵活性。
QuSprout 曾经反对 CPU 和 GPU 两种类型的硬件平台,目前开源的版本为 CPU 版本,GPU 版本目前还在内测中,置信不久也会实现开源。
2、对于 Amazon HPC 平台
P3 实例:
Amazon EC2 P3 类型实例基于 NVIDIA Tesla V100 Tensor Core GPU,最多反对 8 GPUs,可为用户提供高性能计算平台,反对基于 CUDA 的减速程序,通常用于 HPC 程序、机器学习等场景。
本文采纳 p3.2xlarge 实例作为 QuSprout 底层 GPU 的硬件平台,它为单 GPU 显卡实例,显卡型号为 NVIDIA Tesla V100-SXM2,领有 640 Tensor Cores,5120 CUDA Cores,其双精度浮点(FP64)运算性能可达 7TFLOPS,单精度(FP32)可达 14TFLOPS,具体实例的具体参数如下表所示:
M5 实例:
M5 家族的实例属于计算、内存、带宽绝对平衡的一种资源类型,能够用来作为 web 服务器,计算集群,游戏服务器等。领有 Intel Xeon Platinum 8000 以及 AMD EPYC 7000 系列的 CPU 可供选择。
本文采纳 m5.8xlarge 类型的实例作为 QuSprout 底层 CPU 的硬件平台,它的 CPU 类型为 Intel® Xeon® Platinum 8259CL CPU @ 2.50GHz,具体实例的具体参数如下表所示:
3、部署 QuSprout
首先在 Amazon Console 中申请创立 m5.8xlarge 和 p3.2xlarge 实例,待实例初始化胜利后,可通过 SSH 近程连贯到对应的 EC2 实例。而后从 Github 拉取最新的 QuSprout 代码,依据 README 文档,进行编译和装置即可,整个过程通过脚本执行,简略不便。
最初装置 QuTrunk,因为 QuSprout 是后端的量子线路模拟器,须要与前端量子编程框架 QuTrunk 联结应用。同样从 Github 拉取最新的 QuTrunk 代码,依据 README 文档,通过脚本装置即可。
注:本文测试为了防止网络带宽对计算效率的影响,抉择将 QuTrunk 与 QuSprout 部署在同一个 EC2 实例上。通过在 QuTrunk 中配置 QuSprout 服务程序的 IP 和端口,即可实现两者的通信。
4、测试 QuSprout 性能
QuTrunk 和 QuSprout 部署实现后,就能够进行量子编程的开发了。此处咱们以 grover 搜索算法为例,记录 QuSprout 别离在 m5.8xlarge(CPU)以及 p3.2xlarge(GPU)两个平台上的运行效率,通过模仿不同数量的量子比特,统计相应平台的计算工夫和资源耗费信息。具体内容如下所示:
4.1 grover 搜索算法源码:
"""Grover's search algorithm."""
import math
import random
from numpy import pi
from qutrunk.circuit import QCircuit
from qutrunk.circuit.gates import Measure, All
from qutrunk.circuit.ops import PLUS, QAA
def run_grover(qubits=10, backend=None):
# Quantum qubits
num_qubits = qubits
# Number of amplitudes
num_elems = 2**num_qubits
# Count of iteration
num_reps = math.ceil(pi / 4 * math.sqrt(num_elems))
print("num_qubits:", num_qubits, "num_elems:", num_elems, "num_reps:", num_reps)
# Choose target state randomly
sol_elem = random.randint(0, num_elems - 1)
print(f"target state: |{str(sol_elem)}>")
# Create quantum circuit with local python simulator
circuit = QCircuit(backend=backend, resource=True)
# Allocate quantum qubits
qureg = circuit.allocate(num_qubits)
# Set inital amplitudes to plus state
PLUS * qureg
# Apply quantum operator(gates)
QAA(num_reps, sol_elem) * qureg
# Measure for all qubits
All(Measure) * qureg
# Run circuit in local simulator
res = circuit.run()
# Get measure result and print as int
out = res.get_outcome()
print("measure result:" + str(int(out, base=2)))
# Print quantum circuit resource information
circuit.show_resource()
# Print quantum circuit execution information
print(res.excute_info())
return circuit
if __name__ == "__main__":
# Run locally
circuit = run_grover()
4.2 计算结果:
表 1(CPU(Intel® Xeon® Platinum 8259CL CPU @ 2.50GHz)
表 2(GPU(NVIDIA Tesla V100-SXM2):
依据表 1 和表 2 中的工夫与量子比特数,绘制如下图:
从图表中能够看出,在量子比特模仿数量雷同的状况下 GPU 绝对于 CPU 的计算速度有 6~8 倍的晋升。当然不同实例的价格也不尽相同,在理论开发过程中,开发者能够依据本身的计算工作特点抉择适合的实例类型,从而实现最大化的资源利用。
5、一键式部署
AMI 是亚马逊云科技提供和保护的镜像,它蕴含 EC2 实例创立时须要的所有信息。在启动实例时,需指定 (AMI)。也能够用同一个 AMI 配置启动多个实例。
用户通常能够将生产或者开发环境在 Amazon EC2 实例中进行部署,而后能够创立 EBS-backed AMI,这样就将残缺的环境制作成了镜像,后续再次须要相干环境的 EC2 实例时,就能够间接抉择相应的 AMI 即可。
AMI 的治理也十分不便,能够将其用于启动新实例,也能够在同一 Amazon Region 中复制 AMI,也能够跨 Region 复制,不再须要某个 AMI 时,还能够将其登记。
后续能够将 QuSprout 以及其它相干工具制作成 AMI,并投入 Marketplace,这样量子开发者就能够基于亚马逊云科技更加方便快捷的部署启科量子的软件开发环境,最大水平简化量子编程环境的搭建流程,为开发者提供更敌对开发体验,让量子编程变得不再遥不可及。
作者介绍:
Keith Yan(丘秉宜)中国首位亚马逊云科技 Community Hero。
Bertran Shao(邵伟),启科量子开发者关系负责人,国内首个开源量子计算社区发起者
Adam Sun(孙陆地),启科量子解决方案架构师,GPU 量子线路模仿我的项目负责人编辑文章