翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
異なる Braket デバイスでの OpenQASM のサポート
OpenQASM 3.0 をサポートしているデバイスの場合、 action
フィールドは、 Rigettiおよび IonQ デバイスの次の例に示すように、 GetDevice
レスポンスによる新しいアクションをサポートします。
//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および OQC デバイスの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 } } } // OQC { "pulse": { "braketSchemaHeader": { "name": "braket.device_schema.pulse.pulse_device_action_properties", "version": "1" }, "supportedQhpTemplateWaveforms": { "gaussian": { "functionName": "gaussian", "arguments": [ { "name": "length", "type": "float", "optional": false }, { "name": "sigma", "type": "float", "optional": false }, { "name": "amplitude", "type": "float", "optional": true }, { "name": "zero_at_edges", "type": "bool", "optional": true } ] }, ... }, "ports": { "channel_1": { "portId": "channel_1", "direction": "tx", "portType": "port_type_1", "dt": 5e-10, "qubitMappings": [ 0 ] }, ... }, "supportedFunctions": { "new_frame": { "functionName": "new_frame", "arguments": [ { "name": "port", "type": "port", "optional": false }, { "name": "frequency", "type": "float", "optional": false }, { "name": "phase", "type": "float", "optional": true } ] }, ... }, "frames": { "q0_drive": { "frameId": "q0_drive", "portId": "channel_1", "frequency": 5500000000, "centerFrequency": 5500000000, "phase": 0, "qubitMappings": [ 0 ] }, ... }, "supportsLocalPulseElements": false, "supportsDynamicFrames": true, "supportsNonNativeGatesWithPulses": true, "validationParameters": { "MAX_SCALE": 1, "MAX_AMPLITUDE": 1, "PERMITTED_FREQUENCY_DIFFERENCE": 1, "MIN_PULSE_LENGTH": 8e-9, "MAX_PULSE_LENGTH": 0.00012 } } }
前述のフィールドでは、以下について詳しく説明しています。
ポート:
特定のポートの関連プロパティに加えて、QPU で宣言された事前に作成された外部 (extern
) デバイスポートについて説明します。この構造にリストされているすべてのポートは、ユーザーが送信したOpenQASM 3.0
プログラム内で有効な識別子として事前に宣言されています。ポートの追加プロパティは次のとおりです。
-
ポート ID (portId)
-
OpenQASM 3.0 で識別子として宣言されたポート名。
-
-
方向 (方向)
-
ポートの方向。ドライブポートは、 の脈 (方向「tx」) を送信し、測定ポートは の脈 (方向「rx」) を受信します。
-
-
ポートタイプ (portType )
-
このポートが担当するアクションのタイプ (ドライブ、キャプチャ、ff - fast-flux など)。
-
-
dt (dt)
-
指定されたポートの 1 つのサンプル時間ステップを表す秒単位の時間。
-
-
量子ビットマッピング (qubitMappings)
-
指定されたポートに関連付けられた量子ビット。
-
-
中心周波数 (centerFrequencies )
-
ポート上のすべての事前宣言済みフレームまたはユーザー定義フレームに関連する中心周波数のリスト。詳細については、「フレーム」を参照してください。
-
-
QHP 固有のプロパティ (qhp SpecificProperties)
-
QHP に固有のポートに関する既存のプロパティを詳述するオプションのマップ。
-
フレーム:
QPU で宣言された事前に作成された外部フレームと、そのフレームに関連するプロパティについて説明します。この構造にリストされているすべてのフレームは、ユーザーが送信したOpenQASM 3.0
プログラム内で有効な識別子として事前に宣言されています。フレームの追加プロパティは次のとおりです。
-
フレーム ID (frameId)
-
OpenQASM 3.0 で識別子として宣言されたフレーム名。
-
-
ポート ID (portId)
-
フレームに関連付けられたハードウェアポート。
-
-
頻度 (頻度)
-
フレームのデフォルトの初期頻度。
-
-
中心周波数 (centerFrequency )
-
フレームの周波数帯域幅の中心。通常、フレームは中心周波数の周りの特定の帯域幅にのみ調整できます。その結果、頻度調整は中心周波数の所定の差分内にとどまる必要があります。帯域幅の値は、検証パラメータで確認できます。
-
-
フェーズ (フェーズ)
-
フレームのデフォルトの初期フェーズ。
-
-
関連ゲート (associatedGate)
-
指定されたフレームに関連付けられたゲート。
-
-
量子ビットマッピング (qubitMappings)
-
指定されたフレームに関連付けられた量子ビット。
-
-
QHP 固有のプロパティ (qhp SpecificProperties)
-
QHP に固有のフレームに関する既存のプロパティの詳細を示すオプションのマップ。
-
SupportsDynamicフレーム:
OpenPulse newframe
関数を介してフレームを cal
または defcal
ブロックで宣言できるかどうかを記述します。これが false の場合、フレーム構造にリストされているフレームのみをプログラム内で使用できます。
SupportedFunctions:
特定のOpenPulse関数に関連する引数、引数タイプ、および戻り値タイプに加えて、デバイスでサポートされている関数について説明します。OpenPulse 関数の使用例については、仕様 OpenPulse
-
shift_phase
-
フレームのフェーズを指定された値だけシフトします。
-
-
set_phase
-
フレームのフェーズを指定された値に設定します。
-
-
shift_frequency
-
フレームの頻度を指定された値でシフトします。
-
-
set_frequency
-
フレームの頻度を指定された値に設定します。
-
-
play
-
波形をスケジュールする
-
-
capture_v0
-
キャプチャフレームの値をビットレジスタに返す
-
SupportedQhpTemplateWaveforms:
デバイスで使用可能な事前構築済みの波形関数、および関連する引数とタイプについて説明します。デフォルトでは、Braket Pulse はすべてのデバイスで事前構築済みの波形ルーチンを提供します。
定数
![出力が常に iq と等しいパラメータ t、tau、iq を持つ定数関数を示す数式。](images/ConstantFunction.png)
τ
は波形の長さで、 iq
は複雑な数値です。
def constant(length, iq)
ガウス語
![パラメータ t、tau、sigma、A=1、ZaE =0 のガウス関数を示す数式。](images/GaussianFunction.png)
τ
は波形の長さ、 σ
はガウス語の幅、 A
は振幅です。ZaE
を に設定するとTrue
、ガウシアンはオフセットされ、波形の開始時と終了時にゼロに等しくなるように再スケーリングされ、A
最大値に達します。
def gaussian(length, sigma, amplitude=1, zero_at_edges=False)
ガウス語をドラッグ
![パラメータ t、tau、sigma、beta、A=1、ZaE =0 を使用した DRAG Gaussian 分布の数式。](images/DRAGGaussianFunction.png)
τ
は波形の長さ、 σ
はガウシアンの幅、 β
は自由パラメータ、 A
は振幅です。ZaE
を に設定するとTrue
、Adiabatic Gate (DRAG) Gaussian による微分除去がオフセットされ、波形の開始と終了時にゼロに等しくなり、実際の部分がA
最大に達するように再スケーリングされます。DRAG 波形の詳細については、ホワイトペーパー「Unakly Nonlinear Qubits」の「Simple Pulses for Elimination of Packagingage
def drag_gaussian(length, sigma, beta, amplitude=1, zero_at_edges=False)
SupportsLocalPulseElements:
ポート、フレーム、波形などの脈動要素をdefcal
ブロックでローカルに定義できるかどうかを記述します。値が の場合false
、要素は cal
ブロックで定義する必要があります。
SupportsNonNativeGatesWithPulses:
非ネイティブゲートを脈動プログラムと組み合わせて使用できるかどうかについて説明します。例えば、最初に使用済み量子ビットのゲートスルーを定義しないと、プログラム内のH
ゲートのような非ネイティブゲートdefcal
を使用することはできません。ネイティブゲートnativeGateSet
キーのリストは、デバイスの機能にあります。
ValidationParameters:
以下を含む、脈要素の検証境界について説明します。
-
波形の最大スケール/最大振幅値 (任意および事前構築)
-
指定された中心周波数からの最大周波数帯域幅を Hz 単位で表示
-
秒単位の最小脈長/持続時間
-
秒単位の最大脈長/時間
OpenQASM でサポートされているオペレーション、結果、結果タイプ
各デバイスがサポートする OpenQASM 3.0 の機能を確認するには、デバイス機能出力の action
フィールドの braket.ir.openqasm.program
キーを参照してください。例えば、Braket State Vector Simulator でサポートされているオペレーションと結果タイプを次に示します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 } ] } }, ...