基于 MindQuantum 实现对 “天衍” 量子云平台真机的比特映射

MindQuantum 目前只支持量子模拟器,如果需要获得量子算法在真机上的实测数据,可以借助“天衍”量子云平台提供的真机。本文将介绍如何基于 MindQuantum 绘制“天衍”真机的拓扑图,并进而实现比特映射。

关于 MindQuantum 涉及比特映射的教程可参考 比特映射。而 Cqlib 的使用可参考 Cqlib 入门教程 。

1. 获取真机参数

在绘制拓扑图之前,需要先获取真机的参数。如何获取,以及参数的形式,可参考我之前的一篇文章 如何本地查看“天衍”云平台真机参数?

下面以绘制 tianyan24 的拓扑图为例。官方给出的真实拓扑图如下图所示。
在这里插入图片描述

from cqlib import TianYanPlatform
from mindquantum.device import QubitsTopology, QubitNodelogin_key = "your_key"## 构造 tianyan24 拓扑图
platform = TianYanPlatform(login_key=login_key, machine_name="tianyan24")
config = platform.download_config() # 下载参数

2. 提取有效耦合边

从真机参数中,将可用的耦合提取出来。

couplers_map: dict = config['overview']['coupler_map'] # {'G0':['Q1', 'Q0'], ...}
disable_couplers = config['disabledCouplers'].split(",") # ['G0', ...] # 不能用的耦合
for Gi in disable_couplers: couplers_map.pop(Gi) # 删掉不能用的耦合couplers = [] # [[4,3], ..]
for k, v in couplers_map.items():couplers.append([int(v[0][1:]), int(v[1][1:])])print(couplers)
[[4, 3], [5, 4], [6, 5], [7, 6], [8, 7], [9, 8], [15, 3], [16, 4], [17, 5], [18, 6], [19, 7], [20, 8], [21, 9], [23, 11], [13, 12], [16, 15], [17, 16], [18, 17], [19, 18], [20, 19], [21, 20], [22, 21], [23, 22]]

3. 创建并填充拓扑图

由于 tianyan24 具有 24 个物理比特,拓扑结构为 2 × 12 2\times12 2×12,所以基于 MindQuantum 先创建一个只有 24 个物理比特而无连线的拓扑图,并将可用耦合逐个填充进去。

topology = QubitsTopology([QubitNode(i, poi_x=i%12, poi_y=i>=12) for i in range(24)])for pair in couplers:topology[pair[0]] >> topology[pair[1]] # type:ignoretopology.show()

在这里插入图片描述

4. 删除不可用的物理比特

有一些物理比特是不可用的,我们需要进一步将其从拓扑图中删除。

# 删除不可用的物理比特
disable_qubits = [int(item[1:]) for item in config['disabledQubits'].split(",")]
for i in disable_qubits:topology.remove_qubit_node(i)topology.show()

在这里插入图片描述
此时,得到的拓扑图就与官方图一致了。
类似地,我们进一步处理 tianyan176 和 tianyan176-2 这两个 66 量子比特的真机拓扑图。

