qulacs/qulacs

Variational Quantum Circuit Simulator for Quantum Computation Research

Qulacs – 高速量子回路シミュレーションライブラリ

何であるか – Qulacs は、オープンソースのライブラリ(Python フロントエンドと高性能 C++ コア)であり、量子回路のシミュレーションを目的としています。ノイズのある中規模量子(NISQ)デバイス、変分アルゴリズム、および多数または大規模な量子回路を迅速に実行する必要があるワークロードの研究をターゲットとしています。

主な機能

  • 高速性 – 並列化された C/C++ ベース;オプションの SIMD、OpenMP、GPU 加速。ベンチマークでは、シングルスレッドおよびマルチスレッド実行において他のシミュレータと競合可能な性能を示しています。
  • ノイズモデル – 内蔵されたノイズ付きゲートにより、現実的な NISQ ハードウェアをエミュレートできます。
  • パラメトリックゲート – 調整可能なパラメータを持つゲートをサポートしており、変分量子アルゴリズムに有用です。
  • 回路最適化・圧縮 – シミュレーション前にゲート数を削減し、さらに高速化を実現します。
  • クロスランゲージ – Python(pip install qulacs または GPU 版 qulacs-gpu)から使用可能、または静的/共有 C++ ライブラリを直接リンクできます。

インストール

  • 多数のユーザー向けに簡単な pip インストール:pip install qulacs(Intel Haswell CPU 向けに最適化された事前ビルドバイナリ)。
  • 古い CPU、新しい CPU(より高い性能)または GPU サポートが必要な場合は、ソースからインストールするか、qulacs-gpu パッケージを使用してください。
  • ソースからビルドすると、CMake を通じて AVX2、OpenMP、CUDA を有効化できます。

一般的なワークフロー(Python)

from qulacs import QuantumCircuit, QuantumState, Observable
from qulacs.gate import Y, CNOT, merge

state = QuantumState(3)
state.set_Haar_random_state()


circuit = QuantumCircuit(3)
circuit.add_X_gate(0)
circuit.add_gate(merge(CNOT(0,1), Y(1)))
circuit.add_RX_gate(1, 0.5)
circuit.update_quantum_state(state)

obs = Observable(3)
obs.add_operator(2.0, "X 2 Y 1 Z 0")
obs.add_operator(-3.0, "Z 2")
print(obs.get_expectation_value(state))

qulacs-gpu をインストール後、QuantumState を QuantumStateGpu に置き換えることで、CUDA 対応 GPU 上で実行できます。

一般的なワークフロー(C++) – include/ からヘッダーをインクルードし、静的ライブラリをリンク(-lcppsim_static -lcsim_static …)。サンプルコードは Python の例と類似しています。

誰が使っているか – 学術機関(例:QunaSys、大阪大学、NTT、富士通)およびアルゴリズム開発、ベンチマーク、ノイズ研究に高速で拡張可能なシミュレータが必要なすべての人々。

さらに学ぶには – 完全なチュートリアル、API ドキュメント、および例はプロジェクトサイト(例:docs.qulacs.org)にあります。併せて提供されるベンチマークリポジトリと arXiv 論文(arXiv:2011.13524)でパフォーマンス詳細を確認できます。

ライセンス – MIT ライセンスのため、自由に使用・他のソフトウェアに組み込むことができます。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト