Qiskit API架构介绍(一)

2023-11-19

API是一组类、函数和数据结构,用于与设备和模拟器进行接口,并运行实验。

Qiskit实验概述

Qobj中的实验序列定义了运行在后端backend上的量子操作。单个Qobj定义了一批要并发运行的实验,即, Qobj中每个实验按列出的顺序运行一个shot,重复整个实验序列,直到收集到指定的shot数量。有两种语言可以表达这些序列,OpenQASMOpenPulse
OpenQASM是操作在门、度量和条件方面的抽象表示。
OpenPulse定义了操作和测量的连续timedynamics,即,脉冲pulse应用于backend。
在实验中,量子位元的测量值以两种存储方式存储在后端:慢速存取存储器( slow access memory)快速存取寄存器(fast access register)
内存(Memory)是由用户动态调整大小的,并且假设大小没有限制。它是在实验结束时通过结果数据对象读出的。在OpenQASM实验中,对量子位的测量返回一个量子位状态的位值。OpenPulse实验可以支持额外的测量数据类型,例如原始解调信号或应用测量内核后的IQ值,这些数据类型也可以存储在内存中。
寄存器(Register)是位数据的快速存取存储器,存储量子位状态或布尔函数的输出。如果支持,则可以根据指定寄存器是否为1 (true)来设置gates。寄存器槽的数量由后端定义。

Qiskit的基本结构:

用于Qiskit兼容系统的API对象的互操作性
provider类,它管理与单个身份验证点和/或单个连接点对应的后端集合(例如,提供者是来自同一源的一组后端,如IBM Q提供的后端)。
每个backend(可以运行实验的设备/模拟器)都有一个类,该类可用于从设备获取配置和状态信息并运行实验。
Experiments(job)由包含配置信息和实验序列的量子对象(Qobj)数据结构定义。Job类是通过对后端运行调用创建的,其中包含一个Qobj,该Qobj根据一般的Qobj模式以及后端强加的任何特定模式进行验证。一旦创建了job对象,就可以使用它来获取关于job的状态信息、取消job和检索结果。

函数调用:

函数调用

Qiskit的数据结构:

Qiskit API的数据结构

Provider

provider对象,管理provider提供的一组后端,例如,具有相同用户身份验证和地址的后端。方法在表一中显示。
Provider有一个Provider.available_backends的方法,可以从提供程序返回所有后端。provider类有一个函数Provider.get backend(backend name),返回给定后端名称(backend_name)的后端对象(backend object)。

Backend

Backend类是到可用设备或模拟器(能够运行量子实验的东西)的接口。Backend可以是在线的,也可以是本地的,并且可以支持OpenPulse(所有后端都必须支持OpenQASM)。表二中是所需的数据结构,表一中是通用后端可使用的函数调用。

Configuration

backend将有一个方法backend .configuration(),该方法返回所需的backend_config数据结构。backends可以包含此结构的其他项(如果后端支持OpenPulse,则需要额外的配置,之后讨论)。
在这里插入图片描述
此中,

  • backend_name:唯一的(对提供者)后端标识符名称。这可以描述一个经历了几次更改但保留了公共元素的设置,例如,对于物理设备后端,这可能包括相同的耦合映射和物理位置,等等。
  • backend version:后端版本字符串形式为“X.X.X”。版本可以表明,例如,代码更改,设备升级,不同的冷却时间,新的优化,等等。
  • n_qubits:后端量子位的数量。模拟器后端返回“-1”。
  • basis_gates:后端可用门的列表,作为门名称数组(这些名称应该与gates中的条目匹配)。
  • coupling_map:表示设备上的物理耦合映射(每个门的耦合映射在gates中定义)。
  • gates:作为gate_config数据结构的后端可用门的列表。
  • local:后端在本地运行(true)或在线运行(false)。
  • simulator:后端是模拟器(true)或实验设备(false)。
  • conditional:后端支持条件门(true)或不支持条件门(false)。各个门也可能支持或不支持条件(参阅gate_config数据结构)。
  • configurable:后端(if simulator)是可配置的(true)。如果为真,则存在用户指定的配置参数(例如拓扑、噪声参数等)。这些设置的数据结构由特定的后端设置。
  • n_registers:(如果conditional为true,则为required):指定可用于条件操作的寄存器槽数(即寄存器位数)。每个寄存器可以保存一个位值。
  • register_map:(如果conditional为true,则为required):指定每个量子位可以存储测量值的寄存器。在这个例子中,量子位0和1可以存储在寄存器0和1中,量子位2可以存储在寄存器2和3中,量子位3和4可以存储在寄存器3和4中。
  • open_pulse:OpenPulse实验可以在这个后端(bool)上接受。
    configuration结构还可以具有以下可选字段:
    在这里插入图片描述
