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

news2024/10/6 1:45:58

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

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

1、Runtime 介绍

用户使用启科量子计算相关软件进行开发,首先需要提取准备好量子编程环境,能不能快速的构建编程环境是吸引开发者进行开发的首要考虑的因素,所以环境部署非常重要,为了简化开发环境部署,降低开发者入门的门槛,启科推出的一款免费、开源的提供运行环境的工具 Runtime。通过 Runtime 可以快速实现启科量子开发相关软件的部署,例如 QuTrunk 量子编程框架,QuSprout 量子模拟后端,另外也支持第三方量子算法、GPU、随机数卡等环境部署。支持算法公共库整合,一键安装所需算法组件; 支持软硬件结合、提供硬件底层库驱动。Runtime 的整体架构如下:

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

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

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

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

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

2、创建 EC2 访问密钥对

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

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

3、创建实例

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

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

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 即为安装成功。

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

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

rtctl run --playbook 02-qutrunk

4、QuTrunk 安装验证

登录到安装了 QuTrunk 的亚马逊云科技主机,执行 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 后端调用 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 及相关的编程实战指导和技巧。

作者:

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

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

黄文,启科量子DEVOPS工程师

Marz Kuo(郭梦杰),启科量子资深研发工程师,量子计算开源框架维护人

阅读原文:https://dev.amazoncloud.cn/column/article/63d5e819e374e94f69402524

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/183335.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

操作系统权限提升(一)之操作系统权限介绍

前言 操作系统权限提升简称提权,顾名思义就是提升自己在目标系统中的权限。现在的操作系统都是多用户操作系统,用户之间都有权限控制,比如通过Web漏洞拿到的是web进程的权限,往往Web服务都是以一个权限很低的账号启动的,因此通过 Webshell进行一些操作会受到限制,这就需要将其…

Leetcode力扣秋招刷题路-0094

从0开始的秋招刷题路,记录下所刷每道题的题解,帮助自己回顾总结 94. 二叉树的中序遍历(Easy) 给定一个二叉树的根节点 root ,返回它的 **中序 **遍历。 示例 1: 输入:root [1,null,2,3] 输出…

无线网络概论_4

成帧细节 数据帧:好比802.11中的驮马,负责在工作站直接板运输数据。控制帧:通常能够与数据帧搭配使用,负责区域的清空,信道的取得以及载波监听的维护并于收到数据时给予肯定确认,借此来增加数据传输的可靠…

垃圾收集器必问系列—CMS

本文已收录至Github,推荐阅读 👉 Java随想录 应该相信,自己是生活的战胜者。——雨果 文章目录CMS简介运作过程CMS的缺陷处理器资源敏感无法处理“浮动垃圾”内存碎片纵观全书《深入理解JVM虚拟机》第三版,在垃圾回收器这一篇章&a…

CMakelists.txt简单介绍

先祝大家开工大吉,这篇策划一下CMakelists.txt,它依托在Cmake里,在大型工程、平台兼容方面非常好用的C项目编译工具,再此先对它做一个简短的介绍。 目录 一、CMakelists.txt简介 二、使用示例 三、总结 一、CMakelists.txt简介…

Eclipse swt环境搭建

通过Eclipse Marketplace安装打开eclipse,点击help,在弹出的框中,选择Eclipse Marketplace。如下所示。。。搜索windows 安装插件一、创建一个SWT项目点击左上角的File - > New -> Other...进入后搜索SWT ,选中在WindowBuilder下的SWT …

CnOpenData中国彩票销售数据

一、数据简介 彩票是一种编有号码的证券,按票面价格出售。开奖后,持有中奖号码奖券的,可按规定领奖。它是一种建立在机会均等基础上的、具有公平竞争特征的娱乐游戏。国家发行彩票的目的是筹集社会公众资金,资助福利、体育等社会公…

springboot中整合mybatis及简单使用

springboot中整合mybatis及简单使用1.引入依赖2.在applicaiton.yaml中配置数据源以及mybatis3.创建sql测试表4.编写mapper接口和mapper.xml文件4.1 mapper接口4.2 mapper.xml4.3 mybatisX快速开发插件5.创建service层和controller层5.1 创建service层5.2 创建controller层6.项目…

