異なる Braket デバイスでの OpenQASM のサポート - Amazon Braket

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

異なる 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 を参照してください。現時点では、Braket は以下をサポートしています。

  • shift_phase

    • フレームのフェーズを指定された値だけシフトします。

  • set_phase

    • フレームのフェーズを指定された値に設定します。

  • shift_frequency

    • フレームの頻度を指定された値でシフトします。

  • set_frequency

    • フレームの頻度を指定された値に設定します。

  • play

    • 波形をスケジュールする

  • capture_v0

    • キャプチャフレームの値をビットレジスタに返す

SupportedQhpTemplateWaveforms:

デバイスで使用可能な事前構築済みの波形関数、および関連する引数とタイプについて説明します。デフォルトでは、Braket Pulse はすべてのデバイスで事前構築済みの波形ルーチンを提供します。

定数

出力が常に iq と等しいパラメータ t、tau、iq を持つ定数関数を示す数式。

τ は波形の長さで、 iqは複雑な数値です。

def constant(length, iq)

ガウス語

パラメータ t、tau、sigma、A=1、ZaE =0 のガウス関数を示す数式。

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

def gaussian(length, sigma, amplitude=1, zero_at_edges=False)

ガウス語をドラッグ

パラメータ t、tau、sigma、beta、A=1、ZaE =0 を使用した DRAG Gaussian 分布の数式。

τ は波形の長さ、 σはガウシアンの幅、 βは自由パラメータ、 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 } ] } }, ...