本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在不同的 Braket 设备上支持 OpenQASM
对于支持 OpenQASM 3.0 的设备,action 字段支持通过 GetDevice 响应执行新操作,如下列 Rigetti 和 IonQ 设备示例所示。
//OpenQASM as available with the Rigetti device capabilities { "braketSchemaHeader": { "name": "braket.device_schema.rigetti.rigetti_device_capabilities", "version": "1" }, "service": {...}, "action": { "braket.ir.jaqcd.program": {...}, "braket.ir.openqasm.program": { "actionType": "braket.ir.openqasm.program", "version": [ "1" ], …. } } } //OpenQASM as available with the IonQ device capabilities { "braketSchemaHeader": { "name": "braket.device_schema.ionq.ionq_device_capabilities", "version": "1" }, "service": {...}, "action": { "braket.ir.jaqcd.program": {...}, "braket.ir.openqasm.program": { "actionType": "braket.ir.openqasm.program", "version": [ "1" ], …. } } }
对于支持脉冲控制的设备,pulse 字段显示在 GetDevice 响应中。以下示例显示了 Rigetti 设备的 pulse 字段。
// Rigetti { "pulse": { "braketSchemaHeader": { "name": "braket.device_schema.pulse.pulse_device_action_properties", "version": "1" }, "supportedQhpTemplateWaveforms": { "constant": { "functionName": "constant", "arguments": [ { "name": "length", "type": "float", "optional": false }, { "name": "iq", "type": "complex", "optional": false } ] }, ... }, "ports": { "q0_ff": { "portId": "q0_ff", "direction": "tx", "portType": "ff", "dt": 1e-9, "centerFrequencies": [ 375000000 ] }, ... }, "supportedFunctions": { "shift_phase": { "functionName": "shift_phase", "arguments": [ { "name": "frame", "type": "frame", "optional": false }, { "name": "phase", "type": "float", "optional": false } ] }, ... }, "frames": { "q0_q1_cphase_frame": { "frameId": "q0_q1_cphase_frame", "portId": "q0_ff", "frequency": 462475694.24460185, "centerFrequency": 375000000, "phase": 0, "associatedGate": "cphase", "qubitMappings": [ 0, 1 ] }, ... }, "supportsLocalPulseElements": false, "supportsDynamicFrames": false, "supportsNonNativeGatesWithPulses": false, "validationParameters": { "MAX_SCALE": 4, "MAX_AMPLITUDE": 1, "PERMITTED_FREQUENCY_DIFFERENCE": 400000000 } } }
前面的字段详细说明了以下内容:
端口:
描述了在 QPU 上声明的预制外部 (extern) 设备端口以及给定端口的相关属性。此结构中列出的所有端口都预先声明为用户提交的 OpenQASM 3.0 程序中的有效标识符。端口的其他属性包括:
-
端口 ID (portId)
-
在 OpenQASM 3.0 中声明为标识符的端口名称。
-
-
方向 (direction)
-
端口的方向。驱动端口传输脉冲(“tx”方向),而测量端口接收脉冲(“rx”方向)。
-
-
端口类型 (portType)
-
此端口负责的操作类型(例如,驱动、捕获或 ff - fast-flux)。
-
-
Dt (dt)
-
表示给定端口上的单个采样时间步长,以秒为单位。
-
-
量子比特映射 (qubitMappings)
-
与给定端口关联的量子比特。
-
-
中心频率 (centerFrequencies)
-
端口上所有预先声明或用户定义的帧的相关中心频率列表。有关更多信息,请参阅“帧”。
-
-
QHP 特定属性 () qhpSpecificProperties
-
一张可选地图,详细介绍有关 QHP 特定端口的现有属性。
-
帧:
描述了在 QPU 上声明的预制外部帧以及与这些帧相关的属性。此结构中列出的所有帧都预先声明为用户提交的 OpenQASM 3.0 程序中的有效标识符。帧的其他属性包括:
-
帧编号 (frameId)
-
在 OpenQASM 3.0 中声明为标识符的帧名称。
-
-
端口 ID (portId)
-
帧的关联硬件端口。
-
-
频率 (frequency)
-
帧的默认初始频率。
-
-
中心频率 (centerFrequency)
-
帧频率带宽的中心。通常,只能将帧调整到中心频率周围的特定带宽。因此,频率调整应保持在中心频率的给定增量之内。您可以在验证参数中找到带宽值。
-
-
阶段 (phase)
-
帧的默认初始阶段。
-
-
关联门 (associatedGate)
-
与给定帧关联的门。
-
-
量子比特映射 (qubitMappings)
-
与给定帧关联的量子比特。
-
-
QHP 特定属性 () qhpSpecificProperties
-
一张可选地图,详细说明有关 QHP 特定帧的现有属性。
-
SupportsDynamicFrames:
描述了帧是否可以通过 OpenPulse newframe 函数在 cal 或 defcal 块中声明。如果该值为 false,则只能在程序中使用帧结构中列出的帧。
SupportedFunctions:
除了给定函数的关联参数、参数类型和返回类型之外,还描述了设备支持的 OpenPulse 函数。要查看使用这些OpenPulse函数的示例,请参阅OpenPulse规范
-
shift_phase
-
按指定值移动帧的相位
-
-
set_phase
-
将帧的相位设置为指定值
-
-
swap_phases
-
在两帧之间交换相位。
-
-
shift_frequency
-
按指定值移动帧的频率
-
-
set_frequency
-
将帧频设置为指定值
-
-
play
-
安排波形
-
-
capture_v0
-
将捕获帧上的值返回到位寄存器
-
SupportedQhpTemplateWaveforms:
描述了设备上可用的预先构造的波形函数以及相关的参数和类型。默认情况下,Braket Pulse 在所有设备上提供预先构造的波形例程,它们是:
Constant
τ 是波形长度,iq 是一个复数。
def constant(length, iq)
Gaussian
τ 是波形长度,σ 是高斯宽度,A 是振幅。如果将 ZaE 设置为 True,则对 Gaussian 进行偏移和重新缩放,使其在波形的开头和结尾处都等于零,且最大达到 A。
def gaussian(length, sigma, amplitude=1, zero_at_edges=False)
DRAG Gaussian
τ 是波形长度,σ 是高斯宽度,β 是自由参数,A 是振幅。如果将 ZaE 设置为 True,则对绝热门导数去除(DRAG)Gaussian 进行偏移和重新缩放,使其在波形的开头和结尾处都等于零,实数部分最大达到 A。有关阻力波形的更多信息,请参阅论文 Simple Pulses for Elimination of Leakage in Weakly Nonlinear Qubits
def drag_gaussian(length, sigma, beta, amplitude=1, zero_at_edges=False)
Erf Square
其中:L 是长度,W 是波形宽度,σ 定义了边缘上升和下降的速度,t1=(L−W)/2 和 t22=(L+W)/2,A 是振幅。如果将 ZaE 设置为 True,则对 Gaussian 进行偏移和重新缩放,使其在波形的开头和结尾处都等于零,且最大达到 A。以下方程是波形的重新缩放版本。
其中:a=erf(W/2σ) 且 b=erf(-t1/σ)/2+erf(t2/σ)/2。
def erf_square(length, width, sigma, amplitude=1, zero_at_edges=False)
SupportsLocalPulseElements:
描述了脉冲元素(如端口、帧和波形)是否可以在 defcal 块中进行本地定义。如果值为 false,则必须以 cal 块形式定义元素。
SupportsNonNativeGatesWithPulses:
描述了我们是否可以将非原生门与脉冲程序结合使用。例如,如果不先通过 defcal 为所使用的量子比特定义门,就不能像程序中的 H 门一样使用非原生门。您可以在“设备功能”下方找到原生门 nativeGateSet 键列表。
ValidationParameters:
描述了脉冲元件验证边界,包括:
-
(任意及预先构造的)波形的最大扩展/最大振幅值
-
所提供中心频率的最大频率带宽(单位为赫兹)
-
length/duration 以秒为单位的最小脉冲
-
以秒为单位的最 length/duration 大脉冲
OpenQASM 支持的操作、结果和结果类型
要了解每台设备支持哪些 OpenQASM 3.0 功能,可以参考设备功能输出 action 字段中的 braket.ir.openqasm.program 键。例如,以下是 Braket 状态向量模拟器 SV1 支持的操作和结果类型。
... "action": { "braket.ir.jaqcd.program": { ... }, "braket.ir.openqasm.program": { "version": [ "1.0" ], "actionType": "braket.ir.openqasm.program", "supportedOperations": [ "ccnot", "cnot", "cphaseshift", "cphaseshift00", "cphaseshift01", "cphaseshift10", "cswap", "cy", "cz", "h", "i", "iswap", "pswap", "phaseshift", "rx", "ry", "rz", "s", "si", "swap", "t", "ti", "v", "vi", "x", "xx", "xy", "y", "yy", "z", "zz" ], "supportedPragmas": [ "braket_unitary_matrix" ], "forbiddenPragmas": [], "maximumQubitArrays": 1, "maximumClassicalArrays": 1, "forbiddenArrayOperations": [ "concatenation", "negativeIndex", "range", "rangeWithStep", "slicing", "selection" ], "requiresAllQubitsMeasurement": true, "supportsPhysicalQubits": false, "requiresContiguousQubitIndices": true, "disabledQubitRewiringSupported": false, "supportedResultTypes": [ { "name": "Sample", "observables": [ "x", "y", "z", "h", "i", "hermitian" ], "minShots": 1, "maxShots": 100000 }, { "name": "Expectation", "observables": [ "x", "y", "z", "h", "i", "hermitian" ], "minShots": 0, "maxShots": 100000 }, { "name": "Variance", "observables": [ "x", "y", "z", "h", "i", "hermitian" ], "minShots": 0, "maxShots": 100000 }, { "name": "Probability", "minShots": 1, "maxShots": 100000 }, { "name": "Amplitude", "minShots": 0, "maxShots": 0 } { "name": "AdjointGradient", "minShots": 0, "maxShots": 0 } ] } }, ...