翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
さまざまな 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デバイスの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 で識別子として宣言されたポート名。
-
-
方向 (方向)
-
ポートの方向。ドライブポートはパルス (方向「tx」) を送信し、測定ポートはパルス (方向「rx」) を受信します。
-
-
ポートタイプ (portType)
-
このポートが担当するアクションのタイプ (ドライブ、キャプチャ、ff - fast-flux など)。
-
-
Dt (dt)
-
指定されたポートの単一のサンプル時間ステップを表す秒単位の時間。
-
-
量子ビットマッピング (qubitMappings)
-
指定されたポートに関連付けられた量子ビット。
-
-
中心頻度 (centerFrequencies)
-
ポート上のすべての事前宣言フレームまたはユーザー定義フレームに関連付けられた中心周波数のリスト。詳細については、「フレーム」を参照してください。
-
-
QHP 固有のプロパティ (qhpSpecificProperties)
-
QHP に固有のポートに関する既存のプロパティの詳細を示すオプションのマップ。
-
フレーム:
QPU で宣言された事前に作成された外部フレームと、フレームに関連するプロパティについて説明します。この構造にリストされているすべてのフレームは、ユーザーが送信したOpenQASM 3.0
プログラム内で有効な識別子として事前に宣言されています。フレームの追加プロパティは次のとおりです。
-
フレーム ID (frameId)
-
OpenQASM 3.0 で識別子として宣言されたフレーム名。
-
-
ポート ID (portId)
-
フレームに関連付けられたハードウェアポート。
-
-
頻度 (頻度)
-
フレームのデフォルトの初期頻度。
-
-
中心頻度 (centerFrequency)
-
フレームの周波数帯域幅の中心。通常、フレームは中心周波数の周りの特定の帯域幅にのみ調整できます。その結果、頻度調整は中心周波数の一定の差分内に留まる必要があります。帯域幅の値は、検証パラメータで確認できます。
-
-
フェーズ (フェーズ)
-
フレームのデフォルトの初期フェーズ。
-
-
関連付けられたゲート (associatedGate)
-
指定されたフレームに関連付けられたゲート。
-
-
量子ビットマッピング (qubitMappings)
-
指定されたフレームに関連付けられた量子ビット。
-
-
QHP 固有のプロパティ (qhpSpecificProperties)
-
QHP に固有のフレームに関する既存のプロパティの詳細を示すオプションのマップ。
-
SupportsDynamicFrames:
OpenPulse newframe
関数を通じてフレームを cal
または defcal
ブロックで宣言できるかどうかを記述します。これが false の場合、フレーム構造にリストされているフレームのみをプログラム内で使用できます。
SupportedFunctions:
特定のOpenPulse関数に関連する引数、引数タイプ、戻り値タイプに加えて、デバイスでサポートされている関数について説明します。OpenPulse 関数の使用例については、OpenPulse 仕様
-
シフトフェーズ
-
フレームのフェーズを指定された値だけシフトします。
-
-
set_phase
-
フレームのフェーズを指定された値に設定します。
-
-
スワップフェーズ
-
2 つのフレーム間でフェーズをスワップします。
-
-
shift_frequency
-
フレームの頻度を指定された値だけシフトします。
-
-
set_frequency
-
フレームの頻度を指定された値に設定します
-
-
play
-
波形をスケジュールします。
-
-
capture_v0
-
キャプチャフレームの値をビットレジスタに返します。
-
SupportedQhpTemplateWaveforms:
デバイスで使用可能な構築済みの波形関数と、関連する引数とタイプについて説明します。デフォルトでは、Braket Pulse はすべてのデバイスで事前構築された波形ルーチンを提供します。
定数

τ
は波形の長さで、 iq
は複雑な数値です。
def constant(length, iq)
ガウシアン

τ
は波形の長さ、 σ
はガウシアンの幅、 A
は振幅です。ZaE
を に設定するとTrue
、ガウシアンはオフセットされ、波形の開始時と終了時にゼロに等しくなるように再スケーリングされ、A
最大値に達します。
def gaussian(length, sigma, amplitude=1, zero_at_edges=False)
DRAG ガウシアン

τ
は波形の長さ、 σ
はガウシアンの幅、 β
は無料のパラメータ、 A
は振幅です。ZaE
を に設定するとTrue
、ダイアバティックゲート (DRAG) ガウシアンによる派生除去はオフセットされ、波形の開始時と終了時にゼロに等しくなり、実際の部分がA
最大に達するように再スケーリングされます。DRAG 波形の詳細については、ホワイトペーパー「Unakly Nonlinear Qubits」の「Simple Pulses for Elimination of leakage
def drag_gaussian(length, sigma, beta, amplitude=1, zero_at_edges=False)
ヨーロッパ広場
ここで、 L
は長さ、 W
は波形の幅、 σ
はエッジの上下速度、 t1=(L−W)/2
t22=(L+W)/2
A
は振幅です。ZaE
を に設定するとTrue
、ガウシアンはオフセットされ、波形の開始時と終了時にゼロに等しくなるように再スケーリングされ、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:
パルス要素の検証境界について説明します。これには、以下が含まれます。
-
波形の最大スケール/最大振幅値 (任意および構築済み)
-
指定された中心周波数からの最大周波数帯域幅を 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 } ] } }, ...