前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >QuTrunk+Runtime+QuSaaS+AWS量子计算编程实战

QuTrunk+Runtime+QuSaaS+AWS量子计算编程实战

作者头像
量子发烧友
发布2023-03-08 10:32:14
8350
发布2023-03-08 10:32:14
举报
文章被收录于专栏:量子发烧友量子发烧友

点击上方↑↑↑“量子发烧友”关注我

概述

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

使用QuTrunk进行量子计算程序的开发可以使用过本地PC机搭建开发环境,也可以使用AWS云上的资源作为开发环境。本文将向用户介绍如何利用AWS云上资源使用QuTrunk+Runtime+QuSaaS+AWS进行量子程序编程。下面先简要介绍Runtime工具。

1、Runtime介绍

用户使用启科量子计算相关软件进行开发,首先需要提取准备好量子编程环境,能不能快速的构建编程环境是吸引开发者进行开发的首要考虑的因素,所以环境部署非常重要,为了简化开发环境部署,降低开发者入门的门槛,启科推出的一款免费、开源的提供运行环境的工具Runtime。

通过Runtime 可以快速实现启科量子开发相关软件的部署,例如QuTrunk量子编程框架,QuSprout量子模拟后端,另外也支持第三方量子算法、GPU、随机数卡等环境部署。支持算法公共库整合,一键安装所需算法组件; 支持软硬件结合、提供硬件底层库驱动。Runtime的整体架构如下:

2、AWS开发环境准备

使用AWS资源进行QuTrunk程序开发的整体的流程有如下几个步骤:

2.1 AWS开发环境准备

1、登录AWS的管理控制台,点击右上角Region下拉菜单切换到需要创建的资源的Region,本示例使用亚太新加坡站点的资源。

2、创建EC2访问密钥对

依次点击服务->计算->EC2打开EC2的主页面。首先创建好秘钥对便于后面登录到EC2,依次点击左侧导航栏的网络与安全->密钥对->创建密钥对。

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

3、创建实例

我们在AWS上创建好2个测试示例,一个用于runtime工具部署,一个用于QuTrunk量子程序开发环境。EC2 dashboard点击右侧导航栏实例,然后点击实例打开实例创建页面,选择启动新实例。

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

2.2 Runtime安装

1、使用秘钥文件登录到Runtime安装主机

选中runtime主机,右键选择链接,选择ssh客户端

复制访问命令:

代码语言:javascript
复制
ssh -i "qutrunk-demo.pem" ubuntu@ec2-18-141-236-126.ap-southeast-1.compute.amazonaws.com

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

代码语言:javascript
复制
#下载安装包
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即为安装成功。

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主机修改的主机名,可以直接填写为AWS EC2的主机名,也可以自定义为其他名称。ansible_ssh_host是需要安装QuTrunk主机的IP,ansible_ssh_pass为登录的账号的密码,Registry_hostname是Runtime主机。配置文件类似如下:

2、列出可以执行的安装软件

代码语言:javascript
复制
rtctl list

3、选择Qurunk的安装的playbook,执行自动化安装,命令如下:

代码语言:javascript
复制
rtctl run --playbook 02-qutrunk

4、QuTrunk安装验证

登录到安装了QuTrunk的AWS主机,执行QuTrunk安装后的检查,如下:

2.4 QuSaaS注册应用

2.4.1 注册QuSaaS账号

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

2.4.2 购买QuTrunk云服务接口

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

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

选择我的API,可以查询当前账号下的API信息,点击QuTrunk云接口前面的加号可以展开此接口的详细信息。如下:

2.4.3 创建应用,或者API访问AK/SK

点击右上角登录账号打开下拉菜单,选择我的应用,然后点击创建应用,填写应用名称和应用描述,最后点击确定完成应用创建

应用创建后,将以列表的形式展示在我的应用页面,通过此页面可以查询应用的AK/SK信息,展示信息如下:

使用QuTrunk编程使用QuSaaS后端调用AWS Braket资源需要使用到此AK/SK认证授权。

3、Demo程序开发

demo程序选用经典的bell_pair算法,程序命名为qutrunk-qusaas-demo.py。

首先导入qutrunk程序开发使用到的模块,demo程序中使用QuSaaS后端,代码如下

代码语言:javascript
复制
from qutrunk.backends import BackendQuSaas
from qutrunk.circuit import QCircuit
from qutrunk.circuit.gates import CNOT, H, Measure

然后,设置QuSaaS访问AK和SK。

代码语言:javascript
复制
ak = "QuSaaS上创建应用生成的Api key"
sk = "QuSaaS上创建应用生成的Api Secret"
# use BackendQuSaas
be = BackendQuSaas(ak, sk)

创建bell电路,并执行门操作和测量,并打印状态向量

代码语言:javascript
复制
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]

最后运行电路,并打印结果

代码语言:javascript
复制
res = circuit.run(shots=100)

print(res.get_counts())
print(res.running_info())

输出结果如下:

代码语言:javascript
复制
$ 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,以及在AWS环境上如何利用QuTrunk开发量子计算程序,并且使用QuSaaS后端,从全流程上向读者展示了整个实战过程。该Demo程序利用了AWS云上的资源便利性,也充分展示了启科量子计算软件的灵活扩展性。开发者不仅能方便在本地环境开发,也可以在云上快速通过启科提供的自动化工具Runtime快速部署开发环境,还可以使用多种计算后端,帮助开发者快速的开发出自己的量子计算程序。

本文只是通过一个bell_pair示例程序出发进行讲解整个开发过程和开发方法,希望能给开发者带来一定的启发。后续还会从其他的维度来展示启科QuTrunk及相关的编程实战指导和技巧。

— 完 —

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-01-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 量子发烧友 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 点击上方↑↑↑“量子发烧友”关注我
相关产品与服务
弹性公网 IP
弹性公网 IP(Elastic IP,EIP)是可以独立购买和持有,且在某个地域下固定不变的公网 IP 地址,可以与 CVM、NAT 网关、弹性网卡和高可用虚拟 IP 等云资源绑定,提供访问公网和被公网访问能力;还可与云资源的生命周期解耦合,单独进行操作;同时提供多种计费模式,您可以根据业务特点灵活选择,以降低公网成本。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档