| --- |
| 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> |