OpenQASM のトラブルシューティング - Amazon Braket

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

OpenQASM のトラブルシューティング

このセクションでは、OpenQASM 3.0 を使用してエラーが発生した場合に役立つトラブルシューティングポインタについて説明します。

Include ステートメントエラー

Braket には現在、OpenQASM プログラムに含める標準ゲートライブラリファイルはありません。例えば、次の例ではパーサーエラーが発生します。

OPENQASM 3; include "standardlib.inc";

このコードはエラーメッセージを生成します。 No terminal matches '"' in the current parser context, at line 2 col 17.

連続しないqubitsエラー

デバイス機能truerequiresContiguousQubitIndicesに設定されている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 の高度な機能のサポート」ページを参照してください。