Micro-optimized High-Performance NISQ Statevector Quantum Circuit Simulator (Hardware-Adaptive Integration of Native NumPy, CUDA-Accelerated CuPy, and Linear Kernel Fusion via JAX JIT/XLA Compilation)
Project description
💎 Dense Evolution v8.0 (TurboQuant Core)
Dense Evolution v8.0 è un simulatore quantistico basato su vettori di stato (Statevector) ad altissime prestazioni, ingegnerizzato specificamente per l'esecuzione di circuiti NISQ (Noisy Intermediate-Scale Quantum) complessi, profondi e algoritmi di Quantum Machine Learning (QML) e VQE.
L’architettura interna si basa sul principio della Linear Kernel Fusion ad allocazione controllata, superando i tradizionali colli di bottiglia legati all’uso della memoria ausiliaria (scratchpad RAM) e ridefinendo i limiti computazionali della compilazione statica accelerata via hardware.
🚀 Caratteristiche Architetturali & Features
- ⚡ Linear Kernel Fusion (JAX XLA): Il simulatore non calcola mai esplicitamente le enormi matrici di gate derivanti dai prodotti tensoriali (Kronecker). L’applicazione degli operatori avviene tramite algoritmi di stride-slicing e permutazione lineare sui tensori contigui, riducendo la complessità di memoria spaziale al minimo teorico assoluto.
- 🧩 Circuit Chunking Transpiler: Risolve il problema del congelamento o degrado della cache JIT di JAX quando si lavora con migliaia di porte logiche. Il circuito viene frammentato in sotto-blocchi (chunk) geometrici equivalenti, garantendo stabilità computazionale infinita, azzerando l'overhead di tracing su circuiti massivi.
- 🎲 Coerenza Stocastica e Collasso d'Onda: La funzione di misura implementa uno stride-slicing chirurgico direttamente sulle matrici di vista hardware (NumPy/CuPy/JAX). Questo garantisce la perfetta convergenza binomiale ed evita l'allocazione di maschere booleane giganti in RAM, prevenendo crash di sistema.
- 📉 Modelli di Rumore a Traiettoria Kraus: Consente la simulazione realistica di hardware affetti da rumore ambientale tramite canali di Amplitude Damping, Phase Damping e Depolarizzazione, applicati como salti quantici stocastici discreti senza l’onere computazionale $2^{2n}$ delle matrici di densità piene.
- 🎛️ Disaccoppiamento Hardware (Agnostic Backend): Sfrutta un’astrazione polimorfa per selezionare a runtime l’hardware più efficiente: NumPy (CPU standard), JAX (Compilazione JIT hardware parallelizzata CPU/TPU) o CuPy (Calcolo parallelo accelerato su NVIDIA GPU CUDA).
⚙️ Istruzioni di Installazione
Il motore è strutturato in conformità con lo standard PEP 621 (tramite pyproject.toml) ed è completamente installabile tramite pip in modalità isolata o editabile per gli sviluppatori.
# Clone della repository locale
git clone
https://github.com/tatopenn-cell/Dense-Evolution.git
# Installazione Standard (Backend CPU standard NumPy)
pip install .
# Installazione High-Performance (Raccomandata in modalità sviluppatore editable)
pip install -e .
📊 Benchmark Industriali e Limiti del Sistema
Il motore è stato sottoposto a stress-test aggressivi in ambienti a risorse limitate (Google Colab Free), registrando risultati d’élite nel contenimento della memoria e nella precisione aritmetica.
1. Stabilità Numerica Assoluta (Zero-Drift Execution)
Sottoposto ad Ansatz variazionali profondi (oltre 80 strati e 1360 porte parametriche consecutive fuse in un unico blocco XLA), il core del simulatore ha registrato una deriva numerica assoluta controllata pari a:
$$\Delta = 1.1102230246251565 \times 10^{-16}$$
Questo valore coincide esattamente con l'Epsilon di macchina ($\epsilon$) per la precisione doppia a 64 bit (float64). La fusione algebrica dei kernel in XLA annulla l'accumulo sequenziale degli errori di arrotondamento delle funzioni trigonometriche.
2. Scaling dei Qubit e Throughput Computazionale (Chunking Engine)
Grazie al motore di chunking in-place, il simulatore gestisce registri quantistici estesi ottimizzando chirurgicamente la cache di sistema senza generare copie temporanee dello stato:
| Qubits | Dimensione Stato (Ampiezze) | Tempo di Esecuzione (s) | Gates / Secondo | RAM Reale Allocata | Delta RAM a Runtime |
|---|---|---|---|---|---|
| 14 | 16.384 | 0.3546 s | 2819.9 | ~0.26 MB | 0.00 MB |
| 16 | 65.536 | 0.4217 s | 2370.8 | ~1.04 MB | 0.00 MB |
| 24 | 16.777.216 | 0.7090 s | JIT Standard Tier | ~256.00 MB | < 1.00 MB |
| 29 | 536.870.912 | HPC Chunk Tier | Hardware Saturation | 8192.00 MB | 0.00 MB |
💡 Nota di Merito: Il superamento della barriera dei 24 qubit in ambienti con soli 12 GB di RAM totali (Colab Free) evidenzia l’efficacia dell'architettura lineare 1D a norma fissa, che azzera i reshape dinamici a basso livello.
3. Parallelizzazione Vettorizzata JAX vmap (Batch Engine)
Il modulo run_parametric_batch_jit sfrutta la parallelizzazione inter-circuito per il Quantum Machine Learning. Esegue un singolo tracciamento del grafo computazionale e distribuisce istantaneamente N configurazioni di parametri sulla griglia hardware:
- Throughput testato: 64 circuiti variazionali paralleli eseguiti simultaneamente in 1.96 secondi.
- Tempo medio per circuito: ⏱️ 0.031 secondi.
💻 Esempi Pratici di Codice
🛠️ Esempio 1: Esecuzione in Beast Mode (Kernel Fusion JIT)
Dimostrazione dell'interfaccia ultra-veloce a zero allocazioni. La Beast Mode accetta un array lineare di operazioni stringa per bypassare completamente i controlli dell'interprete Python:
import dense_evolution as de
# Inizializzazione del simulatore a 2 Qubit
sim = de.DenseSVSimulator(n_qubits=2)
# Definizione del circuito strutturato (Porta, Target, Controllo/Parametro)
# Generazione nativa di uno Stato di Bell entangled
ops = [
["h", 0, -1],
["cx", 1, 0]
]
# Esecuzione istantanea nel compilatore fuso XLA
sim.run_circuit_jit_beast_mode(ops)
print(f"Stato Finale Entangled JIT: {sim.get_statevector()}")
print(f"Probabilità di estrazione: {sim.get_probabilities()}")
🧠 Esempio 2: Decomposizione Topologica con il QuantumTranspiler
Il transpiler integrato scompone le porte logiche non native e complesse a più qubit nelle primitive a 1 e 2 qubit accettate dal core lineare 1D:
import dense_evolution as de
transpiler = de.QuantumTranspiler()
# Estrazione della scomposizione esatta di una porta Toffoli (CCNOT) sui qubit 0, 1 e 2
sequenza_primitive = transpiler.decompose_toffoli(0, 1, 2)
print(f"Totale porte primitive generate per il Core V4: {len(sequenza_primitive)}")
for gate in sequenza_primitive:
print(f" -> {gate}")
# Output generato: Sequenza esatta a 15 porte stabili (H, CNOT, T, Tdg)
📉 Esempio 3: Iniezione stocastica del NoiseModel
Applicazione di canali di rumore realistici NISQ in modalità stocastica unificata JAX-safe:
import dense_evolution as de
import numpy as np
sim = de.DenseSVSimulator(n_qubits=2)
# Applicazione manuale di una porta singola (Firma: Matrice, Qubit)
h_matrix = de.GATES['h']
sim.apply_gate_1q(h_matrix, 0)
# Lettura telemetria di sistema in tempo reale (Variabile float globale)
print(f"RAM attualmente disponibile su Colab: {de.ram_avail:.2f} MB")
# Iniezione di rumore di depolarizzazione al 5% sul vettore di stato
sim.sv = de.NoiseModel.apply_to_sv(
sv=sim.sv,
n=2,
model='depolarizing',
p=0.05
)
print(f"Stato rumoroso degradato: {sim.get_statevector()}")
📂 Architettura dei File nella Repository
Dense-Evolution/
│
├── pyproject.toml # Configurazione PEP 621, build backend e dipendenze opzionali [jax,gpu]
├── README.md # Documentazione tecnica ufficiale, telemetria e benchmark (Questo file)
└── dense_evolution.py # Codice sorgente core del simulatore (DenseSVSimulator v8.0)
📜 Licenza e Note Legali
Il progetto è interamente distribuito sotto i termini della licenza ufficiale MIT.
MIT License
Copyright (c) 2026 salvatore pennacchio [tatopenn-cell]
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dense_evolution-8.0.0.tar.gz.
File metadata
- Download URL: dense_evolution-8.0.0.tar.gz
- Upload date:
- Size: 22.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
81f78112c78216921a77a95b2aa6cbb7220d6e9d55c41d735cdfe0b7f6bc078e
|
|
| MD5 |
671ea6eecf5046617e2f190b94c1f977
|
|
| BLAKE2b-256 |
1ff8a5c3f4a2f559a48504dc5f1c50d9a1e371888e857f08b2212ac1fa9217cf
|
File details
Details for the file dense_evolution-8.0.0-py3-none-any.whl.
File metadata
- Download URL: dense_evolution-8.0.0-py3-none-any.whl
- Upload date:
- Size: 22.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e832013121ef24b1770d61ecddfc6a1120982861f05dbce008cf9f86714c7767
|
|
| MD5 |
fc49acb6b3d92fd1a8e513be9e43ede2
|
|
| BLAKE2b-256 |
588b01036bd462500b53570d4da2154ccb7c2a7dc57d46d572560d2ce0e430a3
|