gate_config 数据结构

gate_config 数据结构具有以下内容:
在这里插入图片描述

  • name:门名称,它将在OpenQASM电路中引用。
  • parameters:门的参数列表(如果没有参数,则为空)。
  • coupling_map:门应用于的量子位的列表,列表中的每个元素都是一个n-量子位列表,其中n是门的大小(例如1-qubit gate,2-qubit gate)。
  • qasm_def:基于基门[U,CX]的OpenQASM定义。在此基础上,每个酉门都有一个有效的表示。
  • conditional (optional):Gate支持条件操作(true/false)。如果未列出,则默认设置为后端设置。
  • latency_map (optional): 列出每个长度为n的寄存器的门,它指示到寄存器的反馈速度是快(1)还是慢(0)。在上面的例子中,量子位0的u3门对于条件寄存器0有较低的延迟,量子位1和2对于寄存器1和寄存器2都有较低的延迟。
  • description (optional): 门的描述。

以CX为例:
在这里插入图片描述
SWAP门:
在这里插入图片描述

Properties

后端将有一个调用backend.properties(),它将返回一个带有后端属性(例如校准和一致性)的backend_props数据结构。注意,此信息可选由后端提供,它将设置需要更新校准和字符的频率和/或在什么条件下更新。
在这里插入图片描述

  • last_update_date: :最后一次运行校准的日期/时间.
  • gates:量子位元门参数列表(作为gate prop结构,见下).
  • qubits:量子位元参数的列表(例如相干性),按量子位元的顺序排列。量子位参数一般包括T1、T2、readoutErr和频率。
  • general:通用后端参数列表(作为nduv_struct,参见下面)。
    每个参数都表示为nduv结构(name-date-unit-value结构),如下所示:
    在这里插入图片描述
    -name:参数的名称。
    -date:测量参数的日期。
    -unit:值的单位(作为字符串)。
    -value:参数值。

对于门的参数,gate_prop的结构为:
在这里插入图片描述
-qubit:与门有关的量子位。
-gate: gate name,必须是后端配置结构中“gates”中的一个门。
-parameters:参数结构列表,通常包括“gate err”(门误差指的是特定门的1 - Favg)和“门时间”。请注意,每个后端可能使用不同的方法测量门错误,这将必须由后端通过单独的通道(例如URL)传递。

对于后端属性中的general参数,每个结构的形式为:
在这里插入图片描述

to be continued…

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qiskit API架构介绍(一) 的相关文章

  • MVC发展历程及思想

    两种web应用程序的开发模式 model 1 JSP JavaBean JSP负责 页面显示 页面跳转 调用Javabean处理数据 处理请求 JavaBean负责 数据封装保存 数据处理逻辑 适用场景 model 1 方式适合开发业务逻辑

