このプロジェクトについて

PRISM-QはRustで記述された量子回路シミュレータであり、Pythonバインディングを備えています。回路構造に基づいてバックエンドを自動的に選択し、複数パスのゲート融合パイプラインを実行し、内側ループでAVX2、FMA、BMI2カーネルを使用します(ARM64ではNEON)。CUDAサポートは任意であり、statevector、stabilizer(実験的)、density-matrixの各バックエンドを対象としています。入力はOpenQASM 3.0で、下位互換性のある2.0構文も利用でき、回路をOpenQASM 3.0に書き出すこともできます。 インストールはcargo(prism-q)またはpip(prism-q)で利用できます。既定の機能セットにはRayon並列化とfaer SVDが含まれます。no-default-featuresビルドは単一スレッドで、依存関係は最小限です。gpu機能にはCUDA Toolkit 12.x以降が必要です。 バックエンドには、Statevector(一般的な回路、O(2^n))、Stabilizer(Cliffordのみ、O(n^2))、Factored Stabilizer(独立ブロックを持つClifford)、Sparse(生存振幅が少数)、MPS(低エンタングルメントまたは1次元、O(n*chi^2))、Product State(エンタングルメントなし)、Tensor Network(低ツリー幅)、Factored(部分的エンタングルメント)、Density Matrix(厳密なノイズ進化、O(4^n)、明示的ディスパッチ専用)、Distributed Statevector(単一ホストのメモリを超える規模、MPIランク、厳密な結果)が含まれます。BackendKind::Autoが既定です。statevectorのメモリ予算はマシンの物理メモリの半分で、PRISM_MAX_SV_QUBITSによって上書きできます。 OpenQASMパーサーは、stdgates.incセット、一般的な制御および多重制御バリアント、Qiskitエクスポーターのゲート、IonQおよびGoogle/Cirqのネイティブゲート名、分解された複数命令ゲート、IBMのレガシーu1/u2/u3、ユーザー定義ゲート宣言を受け付けます。inv @、ctrl @、pow(k) @修飾子は直接ゲート上で連鎖できます。qasm_export::to_qasm3はCircuitをOpenQASM 3.0として書き出します。 機能には、ショットとサンプル数、期待値とマージナル、再束縛可能なパラメトリック回路、随伴法またはパラメータシフト則による勾配が含まれます。GPU機能は、デバイスのcompute capabilityに合わせてNVRTCを通じて実行時にPTXをコンパイルします。サイズ閾値により、小さな部分回路はCPUに保持されます。回路のマクロベンチマーク、ゲートのマイクロベンチマーク、GPUディスパッチのベンチマークが提供されています。ロードマップには、回路途中の分岐、マルチGPUおよび分散GPU実行、ROCm移植、分散バックエンドでのノイズ付きショットが記載されています。