QuTrunk 是启科量子自主研制的一款免费、开源、跨平台的量子核算编程结构,包括量子编程 API、量子指令转译、量子核算后端接口等。它供给多种量子核算体会,供给本地量子核算 Python 核算后端,供给 OMP 多线程、MPI 多节点并行、GPU 加速等核算模式。

运用QuTrunk进行量子核算程序的开发能够运用过本地 PC 机建立开发环境,也能够运用亚马逊云上的资源作为开发环境。本文将向用户介绍怎么利用亚马逊云上资源运用QuTrunk+Runtime+QuSaaS+亚马逊云科技进行量子程序编程。下面先扼要介绍 Runtime 东西。

1、Runtime 介绍

用户运用启科量子核算相关软件进行开发,首要需求提取预备好量子编程环境,能不能快速的构建编程环境是吸引开发者进行开发的首要考虑的因素,所以环境布置非常重要,为了简化开发环境布置,下降开发者入门的门槛,启科推出的一款免费、开源的供给运转环境的东西 Runtime。通过 Runtime 能够快速完成启科量子开发相关软件的布置,例如 QuTrunk 量子编程结构,QuSprout 量子模拟后端,另外也支撑第三方量子算法、GPU、随机数卡等环境布置。支撑算法公共库整合,一键装置所需算法组件; 支撑软硬件结合、供给硬件底层库驱动。Runtime 的全体架构如下:

启科 QuTrunk+Runtime+QuSaaS+亚马逊云科技量子计算编程实战

2、亚马逊云科技开发环境预备

运用亚马逊云科技资源进行 QuTrunk 程序开发的全体的流程有如下几个步骤:

启科 QuTrunk+Runtime+QuSaaS+亚马逊云科技量子计算编程实战

2.1 亚马逊云科技开发环境预备

1、登录亚马逊云科技的管理控制台

点击右上角 Region下拉菜单切换到需求创立的资源的 Region,本示例运用亚太新加坡站点的资源。

2、创立 EC2 拜访密钥对

顺次点击服务->核算->EC2 翻开 EC2 的主页面。首要创立好秘钥对便于后面登录到 EC2,顺次点击左侧导航栏的网络与安全->密钥对->创立密钥对。

启科 QuTrunk+Runtime+QuSaaS+亚马逊云科技量子计算编程实战

完成创立后主动下载秘钥,保存好秘钥文件备用。

3、创立实例

咱们在亚马逊云科技上创立好2个测验示例,一个用于 runtime 东西布置,一个用于 QuTrunk 量子程序开发环境。EC2 dashboard 点击右侧导航栏实例,然后点击实例翻开实例创立页面,挑选启动新实例。

启科 QuTrunk+Runtime+QuSaaS+亚马逊云科技量子计算编程实战

翻开创立实例的界面,确定实例称号,选项 Ubuntu20.04 镜像,创立新的安全组添加本地核算机拜访的网段,flavor 挑选 t2.medium,并挑选都启用公网 IP。分别创立出 Runtime 主机和 QuTrunk 主机。

启科 QuTrunk+Runtime+QuSaaS+亚马逊云科技量子计算编程实战

2.2 Runtime 装置

1、运用秘钥文件登录到 Runtime 装置主机选中 runtime 主机,右键挑选链接,挑选 ssh 客户端

仿制拜访指令:ssh -i "qutrunk-demo.pem" ubuntu@ec2-18-141-236-126.ap-southeast-1.compute.amazonaws.com

2、从 Runtime 官网下载链接下载装置包,然后解压,进入解压目录下履行 INSTALL.sh 装置,装置完成后查看 runtime 装置成果

#下载装置包
wget -c  http://nexus.queco.cn/repository/qudoor-raw/runtime/0.0.1/runtime_v0.0.1_1223_amd64.tar.gz
# 解压装置包
tar zxvf runtime_release_v0.0.1_amd64.tar.gz
cd runtime_release_v0.0.1_amd64
#运转装置脚本
/bin/bash INSTALL.sh
#待装置完成后,查看Runtime运转状况
rtctl status

显现状况为 healthy 即为装置成功。

启科 QuTrunk+Runtime+QuSaaS+亚马逊云科技量子计算编程实战

2.3 运用 Runtime 主动化布置 QuTrunk

QuTrunk 的布置装置有一些前置条件,不同 OS 下装备和装置这些前置条件比较繁琐,Runtime 主动化东西能够处理这些问题,能够将 QuTrunk 布置所需求依靠的相关软件一同布置上,例如 python3 环境,python3-pip 等,便利用户更快的建立好 dev 环境。具体的主动化布置布置如下:

1、环境信息装备

首要将需布置 QuTrunk 的主机信息天填写到 runtime 的装备文件:/opt/runtime/conf/hosts.hostname.ini。vim 编辑此文件,修正目标 runtime 环境装置主机的 ip、拜访端口、暗码以及履行机的 nexus 拜访地址,node1 是终究 runtime 主机将 QuTrunk 主机修正的主机名,能够直接填写为 Amazon EC2 的主机名,也能够自定义为其他称号。ansible_ssh_host是需求装置 QuTrunk 主机的 IP,ansible_ssh_pass为登录的账号的暗码,Registry_hostname是 Runtime 主机。装备文件类似如下:

2、列出能够履行的装置软件

rtctl list

启科 QuTrunk+Runtime+QuSaaS+亚马逊云科技量子计算编程实战

3、挑选 Qurunk 的装置的 playbook,履行主动化装置,指令如下:

rtctl run --playbook 02-qutrunk

4、QuTrunk 装置验证