随机推荐

  • android开发:jd-gui的下载和使用

    参考 jd gui的下载和使用
  • 常见JS动画效果

    作为一名前端开发人员 想要的大多都是 在开发过程中 看着自己制作的动画的炫酷以及困难的解决 开发结束后 自己的项目 成果可以被他人认可接受 人们浏览网页时 若一个网页动画效果丰富炫酷 性能良好 体验度良好 自然会受到吸引去打来浏览 吸引用户
  • 为什么模板不能模板分离编译(模板的定义与声明分离)

    目录 一 什么是分离编译 二 为什么不能 三 解决方案 1 模板定义的位置显式实例化 2 将声明和定义放到同一个文件里 不让定义和声明分离 一 什么是分离编译 一个程序 项目 由若干个源文件共同实现 而每个源文件单独编译生成目标文件 最后将
  • qt sql 查询 正序,倒序

    QString str QString SELECT Date Time People Event FROM TB LOG WHERE People 1 order by Date desc limit 0 2000 arg 模式 orde
  • 请你介绍一下map的分类和常见的情况

    java为数据结构中的映射定义了一个接口java util Map 它有四个实现类 分别是HashMap Hashtable LinkedHashMap 和TreeMap Map主要用于存储健值对 根据键得到值 因此不允许键重复 重复了覆盖
  • 机器学习-线性回归总结

    最近学习了线性回归的模型 也是机器学习中最基础的一种模型 在此 总结一下线性回归的模型介绍 梯度下降以及正规方程 回归问题 线性回归 顾名思义 属于回归问题 既然是回归问题 那必然属于监督学习 在这里简单再介绍一下什么是回归问题 回归用于预
  • Matlab出错向量长度必须相同,代码已贴。错误使用plot3,向量长度必须相同

    clc clear all theta 60 半功率角 m log10 2 log10 cosd theta P LED 0 02 nLED 60 P total nLED nLED P LED Ar 1e 4 Ts 1 index 1 5
  • 智能科学工程毕业设计如何选题

    文章目录 0 简介 1 如何选题 2 最新智科毕设选题 3 最后 0 简介 学长搜集分享最新的智能科学工程与技术业专业毕设选题 难度适中 适合作为毕业设计 大家参考 学长整理的题目标准 相对容易 工作量达标 题目新颖 1 如何选题 最近非常
  • 【MicroPython RP2040】可编程IOs(PIO)示例介绍

    MicroPython RP2040 可编程IOs PIO 原文链接 https www cnx software com 2021 01 27 a closer look at raspberry pi rp2040 programmab
  • VSCode连接WSL2及VMware,WSL2安装GUI应用

    一 VScode 连接WSL2 参考文章 巨硬官方文档 知乎大佬教程 知乎大佬教程2 1 开启WSL2 支持 使用管理员权限的 Shell 才能安装 WSL2 按 Win X 找到 Windows PowerShell 管理员 并复制执行命
  • mysql (Errcode: 13 - Permission denied)没有权限找不到文件问题

    下午五点钟 突然反馈说某个页面报错 然后还想让我加班 并且很迅速的帮我点了外卖 我还打算今晚去健身房呢 1 首先从案发现场勘察 页面返回500 2 之后看后台发现某个数据表not found permission denied 3 最后到后
  • 第一次跑高光谱数据结果

    1 所用数据集 Bostwana Indian Pines 所用算法 SVM 2 数据分析 高光谱数据维数高 信息量大 冗余信息多 这些先都不考虑 先输入SVM数据再考虑 3 试验流程 加载数据 包括Data和label 数据预处理 归一化
  • python Pycharm出现“can't find '__main__' module”解决方案

    第一次运行Pycharm工程 出现 can t find main module 最后发现 原来是配置没配对 因为在配置时没有选择 py文件 而只选择了工程名 因此选择Edit Configurations 选择Edit Configura
  • 从“深度伪造”到“深度合成”:AI为啥需要一次“正名”?

    在世人对AI的 邪恶性 进行攻诘的浪潮中 AI造假 可能已经是现在排首位的理由了 自从2017年Deepfake 深度伪造 横空出世以后 人们惊呼原来AI在造假方面简直天赋异禀 此后 AI生成内容 技术 特别是GAN算法的突飞猛进更加印证了
  • ChatGLM-6b本地安装手把手教学

    什么是ChatGLM 6B ChatGLM 6B 是一个开源的 支持中英双语的对话语言模型 基于 General Language Model GLM 架构 具有 62 亿参数 结合模型量化技术 用户可以在消费级的显卡上进行本地部署 INT
  • 关于windows update 无法更新,以及.NET4.0安装失败

    故障 打开 Windows Update 出现红色盾牌图标 点击 检查更新 出现 Windows Update 当前无法检查更新 因为未运行服务 您可能需要重新启动计算机 查看 Windows Update 服务 正常 查看 Backgro
  • Linux环境下安装notepad++

    Notepad 在linux下名字为Notepadqq Centos下安装方法 sudo wget O etc yum repos d sea devel repo http sea fedorapeople org sea devel r
  • 爬虫(一):Python网络数据采集(爬虫)概述

    专栏介绍 结合自身经验和内部资料总结的Python教程 每天3 5章 最短1个月就能全方位的完成Python的学习并进行实战开发 学完了定能成为大佬 加油吧 卷起来 全部文章请访问专栏 Python全栈教程 0基础 文章目录 专栏介绍 什么
  • hack the box—Lame

    扫描 还是老方法nmap fscan得到开放的端口和服务 nmap sV sC sT v T4 10 10 10 3 看到开了445 先来波ms17 010 发现失败 这里还开个21 并且可以知道版本号 直接搜索ftp漏洞 msf正好有对应
  • Qiskit API架构介绍(一)

    API是一组类 函数和数据结构 用于与设备和模拟器进行接口 并运行实验 Qiskit实验概述 Qobj中的实验序列定义了运行在后端backend上的量子操作 单个Qobj定义了一批要并发运行的实验 即 Qobj中每个实验按列出的顺序运行一个