翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
OpenQASM のトラブルシューティング
このセクションでは、OpenQASM 3.0 を使用してエラーが発生した場合に役立つトラブルシューティングポインタについて説明します。
このセクションの内容:
- Include ステートメントエラー
- 連続しないqubitsエラー
- 物理エラーqubitsと仮想qubitsエラーの混在
- 同じプログラムエラーqubitsでの結果タイプのリクエストと測定
- Classical および qubit register limits exceeded エラー
- 逐語的なプラグマエラーが前にないボックス
- ネイティブゲートが欠落している逐語的なボックスのエラー
- 逐語的なボックスで物理qubitsエラーが見つからない
- 逐語的なプラグマに「ブラケット」エラーがない
- 単一 はインデックス作成qubitsできないエラー
- 2 つのqubitゲートqubitsの物理 が接続されていないエラー
- Local Simulator のサポートに関する警告
Include ステートメントエラー
Braket には現在、OpenQASM プログラムに含める標準ゲートライブラリファイルはありません。例えば、次の例ではパーサーエラーが発生します。
OPENQASM 3; include "standardlib.inc";
このコードはエラーメッセージを生成します。 No terminal matches '"' in the current parser context, at line 2 col 17.
連続しないqubitsエラー
デバイス機能true
で requiresContiguousQubitIndices
に設定されているqubitsデバイスで非連続 を使用すると、エラーが発生します。
シミュレーターと で量子タスクを実行するとIonQ、次のプログラムによってエラーがトリガーされます。
OPENQASM 3; qubit[4] q; h q[0]; cnot q[0], q[2]; cnot q[0], q[3];
このコードはエラーメッセージを生成します。 Device requires contiguous qubits. Qubit register q has unused qubits q[1], q[4].
物理エラーqubitsと仮想qubitsエラーの混在
同じプログラムqubitsで物理qubitsと仮想を混在させることは許可されず、エラーが発生します。次のコードは エラーを生成します。
OPENQASM 3; qubit[2] q; cnot q[0], $1;
このコードはエラーメッセージを生成します。 [line 4] mixes physical qubits and qubits registers.
同じプログラムエラーqubitsでの結果タイプのリクエストと測定
同じプログラムで明示的に測定qubitsされる結果タイプと をリクエストすると、エラーが発生します。次のコードは エラーを生成します。
OPENQASM 3; qubit[2] q; h q[0]; cnot q[0], q[1]; measure q; #pragma braket result expectation x(q[0]) @ z(q[1])
このコードはエラーメッセージを生成します。 Qubits should not be explicitly measured when result types are requested.
Classical および qubit register limits exceeded エラー
1 つのクラシックレジスターと 1 つのqubitレジスターのみが許可されます。次のコードは エラーを生成します。
OPENQASM 3; qubit[2] q0; qubit[2] q1;
このコードはエラーメッセージを生成します。 [line 4] cannot declare a qubit register. Only 1 qubit register is supported.
逐語的なプラグマエラーが前にないボックス
すべてのボックスの前には、逐語的なプラグマを付ける必要があります。次のコードは エラーを生成します。
box{ rx(0.5) $0; }
このコードはエラーメッセージを生成します。 In verbatim boxes, native gates are required. x is not a device native gate.
ネイティブゲートが欠落している逐語的なボックスのエラー
逐語的なボックスには、ネイティブゲートと物理 が必要ですqubits。次のコードはネイティブゲートエラーを生成します。
#pragma braket verbatim box{ x $0; }
このコードはエラーメッセージを生成します。 In verbatim boxes, native gates are required. x is not a device native gate.
逐語的なボックスで物理qubitsエラーが見つからない
逐語的なボックスには物理的な が必要ですqubits。次のコードは、欠落している物理qubitsエラーを生成します。
qubit[2] q; #pragma braket verbatim box{ rx(0.1) q[0]; }
このコードはエラーメッセージを生成します。 Physical qubits are required in verbatim box.
逐語的なプラグマに「ブラケット」エラーがない
逐語的なプラグマには「ブラケット」を含める必要があります。次のコードは エラーを生成します。
#pragma braket verbatim // Correct #pragma verbatim // wrong
このコードはエラーメッセージを生成します。 You must include “braket” in the verbatim pragma
単一 はインデックス作成qubitsできないエラー
シングル はインデックス作成qubitsできません。次のコードは エラーを生成します。
OPENQASM 3; qubit q; h q[0];
このコードはエラーを生成します。 [line 4] single qubit cannot be indexed.
ただし、単一のqubit配列は次のようにインデックスを作成できます。
OPENQASM 3; qubit[1] q; h q[0]; // This is valid
2 つのqubitゲートqubitsの物理 が接続されていないエラー
物理 を使用するにはqubits、まずデバイスが物理 を使用していることを確認しqubitsdevice.properties.action[DeviceActionType.OPENQASM].supportPhysicalQubits
、次に device.properties.paradigm.connectivity.connectivityGraph
または を確認して接続グラフを確認しますdevice.properties.paradigm.connectivity.fullyConnected
。
OPENQASM 3; cnot $0, $14;
このコードはエラーメッセージを生成します。 [line 3] has disconnected qubits 0 and 14
Local Simulator のサポートに関する警告
は、QPUs またはオンデマンドシミュレーターでは利用できない OpenQASM の高度な機能LocalSimulator
をサポートしています。次の例に示すようにLocalSimulator
、プログラムに にのみ固有の言語機能が含まれている場合は、警告が表示されます。
qasm_string = """ qubit[2] q; h q[0]; ctrl @ x q[0], q[1]; """ qasm_program = Program(source=qasm_string)
このコードは、「このプログラムは LocalSimulator でのみサポートされている OpenQASM 言語機能を使用します。これらの機能の一部は、QPUsまたはオンデマンドシミュレーターではサポートされていない場合があります。
サポートされている OpenQASM 機能の詳細については、ローカルシミュレーターの「OpenQASM の高度な機能のサポート」ページを参照してください。