

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

# OpenQASM のトラブルシューティング
<a name="braket-troubleshooting-openqasm"></a>

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

**Topics**
+ [インクルードステートメントのエラー](#braket-troubleshooting-openqasm-include-statement-error)
+ [連続しない qubits のエラー](#braket-troubleshooting-openqasm-non-contiguous-qubits-error)
+ [物理 qubits と仮想 qubits を混在させていることを示すエラー](#braket-troubleshooting-openqasm-mixing-physical-and-virtual-qubits-error)
+ [同一プログラムで結果タイプをリクエストするとともに qubits を測定することによるエラー](#braket-troubleshooting-openqasm-result-types-measuring-qubits-error)
+ [Classical and qubit register limits exceeded error](#braket-troubleshooting-openqasm-register-limits-error)
+ [ボックスの前に逐語的なプラグマがないことを示すエラー](#braket-troubleshooting-openqasm-box-not-preceded-by-pragma-error)
+ [逐語的なボックスにネイティブゲートがないことを示すエラー](#braket-troubleshooting-openqasm-verbatim-box-missing-native-gates-error)
+ [逐語的なボックスに物理 qubits がないことを示すエラー](#braket-troubleshooting-openqasm-verbatim-box-missing-physical-qubits-error)
+ [逐語的なプラグマに「braket」がないことを示すエラー](#braket-troubleshooting-openqasm-pragma-naming-error)
+ [単一 qubits にはインデックスを作成できないことを示すエラー](#braket-troubleshooting-openqasm-qubit-index-error)
+ [2 つの qubit ゲートの物理 qubits が接続されていないことを示すエラー](#braket-troubleshooting-openqasm-disconnected-physical-qubits-error)
+ [LocalSimulator のサポートに関する警告](#braket-troubleshooting-openqasm-local-simulator-support-warning)

## インクルードステートメントのエラー
<a name="braket-troubleshooting-openqasm-include-statement-error"></a>

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

```
OPENQASM 3;
include "standardlib.inc";
```

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

## 連続しない qubits のエラー
<a name="braket-troubleshooting-openqasm-non-contiguous-qubits-error"></a>

デバイス機能で `requiresContiguousQubitIndices` が `true` に設定されているデバイスで、隣接していない 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 を混在させていることを示すエラー
<a name="braket-troubleshooting-openqasm-mixing-physical-and-virtual-qubits-error"></a>

同じプログラムで物理 qubits と仮想 qubits を混在させることは許可されないため、エラーとなります。次のコードはエラーを生成します。

```
OPENQASM 3;

qubit[2] q;
cnot q[0], $1;
```

このコードは以下のエラーメッセージを生成します: `[line 4] mixes physical qubits and qubits registers.` 

## 同一プログラムで結果タイプをリクエストするとともに qubits を測定することによるエラー
<a name="braket-troubleshooting-openqasm-result-types-measuring-qubits-error"></a>

同一プログラムで結果タイプをリクエストするとともに 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 and qubit register limits exceeded error
<a name="braket-troubleshooting-openqasm-register-limits-error"></a>

1 つの古典レジスタと 1 つの qubit レジスタのみが許可されます。次のコードはエラーを生成します。

```
OPENQASM 3;

qubit[2] q0;
qubit[2] q1;
```

このコードは以下のエラーメッセージを生成します: `[line 4] cannot declare a qubit register. Only 1 qubit register is supported.` 

## ボックスの前に逐語的なプラグマがないことを示すエラー
<a name="braket-troubleshooting-openqasm-box-not-preceded-by-pragma-error"></a>

どのボックスの前にも、逐語的なプラグマを付ける必要があります。次のコードはエラーを生成します。

```
box{
rx(0.5) $0;
}
```

このコードは以下のエラーメッセージを生成します: `In verbatim boxes, native gates are required. x is not a device native gate.` 

## 逐語的なボックスにネイティブゲートがないことを示すエラー
<a name="braket-troubleshooting-openqasm-verbatim-box-missing-native-gates-error"></a>

逐語的なボックスには、ネイティブゲートと物理 qubits が必要です。次のコードはネイティブゲートエラーを生成します。

```
#pragma braket verbatim
box{
x $0;
}
```

このコードは以下のエラーメッセージを生成します: `In verbatim boxes, native gates are required. x is not a device native gate.` 

## 逐語的なボックスに物理 qubits がないことを示すエラー
<a name="braket-troubleshooting-openqasm-verbatim-box-missing-physical-qubits-error"></a>

逐語的なボックスには物理的な qubits が必要です。次のコードは、物理 qubits がないことを示すエラーを生成します。

```
qubit[2] q;

#pragma braket verbatim
box{
rx(0.1) q[0];
}
```

このコードは以下のエラーメッセージを生成します: `Physical qubits are required in verbatim box.` 

## 逐語的なプラグマに「braket」がないことを示すエラー
<a name="braket-troubleshooting-openqasm-pragma-naming-error"></a>

逐語的なプラグマには「braket」を含める必要があります。次のコードはエラーを生成します:

```
#pragma braket verbatim           // Correct
#pragma verbatim                  // wrong
```

このコードは以下のエラーメッセージを生成します: `You must include “braket” in the verbatim pragma` 

## 単一 qubits にはインデックスを作成できないことを示すエラー
<a name="braket-troubleshooting-openqasm-qubit-index-error"></a>

単一 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 が接続されていないことを示すエラー
<a name="braket-troubleshooting-openqasm-disconnected-physical-qubits-error"></a>

物理 qubits を使用するには、まず `device.properties.action[DeviceActionType.OPENQASM].supportPhysicalQubits` をチェックすることでデバイスが物理 qubits を使用していることを確認し、次に `device.properties.paradigm.connectivity.connectivityGraph` または `device.properties.paradigm.connectivity.fullyConnected` をチェックして接続グラフを確認します。

```
OPENQASM 3;

cnot $0, $14;
```

このコードは以下のエラーメッセージを生成します: `[line 3] has disconnected qubits 0 and 14` 

## LocalSimulator のサポートに関する警告
<a name="braket-troubleshooting-openqasm-local-simulator-support-warning"></a>

`LocalSimulator` は、QPU またはオンデマンドシミュレーターでは利用できない OpenQASM の高度な機能をサポートしています。次の例に示すように、プログラムに、`LocalSimulator` にのみ固有の言語機能が含まれている場合は、警告が表示されます。

```
qasm_string = """
qubit[2] q;

h q[0];
ctrl @ x q[0], q[1];
"""
qasm_program = Program(source=qasm_string)
```

このコードは、「This program uses OpenQASM language features only supported in the LocalSimulator」という警告を生成します。これらの機能の一部は、QPU またはオンデマンドシミュレーターではサポートされていない可能性があります。

サポートされている OpenQASM 機能の詳細については、「[Local Simulator での OpenQASM の高度な機能のサポート](braket-openqasm-supported-features.md#braket-openqasm-supported-features-advanced-feature-local-simulator)」ページを参照してください。