| 安定版リリース | 3.1.0 / 2024年5月15日 |
|---|---|
| 実装言語 | パイソン |
| ライセンス | Apache ライセンス2.0 |
| ファイル名拡張子 | .qasm |
| Webサイト | オープンqasm.com |
オープン量子アセンブリ言語(OpenQASM、発音はオープンカズム[1])は、量子コンピュータで実行するための量子回路とアルゴリズムを記述するために設計されたプログラミング言語です。これは、高レベルコンパイラが量子ハードウェアと通信するために使用できる中間表現となるように設計されており、測定結果に基づく従来のフィードフォワードフロー制御だけでなく、幅広い量子操作の記述を可能にします。
この言語には、命令のタイミングを明示的に記述するメカニズムが含まれており、キャリブレーションなどのタスクのゲートに低レベルの定義を添付することができます。[1] OpenQASMは汎用の古典的な計算を意図したものではなく、この言語のハードウェア実装は、仕様で説明されているデータ操作の全範囲をサポートしていない可能性があります。OpenQASMのコンパイラは、コンパイル時の定数に対する幅広い古典的な操作をサポートすることが期待されていますが、実行時値に対するこれらの操作のサポートは実装によって異なる場合があります。[2]
この言語は2017年7月に発表された論文で初めて説明され、[1]参照ソースコード実装はIBMのQuantum Experienceクラウド量子コンピューティングプラットフォームで使用するためにIBMのQuantum Information Software Kit ( Qiskit )の一部としてリリースされました。 [3]この言語は、 Verilogなどの従来のハードウェア記述言語と同様の特性を持っています。
OpenQASM は、宣言のように、ソース ファイルの先頭でバージョンを数値として定義します。
OPENQASM3 ;
OpenQASM の元々公開された実装のレベルは OpenQASM 2.0 です。仕様のバージョン 3.0 が現在のものであり、GitHubの OpenQASM リポジトリで確認できます。
例
以下は、公式ライブラリのOpenQASMソースコードの例です。このプログラムは2つの4ビットの数値を加算します。[4]
/*
* 量子リップルキャリー加算器
* Cuccaro et al、quant-ph/0410184
*/
OPENQASM 3 ; 「stdgates.inc」を含める;
ゲート多数決a 、b 、c { cx c 、b ; cx c 、a ; ccx a 、b 、c ; }
ゲートunmaj a 、b 、c { ccx a 、b 、c ; cx c 、a ; cx a 、b ; }
qubit [ 1 ] cin ; qubit [ 4 ] a ; qubit [ 4 ] b ; qubit [ 1 ] cout ; bit [ 5 ] ans ; uint [ 4 ] a_in = 1 ; // a = 0001 uint [ 4 ] b_in = 15 ; // b = 1111 // qubits を初期化するreset cin ; reset a ; reset b ; reset cout ;
// 入力状態を設定します
for i in [ 0 : 3 ] { if ( bool ( a_in [ i ])) x a [ i ]; if ( bool ( b_in [ i ])) x b [ i ]; } // aをb に追加し、結果を b に格納します。majority cin [ 0 ], b [ 0 ] , a [ 0 ]; for i in [ 0 : 2 ] { majority a [ i ], b [ i + 1 ], a [ i + 1 ]; } cx a [ 3 ], cout [ 0 ]; for i in [ 2 : - 1 : 0 ] { unmaj a [ i ], b [ i + 1 ], a [ i + 1 ]; } unmaj cin [ 0 ], b [ 0 ], a [ 0 ];測定b [ 0 : 3 ] -> ans [ 0 : 3 ];測定cout [ 0 ] -> ans [ 4 ];
参照
参考文献
- ^ abc Cross, Andrew W.; Bishop, Lev S.; Smolin, John A.; Gambetta, Jay M. (2017). 「オープン量子アセンブリ言語」. arXiv : 1707.03429 [quant-ph].
- ^ 「OpenQASM Live仕様」 。 2022年12月26日閲覧。
- ^ qiskit-openqasm: OpenQASM 仕様、International Business Machines、2017 年 7 月 4 日、 2017 年7 月 6 日取得
- ^ "マスターの openqasm/adder.qasm · openqasm/openqasm · GitHub". GitHub。 2022年1月29日。
外部リンク
- 公式サイト
- GitHubの openqasm
