Quil は、共有量子/古典メモリモデルを初めて導入した量子 命令セットアーキテクチャです。これは、ロバート・スミス、マイケル・カーティス、ウィリアム・ゼンによってA Practical Quantum Instruction Set Architectureで導入されました。[1] 多くの量子アルゴリズム(量子テレポーテーション、量子エラー訂正、シミュレーション、[2] [3]および最適化アルゴリズム[4]を含む) では、共有メモリアーキテクチャが必要です。Quil は、Rigetti Computing が Forest 量子プログラミング API を通じて開発した超伝導量子プロセッサ向けに開発されています。[5] [6] より高レベルな構造を持つ Quil プログラムを開発するために、と呼ばれる Pythonライブラリが導入されました。Quilバックエンド は、他の量子プログラミング環境でもサポートされています。[7] [8]pyQuil
基礎となる量子抽象機械
スミス、カーティス、ゼンが発表した論文では、Quil は量子抽象マシン (QAM) の命令セットを指定しています。これはチューリングマシンに似ていますが、「現実世界」のタスクを実行するのにより実用的です。[1] QAM の状態は、次の 6 つのタプル として表すことができます。
- 0 ベースのインデックスを使用してインデックス付けされた、固定されているが任意の数の量子ビット の (量子) 状態です。
- 0 ベースのインデックスを使用してインデックス付けされた多数の古典的なビットの古典的なメモリです。
- 固定されているが任意の静的ゲートのリスト(アダマール ゲートのようなパラメータに依存しない量子ゲート)
- 固定されているが任意のパラメトリック ゲートのリスト (角度パラメータを完全に定義する必要がある位相シフト ゲートなど、多数の複雑なパラメータに依存するゲート)
- プログラムを表す、実行される Quil 命令のシーケンス。 の長さは で表されます。
- 次に実行される命令を指す整数プログラム カウンタ。は常に 0 (命令を指す) から始まり、プログラムの停止を示す で終わります (最後の命令のインデックスは であることに注意してください)。プログラム カウンタは、特別な制御フロー命令 (条件付きおよび無条件ジャンプ、およびを に設定してプログラムを停止する特別な命令)を除き、すべての命令の後に増加します。
HALT
QAMの意味論はヒルベルト空間のテンソル積とそれらの間の線形写像を用いて定義される。[1]
特徴
Quil は、行列形式でのパラメーター化可能なゲートの定義 (定義されたゲートの物理的実現可能性の必要条件である行列がユニタリであることを検証する方法は言語に含まれていません) と、それらの量子ビットへの適用をサポートしています。この言語は、パラメーター化可能な量子回路のマクロのような定義とその拡張、量子ビットの測定と結果の古典的メモリへの記録、古典的プログラムの実行が終了するまで Quil プログラムの実行を一時停止する命令を使用した古典的コンピュータとの同期、条件付きおよび無条件の分岐、プラグマのサポート、およびライブラリとして使用するためのファイルの組み込み(標準的なゲートのセットがライブラリの 1 つとして提供されます) もサポートしています。
WAIT
リゲッティ QVM
Rigetti Computingは、定義された量子抽象機械を古典的コンピュータ上でシミュレートし、 HTTP経由でリモート実行が可能なQuilプログラムの解析と実行が可能なCommon Lispの量子仮想マシンを開発した。 [9]
例
次の例は、レジスタ2の量子ビットをレジスタ1に量子テレポーテーションするために必要な古典的な制御フローを示しています。 [10] [11]
# 古典的メモリを宣言する
DECLARE ro BIT [ 2 ] # ベルペアを作成するH 0 CNOT 0 1 # テレポートするCNOT 2 0 H 2 MEASURE 2 ro [ 0 ] MEASURE 0 ro [ 1 ] # 測定値を古典的に通信するJUMP-UNLESS @ SKIP ro [ 1 ] X 1 LABEL @ SKIP JUMP-UNLESS @ END ro [ 0 ] Z 1 LABEL @ END
この論文では、量子フーリエ変換と変分量子固有値ソルバーの実装例が示されています。
参考文献
- ^ abc Smith, Robert S.; Curtis, Michael J.; Zeng, William J. (2016-08-10). 「実用的な量子命令セットアーキテクチャ」. arXiv : 1608.03355 [quant-ph].
- ^ McClean, Jarrod R.; Romero, Jonathan; Babbush, Ryan; Aspuru-Guzik, Alán (2016-02-04). 「変分ハイブリッド量子古典アルゴリズムの理論」. New Journal of Physics . 18 (2): 023023. arXiv : 1509.04279 . Bibcode :2016NJPh...18b3023M. doi :10.1088/1367-2630/18/2/023023. ISSN 1367-2630. S2CID 92988541.
- ^ Rubin, Nicholas C. (2016-10-21). 「密度行列埋め込み理論による量子システムの大規模研究のためのハイブリッド古典/量子アプローチ」. arXiv : 1610.06910 [quant-ph].
- ^ Farhi, Edward; Goldstone, Jeffrey; Gutmann, Sam (2014-11-14). 「量子近似最適化アルゴリズム」. arXiv : 1411.4028 [quant-ph].
- ^ 「Rigetti、フルスタック量子コンピューティングサービスと量子ICファブを開始」IEEE Spectrum: テクノロジー、エンジニアリング、サイエンスニュース。2017年6月26日。 2017年7月6日閲覧。
- ^ 「Rigetti、クラウドでの量子プログラミング向け Forest プラットフォームのベータ版をひっそりリリース | 量子コンピューティング レポート」quantumcomputingreport.com 2017 年 3 月 8 日 2017年 7 月 6 日閲覧。
- ^ 「XACC Rigetti Accelerator」。ornl-qci.github.io 。 2017年7月6日閲覧。
- ^ Doiron, Nick (2017-03-07)、jsquil: JavaScript 開発者向け量子コンピュータの手順、 2017-07-06取得
- ^ @rigetti 高性能量子仮想マシン。: Rigetti/qvm、Rigetti Computing、2019-04-26、2019-04-28取得
- ^ ニールセン、マイケル A.; チュアン、アイザック L. (2000)。量子計算と量子情報。ケンブリッジ大学出版局。p. 27。ISBN 978-0-521-63503-5。
- ^ Computing、Rigetti (2019 年 5 月 28 日)。「pyQuil ドキュメント」(PDF)。pyQuilドキュメント。2019 年6 月 6 日閲覧。
外部リンク
- GitHubの quil GitHub リポジトリ