[网鼎杯 2018]Fakebook

目录 信息收集 代码审计 思路 解法一(非预期解) 解法二(预期解) 信息收集 目录扫描代码泄露扫描 robots.txt;flag.php;login.php;user.php;view.php;join.php; 直接打开flag.php后没有回显,应该需要通过ssrf来访…

Qt音视频开发12-easyplayer内核

一、前言 在视频监控行业经常看到两个厂家广告打得比较厉害,一个是青犀视频对应easyplayer,一个是大牛直播,两个最初都是sdk免费,并提供调用示例源码,后面大牛直播的sdk以及示例都无法运行,目前就剩下免费…

Word处理控件Aspose.Words功能演示:如何在 C# .NET 中将 PNG、JPG 转换为 Word

Aspose.Words 是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word。此外, Aspose API支持流行文件格式处…

git push clone 参数具体解析

1 问题背景 git远程仓库有很多命令,但是教程里面讲解的都是特别模糊的。 2 命令实例解析 2.1 git branch -vv -a命令具体解析 在开始下面的命令解析之前,我们一定要学会git branch -vv -a这个命令,这个是查询本地仓库远程仓库跟踪关系最全…

《从0开始学大数据》之ZooKeeper是如何保证数据一致性的

背景 在分布式集群系统中,比如两个应用程序都需要对一个文件路径进行写操作,但是如果两个应用程序对于哪台服务器是主服务器的判断不同,就会分别连接到两个不同的 NameNode 上,并都得到了对同一个文件路径的写操作权限&#xff0…

振弦采集模块配置工具VMTool 扩展功能指令生成器与实时曲线

振弦采集模块配置工具VMTool 扩展功能指令生成器与实时曲线 指令生成器 ( 1) 指令生成 指令生成器可根据需要生成符合 MODBUS 和 AABB 通讯协议的读取和控制指令。 通过点击串口调试工具内的【 指令生成器】 按钮,可打开指令生成器窗口&#…

【SpringBoot高级篇】SpringBoot集成XXL-JOB分布式任务调度平台

【SpringBoot高级篇】SpringBoot集成XXL-JOB分布式任务调度平台简介下载源码部署任务调度平台执行SQL脚本部署任务平台简单使用初始化测试项目pom依赖SampleXxlJob修改配置调度平台配置执行器任务管理添加任务简介 XXL-JOB是一个分布式任务调度平台,其核心设计目标…

连续函数的运算与初等函数的连续性——“高等数学”

各位CSDN的uu们你们好呀,今天,小雅兰的内容是连续函数的运算与初等函数的连续性,上篇博客我们学到了函数的连续性和间断点,这篇博客相当于是上篇博客的一个补充,好吧,现在就让我们进入高等数学的世界吧 一、…

【刷题】不用加减乘除做加法

这是一道简单的数学题。但是比较繁琐,需要有耐心。 目录 前言 一、找规律 二、怎么实现加法? 总结 前言 这道题不让用四则运算符做加法,于是我第一反应是用位运算。 难道转成二进制再使用位运算吗,显然不需要,列草稿可…

Java 开发环境配置 “JDK”(超详细整理,适合新手入门)

前言 📜 “ 作者 久绊A ” 专注记录自己所整理的Java、web、sql等,IT技术干货、学习经验、面试资料、刷题记录,以及遇到的问题和解决方案,记录自己成长的点滴 目录 前言 一、什么是JDK? 1、大概介绍 2、详细介绍 …

MySQL进阶——触发器

1.触发器定义 同存储过程和函数类似,MySQL中的触发器也是存储在系统内部的一段程序代码,可以把它看作是一个特殊的存储过程。所不同的是,触发器无需人工调用,当程序满足定义条件时就会被MySQL自动调用。这些条件可以称为触发事件…

Weapp影视评分项目开发(04):三方组件的使用

知识点 三方组件库的安装与使用 computed 的安装与使用 新建代码分支 我们以 master 为基准,在 gitee 上新建代码分支 component,并在该分支上进行代码开发。命令如下: git pull // 拉取 component 分支 git checkout component // 切换到…