量子回路シミュレーターQSIMおよびQSIMH。これらのシミュレーターは、[1]のクロスエントロピーベンチマークに使用されました。
[1]、F。Aruteet al、「プログラム可能な超伝導プロセッサを使用した量子優位性」、Nature 574、505、(2019)。
QSIMは、Schrödingerフルステートベクトルシミュレーターです。状態ベクトルのすべての2 n振幅を計算します。ここで、 nはキュビットの数です。基本的に、シミュレーターはマトリックスベクトル乗算を繰り返し実行します。 1つのマトリックスベクトル乗算は、1つのゲートの適用に対応しています。合計ランタイムはG2 Nに比例します。ここで、 Gは2クットゲートの数です。シミュレーターをスピードアップするには、ゲートフュージョン[2] [3]、単一の精度算術、AVX/FMA命令、ベクトル化の命令、およびマルチスレッドにはOpenMPを使用します。
[2] M. Smelyanskiy、NP Sawaya、A。Aspuru-Guzik、「Qhipster:The Quantum High Performance Software Testing環境」、Arxiv:1601.07195(2016)。
[3] T.Häner、DS Steiger、「45キット量子回路の0.5ペタバイトシミュレーション」、Arxiv:1704.01127(2017)。
QsimhはハイブリッドSchrödinger-Feynmanシミュレーターです[4]。格子は2つの部分に分割され、Schmidt分解はカットの2 qubitゲートを分解するために使用されます。各ゲートのシュミットランクがMで、カット上のゲートの数がkの場合、 m kパスがあります。忠実な回路を使用して回路をシミュレートするには、すべてのM Kパスをシミュレートし、結果を合計する必要があります。合計ランタイムは(2 n 1 + 2 n 2 )m kに比例します。ここで、 n 1とn 2は1番目と2番目のパーツのqubit数です。パスシミュレーションは互いに独立しており、スーパーコンピューターまたはデータセンターで実行するために、些細な並列化できます。すべてのパスの分数fを合計するだけで、忠実度f <1でシミュレーションを実行できることに注意してください。
パフォーマンスを改善するために、2レベルのチェックポイントスキームが使用されます。カットにはKゲートがあります。それらを3つの部分に分割します: p+r+s = k 。ここで、 pは「プレフィックス」ゲートの数、 rは「ルート」ゲートの数、 sは「接尾辞」ゲートの数です。最初のチェックポイントは、すべてのゲートを適用してプレフィックスゲートを含めて実行された後に実行され、2番目のチェックポイントは、すべてのゲートをルートゲートに適用して塗布した後に実行されます。ルートと接尾辞ゲートのすべてのパスの完全な合計が実行されます。
p> 0の場合、そのようなシミュレーションはf≈m -pを与えます(同じシュミットランクmを持つすべてのプレフィックスゲートについて)。さまざまなプレフィックスパスでM Pシミュレーションを実行し、結果を合計してF = 1を取得する必要があります。
[4] Il Markov、A。Fatima、SV Isakov、S。Boixo、「量子優位性は、見た目よりも近く、遠くにあります」、Arxiv:1807.10749(2018)。
コードは基本的にライブラリとして設計されています。ユーザーは、アプリのサンプルアプリケーションを変更して、自分のニーズを満たすことができます。サンプルアプリケーションの使用法は、ドキュメントで説明されています。
回路入力形式は、ドキュメントで説明されています。
注:この形式は非推奨であり、積極的に維持されなくなりました。
多くのサンプル回路が回路で提供されています。
C ++ライブラリの単体テストでは、Googleテストフレームワークを使用し、テストにあります。 PythonテストではPytestを使用し、QSIMCIRQ_TESTSにあります。
すべてのテストを構築および実行するには、実行してください。
make run-tests
これにより、すべてのテストバイナリが.x拡張機能を持つファイルにコンパイルされ、各テストをシリーズで実行します。テストが失敗した場合、テストは早めに停止します。また、 qsimcirq Pythonインターフェイスのテストも実行されます。 C ++またはPythonテストのみを実行するには、それぞれmake run-cxx-testsか、それぞれmake run-py-tests 。
生成されたテストファイルをクリーンアップするには、実行してテストディレクトリからmake clean 。
CIRQは、ノイズの多い中間スケール量子(NISQ)回路をモデリングして呼び出すためのフレームワークです。
QSIMでGoogle CIRQサーキットのシミュレーションを開始するには、チュートリアルを参照してください。
QSIM-CIRQ APIに関するより詳細な情報は、ドキュメントに記載されています。
これは、公式にサポートされているGoogle製品ではありません。
QSIMはZenodoに自動的にアップロードされます。このバッジをクリックして、すべてのバージョンのすべての引用形式を表示します。
すべてのバージョンについて、同等のBibtex形式の参照は以下にあります。
@software{quantum_ai_team_and_collaborators_2020_4023103,
author = {Quantum AI team and collaborators},
title = {qsim},
month = Sep,
year = 2020,
publisher = {Zenodo},
doi = {10.5281/zenodo.4023103},
url = {https://doi.org/10.5281/zenodo.4023103}
}