File size: 13,303 Bytes
a535c7f 92b1ba8 2c5c318 92b1ba8 4eff328 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 | ---
license: bsl-1.0
language:
- en
pipeline_tag: feature-extraction
---
```
βββββββ ββββββββββββ βββββββββββββββββββ
βββββββββββββββββββββ βββββββββββββββββββ
βββ βββββββββ ββββββ βββββββββββββββββ
βββ βββββββββ ββββββββββββββββββββββββ
βββββββββββββββββββ ββββββββββββββββββββββ
βββββββ βββββββββββ βββββββββββββββββββββ
βββββββββββ ββββββββββ βββ βββ βββββββββββββββ βββββββ ββββ βββ
βββββββββββ ββββββββββββββ βββ βββββββββββββββββββββββββββββ βββ
ββββββ βββ ββββββ ββββββ βββ βββ βββ ββββββ βββββββββ βββ
ββββββ ββββ βββββββ ββββββ βββ βββ βββ ββββββ βββββββββββββ
ββββββββ βββββββ βββββββββββββββββββββββββ βββ βββββββββββββββ ββββββ
ββββββββ βββββ βββββββ ββββββββ βββββββ βββ βββ βββββββ βββ βββββ
```
**Dense Statevector Quantum Simulator Β· JAX XLA Β· NISQ Β· VQE Β· QML**
=
[](https://pypi.org/project/dense-evolution/)
[](https://www.python.org/)
[](LICENSE.md)
[](https://github.com/tatopenn-cell/Dense-Evolution/actions)
[](https://github.com/tatopenn-cell/Dense-Evolution-Ising-Tests/actions/workflows/ci.yml)
=======
**Dense Statevector Quantum Simulator Β· JAX XLA Β· NISQ Β· VQE Β· QML**
---
## β What It Is
**Dense Evolution** is a high-performance statevector simulator engineered for deep NISQ circuits, VQE pipelines, and QML workloads. It eliminates Kronecker product overhead entirely via stride-sliced linear kernel fusion compiled through JAX XLA β keeping memory at the theoretical minimum of `2βΏ Γ 16 bytes`.
The integrated `dash.py` dashboard provides live ipywidgets telemetry across 6 quantum observables per simulation run, directly inside Google Colab or Jupyter.
---
## β Install
```bash
pip install dense-evolution
# full stack: JAX Β· GPU Β· dashboard
pip install dense-evolution[full]
# development
git clone https://github.com/tatopenn-cell/Dense-Evolution.git
cd Dense-Evolution && pip install -e .[full]
```
**Google Colab (3 lines):**
```python
!git clone https://github.com/tatopenn-cell/Dense-Evolution.git
%cd Dense-Evolution
!pip install -e .
```
---
## β Quick Start
```python
from dense_evolution import DenseSVSimulator, QASMParser
# parse any OpenQASM 2.0 string
qasm = """
OPENQASM 2.0;
include "qelib1.inc";
qreg q[3];
h q[0];
cx q[0], q[1];
cx q[1], q[2];
"""
parser = QASMParser()
circuit = parser.parse(qasm)
sim = DenseSVSimulator(n_qubits=3)
sim.run_circuit_jit_beast_mode(circuit.ops)
```
---
**Dashboard (Colab / Jupyter):**
```python
import dash
from IPython.display import display, clear_output
clear_output()
display(dash.dashboard_unificata)
```
---
## β Architecture
```
dense_evolution/
βββ registry.py hardware detection Β· JAX / CuPy / NumPy capability flags
βββ gates.py GATES{} Β· PARAMETRIC_GATES{} Β· GATE_IDS{}
βββ noise_model.py Kraus channels Β· stochastic trajectory engine
βββ parser.py QASMParser Β· QASMCircuit Β· OpenQASM 2.0 / 3.0
βββ compiler.py _apply_gate_fast_step (jit) Β· _compile_and_run_circuit_jit
βββ simulator.py DenseSVSimulator Β· vmap batch VQE Β· chunked execution
βββ dash.py ipywidgets dashboard Β· VQE engine Β· MD simulation
```
**Data flow per run:**
```
βΆ Run
ββ core_calcolo_quantistico() parse β JIT execute β apply noise
ββ ottimizza_vqe() Hellmann-Feynman AD β ADAM β df_vqe_telemetry
ββ run_md_simulation_dummy() QM/MM dynamics β df_md_telemetry + Pearson matrix
ββ build_panel_*(res) matplotlib figure β display()
```
---
## β Core Features
| Feature | Detail |
|---|---|
| **Linear Kernel Fusion** | Stride-sliced tensor ops via JAX XLA β zero Kronecker matrices |
| **Circuit Chunking** | Fixed-size JIT blocks eliminate tracer overhead on 1000+ gate circuits |
| **Kraus Noise Channels** | `depolarizing` `amplitude_damping` `phase_damping` `bitflip` `combined` β stochastic, O(2βΏ) cost |
| **VQE + ADAM** | Hellmann-Feynman gradient via JAX AD Β· positional parameter injection into any QASM 2.0 |
| **vmap Batch Sweep** | `run_parametric_batch_jit()` evaluates full parameter grids in one JIT call |
| **Backend Agnostic** | NumPy CPU Β· JAX XLA CPU/TPU Β· CuPy CUDA β runtime selection, zero code changes |
| **Live Dashboard** | 8-panel ipywidgets telemetry: probability, VQE energy, entropy, purity, gradient, noise, ΞΈ-correction, Pearson heatmap |
---
## β Benchmarks
> Measured on Google Colab Free Tier (CPU runtime)
| Metric | Value |
|---|---|
| Numerical drift (30-layer Ansatz, 1360 gates) | `Ξ = 1.11 Γ 10β»ΒΉβΆ` |
| Memory footprint @ 20q | `32 MB` (float64) Β· `16 MB` (float32) |
| JIT compile overhead (first run) | `< 400 ms` |
| Gate throughput after warm-up | `> 10βΆ gates/s` (CPU) |
| Maximum tested qubits (Colab Free) | `24q` stable Β· `33q` high-RAM runtime |
---
## β Dashboard Panels
| Panel | Contents |
|---|---|
| **Overview** | R0 header Β· R1 P(\|nβ©) histogram + Top-12 states Β· R2 wavefunction helix 3D + metrics table Β· R3 noise analysis + shot histogram Β· R4βR6 VQE telemetry Γ 6 Β· R7 Pearson heatmap |
| **Fisica Stato** | Bloch projection Β· Schmidt rank Β· coherence vector |
| **Mosaico 1008q** | 2D probability density map up to 1008 qubits |
| **VQE Results** | 6-subplot telemetry: energy convergence, entropy, purity, ββLβ, noise factor, ΞΈ-correction |
| **MD Results** | 6-subplot MD telemetry + masked Pearson correlation heatmap |
| **Performance** | Gate throughput Β· JIT compile time Β· RAM usage |
---
## β Circuit Library (30+ presets)
All circuits are stored as OpenQASM 2.0 strings in `QASM_LIBRARY`.
**Standard** β Bell Ξ¦βΊ, QFT 4q/8q, Toffoli, Adder 2-bit, Deutsch-Jozsa, Bernstein-Vazirani
**Algorithms** β Grover 3q/4q, Simon 4q, Shor 15, HHL, QAOA Max-Cut 4q, QPE 5q, Quantum Walk, Teleportation, BB84
---
## β VQE Engine
**Positional parameter injection** β `QASMParser` tokenizes all literals to `0.0` for JIT speed. VQE recovers parameters by:
1. counting parametric gates (`rx ry rz p u1 cp crz`) β `n_params`
2. initializing `ΞΈ β ββΏ` uniform in `[βΟ, Ο]`
3. injecting `ΞΈ[i]` sequentially by gate order in the AST via `risolvi_qasm()`
Compatible with any custom OpenQASM 2.0 string without pre-labelling.
**Gradient & update rule:**
$$\frac{\partial E}{\partial \theta_i} = \langle\psi(\theta)|\,\frac{\partial H}{\partial \theta_i}\,|\psi(\theta)\rangle \qquad \theta \leftarrow \theta - \frac{\alpha\,\hat{m}_t}{\sqrt{\hat{v}_t}+\varepsilon}$$
**Telemetry columns** (β `df_vqe_telemetry`):
| Column | Unit | Description |
|---|---|---|
| `VQE_Energy` | Ha | β¨Ο\|H\|Οβ© |
| `Entropy` | bit | βTr(Ο logβ Ο) |
| `Purity` | β | Tr(ΟΒ²) β [1/d, 1] |
| `Gradient` | β | ββLβ β barren plateau detection |
| `Noise_Factor` | β | fidelity-derived noise proxy |
| `Theta_Correction` | rad | ADAM step norm |
---
## β Hamiltonian Library
Auto-filtered by qubit count to prevent shape mismatch.
| Molecule | Qubits | Bond length | Eβ (Ha) |
|---|:---:|:---:|:---:|
| Hβ | 2 | 0.74 Γ
| β1.13 |
| HββΊ | 3 | 0.85 Γ
| β1.28 |
| LiH | 4 | 1.40 Γ
| β2.31 |
| HβO | 5 | 0.96 Γ
| β4.12 |
Custom: JSON array of diagonal eigenvalues, length `2^n_qubits`.
---
## β Noise Models
All channels applied as post-circuit Kraus operations on the full statevector.
| Model | Kraus operators | Physical process |
|---|---|---|
| `ideal` | I | noiseless |
| `depolarizing` | {β(1βp)I, β(p/3)X,Y,Z} | isotropic Pauli error |
| `amplitude_damping` | {Kβ, Kβ} | Tβ energy relaxation |
| `phase_damping` | {Kβ, Kβ} | Tβ dephasing |
| `bitflip` | {β(1βp)I, βpΒ·X} | bit flip Οβ |
| `combined` | depolarizing(p/2) β amp_damp(p/3) | worst-case NISQ |
Fidelity: Bhattacharyya `F = Ξ£α΅’ β(pα΅’qα΅’)` and TVD `= Β½Ξ£α΅’|pα΅’βqα΅’|` computed on every noisy run.
---
## β Mitigation & Predictive Healing Models
Active error tracking and stabilization parameters integrated natively into the simulation runtime.
| Model | Variables / Operators | Physical process |
|---|---|---|
| `dephasing_tracking` | Ξ_pre_emp β Ξ£ | predictive deviation vs ideal eigenstate |
| `kappa_stabilization` | ΞΊ-strength routine | proactive statevector profile shielding |
| `richardson_integration` | {Ξ»β = 1.0, Ξ»β = 2.0} | dual-point zero-noise trajectory approximation |
Compilation: Full **XLA Kernel Fusion** via `@jax.jit` for mass-parallelized trajectory sweeps (< 1.0s).
---
## β Chunk Engines (Anti-OOM)
All operations parcellized dynamically using dual-stage longitudinal and transverse architectural shields.
| Model | Execution parameters | Physical process |
|---|---|---|
| `chunk1` | `circuit_slice = target[i : i + chunk_size]` | instruction loop-unroll kill |
| `chunk2` | `alloc_dim = 2 ** chunk_size_bits` | transverse Hilbert slicing |
| `Chunk` | `sim = Chunk(n_qubits)` | hardware-adaptive anti-OOM |
Performance: Hard-locked at `15%` max RAM available with **-86.47% Latency Collapse** via global static JIT cache injection.
---
### πͺ [SHIELD::OOM] // Chunk Engine
```python
from dense_evolution import Chunk
sim = Chunk(27)
circuit_ops = [['h', i] for i in range(27)]
sim.run_chunk(circuit_ops, 500)
```
### 𧬠[SYS::ARCH]
* `chunk1` -> Slices gate arrays into windows to kill JAX compilation stalls.
* `chunk2` -> Slices raw Hilbert statevectors into isolated RAM allocations.
### β‘ [BENCH::VERDICT]
* **Qubits**: 27 Qubits // 134M States.
* **Memory**: Hard-locked at 15% RAM threshold.
* **Speed**: **-86.47% Latency Collapse** via Static JIT.
\---
### Anti-OOM Chunk Engine vs PennyLane β Windows CPU (8 GB RAM)
> Dense Evolution maintains constant ~2 GB RAM at any qubit count via dynamic chunking.
> PennyLane allocates the full statevector β OOM beyond 26q.
| Qubits | Hilbert Space | PennyLane | PennyLane RAM | Dense Evolution | Dense RAM | Chunk Geometry |
|:------:|:-------------:|:---------:|:-------------:|:---------------:|:---------:|:--------------:|
| 24 | 16,777,216 | β
SUCCESS | 307 MB | β
SUCCESS | 516 MB | 1Γ (2Β²β·) |
| 26 | 67,108,864 | β
SUCCESS | 1,074 MB | β
SUCCESS | 2,050 MB | 1Γ (2Β²β·) |
| 28 | 268,435,456 | β OOM | β | β
SUCCESS | 2,050 MB | 2Γ (2Β²β·) |
| 30 | 1,073,741,824 | β OOM | β | β
SUCCESS | 2,048 MB | 8Γ (2Β²β·) |
| 32 | 4,294,967,296 | β OOM | β | β
SUCCESS | 2,048 MB | 32Γ (2Β²β·) |
---
## β Changelog
### v8.1.5
- `chunk.py` β `SafeMemoryGuard` class: hard block at configurable free-RAM threshold (default 15%), soft warning at 2Γ threshold, `gc.collect()` before every check
- `chunk.py` β `Chunk` no longer subclasses `DenseSVSimulator`; inner simulator allocated at `safe_qubits` only β eliminates `RESOURCE_EXHAUSTED` on 28qβ34q circuits
- `chunk.py` β `CircuitChunker.split_circuit` RAM-checks every gate-slice before dispatch
- `chunk.py` β `MemoryChunker` attributes (`num_chunks`, `chunk_size_bits`, `dtype`) forwarded as `@property` on `Chunk` for benchmark compatibility
### v8.1.6
- Modular package structure (`dense_evolution/` directory)
## β License
**Business Source License 1.1** β converts automatically to **Apache 2.0** on **1 June 2029**.
- Non-commercial use: unrestricted
- Commercial use: β€ 24 allocated qubits Β· β€ 1000 circuits/day Β· β€ 10,000 shots/circuit
- Attribution required on all copies: `Β© 2026 Salvatore Pennacchio <jtatopenn@libero.it> β Dense Evolution`
Full text: [LICENSE.md](LICENSE.md)
---
<div align="center">
<sub>Β© 2026 Salvatore Pennacchio β Dense Evolution</sub>
</div> |