

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

# OpenQASM 3.0 を使用した逐語的なコンパイル
<a name="braket-openqasm-verbatim-compilation"></a>

Rigetti や IonQ などのベンダーで提供される量子コンピュータで量子回路を実行する場合、変更を加えることなく、回路を定義したとおりに正確に実行するようにコンパイラーに指示することができます。この機能は*逐語的なコンパイル*と呼ばれます。Rigetti デバイスを使用すると、回路全体または回路の特定部分のみで、保持されるものを正確に指定できます。回路の特定部分のみを保持するには、保持対象のリージョン内でネイティブゲートを使用する必要があります。現在、IonQ は回路全体の逐語的なコンパイルのみをサポートしているため、回路内のすべての命令を逐語的なボックスで囲む必要があります。

OpenQASM では、コードボックスの周囲に逐語的なプラグマを明示的に指定できます。このプラグマは、ハードウェアの低レベルコンパイルルーチンでは変更されず、最適化されません。次のコード例は、 `#pragma braket verbatim` ディレクティブを使用してこれを実現する方法を示しています。

```
OPENQASM 3;

bit[2] c;

#pragma braket verbatim
box{
    rx(0.314159) $0;
    rz(0.628318) $0, $1;
    cz $0, $1;
}

c[0] = measure $0;
c[1] = measure $1;
```

例やベストプラクティスなど、逐語的なコンパイルプロセスの詳細については、amazon-braket-examples github リポジトリにある [Verbatim compilation](https://github.com/aws/amazon-braket-examples/blob/main/examples/braket_features/Verbatim_Compilation.ipynb) サンプルノートブックを参照してください。