登录到装置了 QuTrunk 的亚马逊云科技主机,履行 QuTrunk 装置后的查看,如下:

启科 QuTrunk+Runtime+QuSaaS+亚马逊云科技量子计算编程实战

2.4 QuSaaS 注册运用

2.4.1 注册 QuSaaS 账号

登录 QuSasS 网站:developer.queco.cn/点击右上角注册按钮,完成注册

启科 QuTrunk+Runtime+QuSaaS+亚马逊云科技量子计算编程实战

2.4.2 购买 QuTrunk 云服务接口

登录账号后,点击 API 服务->QuTrunk 云接口->价格套餐->免费运用->立即购买,新注册用户供给一些调用额度。

启科 QuTrunk+Runtime+QuSaaS+亚马逊云科技量子计算编程实战

点击右上角个人用户名,挑选个人中心,翻开个人中心页面

启科 QuTrunk+Runtime+QuSaaS+亚马逊云科技量子计算编程实战

挑选我的 API,能够查询当前账号下的 API 信息,点击 QuTrunk 云接口前面的加号能够翻开此接口的详细信息。如下:

启科 QuTrunk+Runtime+QuSaaS+亚马逊云科技量子计算编程实战

2.4.3 创立运用,或者 API 拜访 AK/SK

点击右上角登录账号翻开下拉菜单,挑选我的运用,然后点击创立运用,填写运用称号和运用描绘,最终点击确定完成运用创立

启科 QuTrunk+Runtime+QuSaaS+亚马逊云科技量子计算编程实战

运用创立后,将以列表的方式展现在我的运用页面,通过此页面能够查询运用的 AK/SK 信息,展现信息如下:

启科 QuTrunk+Runtime+QuSaaS+亚马逊云科技量子计算编程实战

运用 QuTrunk 编程运用 QuSaaS 后端调用 Amazon Braket 资源需求运用到此 AK/SK 认证授权。

3、Demo 程序开发

demo 程序选用经典的 bell_pair算法,程序命名为 qutrunk-qusaas-demo.py。 首要导入 qutrunk 程序开发运用到的模块,demo 程序中运用 QuSaaS 后端,代码如下

from qutrunk.backends import BackendQuSaas
from qutrunk.circuit import QCircuit
from qutrunk.circuit.gates import CNOT, H, Measure
然后,设置QuSaaS拜访AK和SK。
ak = "QuSaaS上创立运用生成的Api key"
sk = "QuSaaS上创立运用生成的Api Secret"
# use BackendQuSaas
be = BackendQuSaas(ak, sk)

创立 bell 电路,并履行门操作和测量,并打印状况向量

circuit = QCircuit(be)
qr = circuit.allocate(2)
# apply gate
H * qr[0]
CNOT * (qr[0], qr[1])
circuit.print()
circuit.draw(line_length=300)
print(circuit.get_prob(0))
print(circuit.get_probs())
print(circuit.get_statevector())
Measure * qr[0]
Measure * qr[1]

最终运转电路,并打印成果

res = circuit.run(shots=100)
print(res.get_counts())
print(res.running_info())

输出成果如下:

$ python3 qutrunk-qusaas_demo.py
qreg q[2]
creg c[2]
H * q[0]
MCX(1) * (q[0], q[1])
      ┌───┐
q[0]: ┤ H ├──■───
      └───┘┌─┴──┐
q[1]: ─────┤ CX ├
           └────┘
 c: 2/═══════════
0.4999999999999999
[{'idx': 0, 'prob': 0.4999999999999999}, {'idx': 1, 'prob': 0.0}, {'idx': 2, 'prob': 0.0}, {'idx': 3, 'prob': 0.4999999999999999}]
[0.70710678+0.j 0.        +0.j 0.        +0.j 0.70710678+0.j]
[{"0b00": 52}, {"0b11": 48}]
{"backend": "BackendQuSaas", "task_id": "dde06445761e43258589f041b745f428", "status": "success", "arguments": {"shots": 100}}

4、总结

本文从 Runtime 的装置到利用 Runtime 主动化装置 QuTrunk,以及在亚马逊云科技环境上怎么利用 QuTrunk 开发量子核算程序,并且运用 QuSaaS 后端,从全流程上向读者展现了整个实战过程。该 Demo 程序利用了亚马逊云上的资源便利性,也充沛展现了启科量子核算软件的灵活扩展性。开发者不仅能便利在本地环境开发,也能够在云上快速通过启科供给的主动化东西 Runtime 快速布置开发环境,还能够运用多种核算后端,帮助开发者快速的开发出自己的量子核算程序。本文仅仅通过一个 bell_pair 示例程序动身进行解说整个开发过程和开发办法,期望能给开发者带来必定的启示。后续还会从其他的维度来展现启科 QuTrunk 及相关的编程实战指导和技巧。

作者:

启科 QuTrunk+Runtime+QuSaaS+亚马逊云科技量子计算编程实战

Keith Yan(丘秉宜)中国首位亚马逊云科技 Community Hero。

启科 QuTrunk+Runtime+QuSaaS+亚马逊云科技量子计算编程实战

Bertran Shao(邵伟),启科量子开发者关系负责人,国内首个开源量子核算社区发起者

启科 QuTrunk+Runtime+QuSaaS+亚马逊云科技量子计算编程实战

黄文,启科量子DEVOPS工程师

启科 QuTrunk+Runtime+QuSaaS+亚马逊云科技量子计算编程实战

Marz Kuo(郭梦杰),启科量子资深研制工程师,量子核算开源结构维护人

阅读原文:dev.amazoncloud.cn/column/arti…

启科 QuTrunk+Runtime+QuSaaS+亚马逊云科技量子计算编程实战