## 构造 tianyan176 拓扑图from cqlib import TianYanPlatform
from mindquantum.device import QubitsTopology, QubitNodelogin_key = "your_key"
machine_name = "tianyan176"
platform = TianYanPlatform(login_key=login_key, machine_name=machine_name)config = platform.download_config() # 下载参数couplers_map: dict = config['overview']['coupler_map'] # {'G0':['Q1', 'Q0'], ...}
disable_couplers = config['disabledCouplers'].split(",") # ['G0', ...]
for Gi in disable_couplers: # 删掉不能用的耦合couplers_map.pop(Gi)couplers = [] # [[4,3], ..]
for k, v in couplers_map.items():couplers.append([int(v[0][1:]), int(v[1][1:])])topology = QubitsTopology([QubitNode(i, poi_x = 2*(i%6)+(1-(i//6)%2), poi_y = i//6) for i in range(66)])for pair in couplers:topology[pair[0]] >> topology[pair[1]] # type:ignore# 删除不可用的物理比特
disable_qubits = [int(item[1:]) for item in config['disabledQubits'].split(",")]for i in disable_qubits:topology.remove_qubit_node(i)topology.show()

在这里插入图片描述

## 构造 tianyan176-2 拓扑图from cqlib import TianYanPlatform
from mindquantum.device import QubitsTopology, QubitNodelogin_key = "your_key"
machine_name = "tianyan176-2"
platform = TianYanPlatform(login_key=login_key, machine_name=machine_name)config = platform.download_config() # 下载参数couplers_map: dict = config['overview']['coupler_map'] # {'G0':['Q1', 'Q0'], ...}
disable_couplers = config['disabledCouplers'].split(",") # ['G0', ...]
for Gi in disable_couplers: # 删掉不能用的耦合couplers_map.pop(Gi)couplers = [] # [[4,3], ..]
for k, v in couplers_map.items():couplers.append([int(v[0][1:]), int(v[1][1:])])topology = QubitsTopology([QubitNode(i, poi_x = 2*(i%6)+(1-(i//6)%2), poi_y = i//6) for i in range(66)])for pair in couplers:topology[pair[0]] >> topology[pair[1]] # type:ignore# 删除不可用的物理比特
disable_qubits = [int(item[1:]) for item in config['disabledQubits'].split(",")]for i in disable_qubits:topology.remove_qubit_node(i)topology.show()

在这里插入图片描述
最后,我们将上述功能封装为一个函数,从而可一键生成想要的拓扑图。

## 构造 tianyan176 拓扑图from cqlib import TianYanPlatform
from mindquantum.device import QubitsTopology, QubitNodelogin_key = "your_key"def get_topology(machine_name:str):"""根据给定的真机名称,自动下载参数,并生成拓扑图。machine_name 可选:'tianyan24', 'tianyan176', 'tianyan176-2'。"""platform = TianYanPlatform(login_key=login_key, machine_name=machine_name)config = platform.download_config() # 下载参数couplers_map: dict = config['overview']['coupler_map'] # {'G0':['Q1', 'Q0'], ...}disable_couplers = config['disabledCouplers'].split(",") # ['G0', ...]for Gi in disable_couplers: # 删掉不能用的耦合couplers_map.pop(Gi)couplers = [] # [[4,3], ..]for k, v in couplers_map.items():couplers.append([int(v[0][1:]), int(v[1][1:])])if "176" in machine_name:topology = QubitsTopology([QubitNode(i, poi_x = 2*(i%6)+(1-(i//6)%2), poi_y = i//6) for i in range(66)])else:topology = QubitsTopology([QubitNode(i, poi_x=i%12, poi_y=i>=12) for i in range(24)])for pair in couplers:topology[pair[0]] >> topology[pair[1]] # type:ignore# 删除不可用的物理比特disable_qubits = [int(item[1:]) for item in config['disabledQubits'].split(",")]for i in disable_qubits:topology.remove_qubit_node(i)return topologytopology = get_topology("tianyan24")
topology.show()

在这里插入图片描述

比特映射

在绘制完拓扑图之后,即可参照教程 比特映射 对量子算法实行比特映射,进而在硬件上执行获得实测数据。

注意:在实际测试中,使用上面构造的拓扑图进行比特映射时,会出现崩溃,目前尚未搞清原因所在。希望读者在参照本文实操时,我或者 MindQuantum 团队已经修复了该 bug。

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

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

相关文章

2025客服知识库工具推荐哪些?

在2025年,企业对于客服知识库工具的需求日益增长,这些工具不仅能够提升客户服务的效率和质量,还能增强客户满意度和忠诚度。以下是几款备受推崇的客服知识库工具。 1. HelpLook AI知识库 HelpLook AI知识库是一款企业级AI知识库系统&#x…

Docker运行hello-world镜像出现错误

错误类型&#xff1a; 解决方案&#xff1b; 配置加速地址&#xff1a;设置registry mirror sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-EOF {"registry-mirrors": ["https://do.nark.eu.org","https://dc.j8.work"…

西南大学软件工程考研录取情况分析

西南大学软件工程学硕近三年呈现出招生规模稳定、复试线稳中有升的特点。2024届实际录取8人&#xff0c;复试分数线305分&#xff0c;复试录取率67%&#xff0c;相比去年复试线略有下降但仍高于2022届&#xff0c;显示出温和的竞争态势。 详细分析 1. 统招录取人数分析 2022-…

【测试工具JMeter篇】JMeter性能测试入门级教程(八):JMeter参数关联

JMeter参数关联&#xff0c;就是请求或者线程之间通过传递参数建立联系。一般&#xff0c;我们将一个请求的响应参数&#xff0c;作为另一个请求的入参。比如登录后的操作&#xff0c;第一步用来实现登录操作&#xff0c;然后将请求返回的token提取出来保存到某一个变量当中&am…

运算符重载(五)

目录 const成员函数const对象不可以调用非const成员函数非const对象可以调用const成员函数const成员函数内不可以调用其它的非const成员函数非const成员函数内可以调用其它的const成员函 取地址及const取地址操作符重载const补充场景1场景2场景3场景4 const成员函数 将const修…

论文阅读笔记:Adaptive Rotated Convolution for Rotated Object Detection

论文阅读笔记&#xff1a;Adaptive Rotated Convolution for Rotated Object Detection 1 背景1.1 问题1.2 提出的方法 2 创新点3 方法4 模块4.1 旋转卷积核4.2 路由函数4.3 自适应旋转卷积模块 5 效果5.1 与SOTA方法对比5.2 消融实验 论文&#xff1a;https://arxiv.org/pdf/2…

OPenCV 图片局部放大

m_image cv::imread("C:/Code/JPG/1.jpg");if (m_image.empty()) return;cv::imshow("原始图像", m_image); // TODO: 在此添加控件通知处理程序代码int width m_image.cols;int height m_image.rows;// 确定要放大的区域&#xff08;这里是图像中心部分…

SpringBoot项目启动报错-Slf4j日志相关类找不到

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

剧本杀门店预约系统开发,助力门店业务升级

剧本杀门店系统是一个统一管理门店的应用程序&#xff0c;能够让消费者通过系统与好友组局预订剧本杀游戏&#xff0c;节省到线下门店排队预约的时间&#xff0c;提高玩家的游戏体验感。同时商家也可以借助小程序高效管理、运营门店&#xff0c;提高门店的整体服务质量。 小程…

c语言指针练习

1.已知数组a[10]和b[10]中元素的值递增有序&#xff0c;用指针实现将两个数组中的元素按递增的顺序输出。 #include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, const char *argv[]) {int a[10]{1,3,5,7,9,11,13,15,17,19};int…

MYSQL中的增删改查操作(如果想知道MYSQL中有关增删改查操作的知识,那么只看这一篇就足够了!)

前言&#xff1a;在 MySQL 中&#xff0c;增、删、改、查&#xff08;CRUD&#xff09;操作是基本的数据库操作&#xff0c;增操作&#xff08;INSERT&#xff09;用于插入数据&#xff0c;删操作&#xff08;DELETE&#xff09;用于删除数据&#xff0c;改操作&#xff08;UPD…

代码随想录-算法训练营day36(贪心算法06:单调递增的数字,监控二叉树,总结)

第八章 贪心算法 part06● 738.单调递增的数字 ● 968.监控二叉树 ● 总结 详细布置 738.单调递增的数字 https://programmercarl.com/0738.%E5%8D%95%E8%B0%83%E9%80%92%E5%A2%9E%E7%9A%84%E6%95%B0%E5%AD%97.html 968.监控二叉树 &#xff08;可以跳过&#xff09;本题是…

NeurIPS Spotlight|从分类到生成:无训练的可控扩散生成

近年来&#xff0c;扩散模型&#xff08;Diffusion Models&#xff09;已成为生成模型领域的研究前沿&#xff0c;它们在图像生成、视频生成、分子设计、音频生成等众多领域展现出强大的能力。然而&#xff0c;生成符合特定条件&#xff08;如标签、属性或能量分布&#xff09;…

Neo4j:图数据库使用入门

文章目录 一、Neo4j安装1、windows安装&#xff08;1&#xff09;准备环境&#xff08;2&#xff09;下载&#xff08;3&#xff09;解压&#xff08;4&#xff09;运行&#xff08;5&#xff09;基本使用 2、docker安装 二、CQL语句1、CQL简介2、CREATE 命令&#xff0c;创建节…

声音克隆GPT-SoVITS

作者&#xff1a;吴业亮 博客&#xff1a;wuyeliang.blog.csdn.net 一、原理介绍 GPT-SoVITS&#xff0c;作为一款结合了GPT&#xff08;生成预训练模型&#xff09;和SoVITS&#xff08;基于变分信息瓶颈技术的歌声转换&#xff09;的创新工具&#xff0c;正在声音克隆领域掀…

嵌入式Linux,标准I/O探究,函数相关详解。

标准 I/O 虽然是对文 件 I/O 进行了封装&#xff0c;但事实上并不仅仅只是如此&#xff0c;标准 I/O 会处理很多细节&#xff0c;譬如分配 stdio 缓冲区、以优化的块长度执行 I/O 等。 1.标准 I/O 库介绍 通常标准 I/O 库函数相关的函数定义都在头文件 <stdio.h&g…

github使用SSH进行克隆仓库

SSH 密钥拉取git 查询密钥是否存在 s -al ~/.ssh这个文件夹下 known_hosts 就是存在的密钥文件 创建密钥文件 ssh-keygen -t rsa -b 4096 -C "testtt.com"-t rsa 是 rsa 算法加密 -b 是指定密钥的长度&#xff08;以位为单位&#xff09;。 -C 是用于给密钥添加注…

江铃集团新能源携四款车型亮相香港车展,国际化布局成果显著

12月5日&#xff0c;2024年香港国际汽车博览会&#xff08;香港车展&#xff09;盛大开幕&#xff0c;来自全球上百个品牌齐聚一堂&#xff0c;上演了一场汽车盛筵。江铃集团新能源作为自主品牌的代表车企之一&#xff0c;持续推进国际化布局&#xff0c;为了满足不同地区用户的…

使用Unity脚本模拟绳索、布料(碰撞)

效果演示&#xff1a; 脚本如下&#xff1a; using System.Collections; using System.Collections.Generic; using UnityEngine;namespace PhysicsLab {public class RopeSolver : MonoBehaviour {public Transform ParticlePrefab;public int Count 3;public int Space 1;…

大数据-242 离线数仓 - 电商核心交易 数据导入 全量数据导入方案 产品分类、商家店铺、地域组织

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; Java篇开始了&#xff01; 目前开始更新 MyBatis&#xff0c;一起深入浅出&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff0…