À propos du projet
PRISM-Q est un simulateur de circuits quantiques écrit en Rust, avec des liaisons Python. Il sélectionne automatiquement un backend à partir de la structure du circuit, exécute un pipeline de fusion de portes à passes multiples et utilise des noyaux AVX2, FMA et BMI2 dans la boucle interne (NEON sur ARM64). La prise en charge de CUDA est optionnelle et couvre les backends statevector, stabilizer (expérimental) et matrice de densité. L'entrée est OpenQASM 3.0 avec une syntaxe 2.0 rétrocompatible, et les circuits peuvent être exportés vers OpenQASM 3.0.
L'installation est disponible via cargo (prism-q) ou pip (prism-q). L'ensemble de fonctionnalités par défaut inclut le parallélisme Rayon et la SVD faer ; une compilation sans fonctionnalités par défaut est mono-thread avec un minimum de dépendances. La fonctionnalité gpu nécessite CUDA Toolkit 12.x ou plus récent.
Les backends incluent Statevector (circuits généraux, O(2^n)), Stabilizer (Clifford uniquement, O(n^2)), Factored Stabilizer (Clifford avec blocs indépendants), Sparse (peu d'amplitudes actives), MPS (faible intrication ou 1D, O(n*chi^2)), Product State (sans intrication), Tensor Network (faible treewidth), Factored (intrication partielle), Density Matrix (évolution bruitée exacte, O(4^n), dispatch explicite uniquement) et Distributed Statevector (au-delà de la mémoire d'un seul hôte, rangs MPI, résultats exacts). BackendKind::Auto est la valeur par défaut ; le budget mémoire du statevector est la moitié de la mémoire physique de la machine, modifiable via PRISM_MAX_SV_QUBITS.
L'analyseur OpenQASM accepte l'ensemble stdgates.inc, les variantes contrôlées et multi-contrôlées courantes, les portes de l'exportateur Qiskit, les noms de portes natives IonQ et Google/Cirq, les portes multi-instructions décomposées, les u1/u2/u3 héritées d'IBM et les déclarations de portes définies par l'utilisateur. Les modificateurs inv @, ctrl @ et pow(k) @ s'enchaînent sur les portes directes. qasm_export::to_qasm3 réécrit un Circuit en OpenQASM 3.0.
Les fonctionnalités incluent les shots et les nombres d'échantillons, les valeurs d'espérance et les marginales, les circuits paramétriques avec rebinding, et les gradients via la méthode adjointe ou la règle du décalage de paramètre. La fonctionnalité GPU compile le PTX à l'exécution via NVRTC pour la capacité de calcul de l'appareil ; un seuil de taille maintient les petits sous-circuits sur le CPU. Des benchmarks sont fournis pour les macrobenchmarks de circuits, les microbenchmarks de portes et le dispatch GPU. La feuille de route mentionne le branchement en milieu de circuit, l'exécution multi-GPU et GPU distribuée, les ports ROCm et les shots bruités sur le backend distribué.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.