CQ-HECS (Classical Quantum High-Efficiency Compute Simulator) ist ein klassischer Quantenschaltungsemulator mit einer geprüften Four-Path-Architektur, einer cq-hecs-CLI mit festem JSON-Vertrag, Qiskit-BackendV2-Integration und einem eigenständigen C++20/Vulkan-Nativkern. Alle vier Simulationspfade rechnen ausschließlich auf der CPU; der Nativkern ist ein separat gebautes, separat getestetes Artefakt.
Das Versprechen dieses Projekts ist nicht universelle effiziente Simulation, sondern:
- Keine stillen Approximationen. Bindungsdimensionen werden nie heimlich abgeschnitten. Wo eine Grenze erreicht wird, eskaliert das Ergebnis oder wird als
unresolved=Truemarkiert — niemals geraten. - Keine erfundenen Resultate. Zählungen, die nicht wirklich gemessen wurden, werden nicht ausgegeben; unbekannte Gatter werden mit typisiertem Fehler abgelehnt, nicht als Identität behandelt.
- Fehlerschranken mit Namen.
error_bound(bewusste Näherung),numerical_error_bound(numerische Diagnostik) undsampling_error_bound(endliche Stichprobe) sind getrennt. Wo keine gültige Schranke ableitbar ist, stehtNone— keine Zahl zum Schein. - Ehrliche Grenzen. Keine Aussage über Bereiche, die nicht tatsächlich gemessen oder bewiesen wurden; die Hardware-Verifikationsstufen sind je Plattform ausgewiesen (§8).
| Domäne / Schaltungsklasse | Was CQ-HECS kann (verifiziert) | Was CQ-HECS nicht kann (Grenzen) |
|---|---|---|
| Reine Clifford-Schaltungen ( |
Exakte Simulation über das Gottesman-Knill-Tableau (GF(2)-symplektische Arithmetik); polynomielle Zeit- und Speicherskalierung; 300+ Qubits GHZ- und Stabilizer-Schaltungen mit 1.000+ echten Stichproben über Pfad A. | Kein universeller Simulator: das erste nicht-Clifford-Gatter verlangt einen anderen Pfad. |
| Niedriger |
Pfad B: exakte Stabilizer-Rank-Zerlegung der nicht-Clifford-Gatter (kein Term wird gestrichen), Auswertung in IEEE-754 float64. Implementierter Deckel: 22 Qubits (Implementation-Deckel, kein Theorem). | Skaliert exponentiell mit dem T-Count ($O(2^{\alpha T})$); tiefe zufällige Clifford+T-Schaltungen übersteigen jedes Rangbudget. |
| 1D Area-Law Verschränkung | Pfad C: untruncated MPS — die Bindungsdimension wächst zur vollen numerischen Rangstufe; SVD verwirft nur Werte unterhalb der Relativschwelle (1e-13 × σ_max); natives sequentielles Sampling skaliert ohne dichten |
Keine effiziente Repräsentation für dichte 2D-/3D-Verschränkung; χ kann exponentiell wachsen. |
| Volume-Law / tiefe Zufallsschaltungen | Pfad C eskaliert bei Speichergrenze transparent auf Pfad D oder markiert unresolved=True. |
Kein Brechen von BQP ≠ BPP: Random Circuit Sampling bleibt klassisch nicht verlustfrei in Polynomialzeit simulierbar. |
| Zertifizierte Observable-Näherung (Pfad D) | Heisenberg Sparse-Pauli-Dynamics mit bewiesener Schranke $\Delta \le \sum_{P \in \mathcal{D}} | c_P |
| ARX & Krypto-Testbench | Algebraische SAT-Analyse für reduzierte Runden von ChaCha20 (20-Runden-Spezifikation), SHA-256 (64 Schritte) und BLAKE2b (12 Runden). | Kein Brechen voller kryptografischer Primitives — keine Preimage-Inversion für 256-Bit-Vollverschlüsselungen. |
| Endliche Stichproben | Der Stichprobenfehler ist eine supportgrößen-abhängige Konzentrationsschranke (Weissman et al. 2003): |
Keine dimensionsfreie Schranke auf beliebigen Supportgrößen; bei sehr großem |
flowchart TD
A["Quantum Circuit / OpenQASM / Qiskit"] --> B["EntanglementAdaptiveRouter / CircuitAnalyzer"]
B -->|"T-Count = 0 (Pure Clifford)"| PathA["Path A: Stabilizer-Tableau (Exact)"]
B -->|"Low T-Count"| PathB["Path B: Stabilizer-Rank-Decomposition (Exact algebra, float64)"]
B -->|"Area-Law/1D + Memory-aware"| PathC["Path C: Untruncated MPS (CPU)"]
B -->|"Observable-only, zertifiziert / Erzwungen fallback von C"| PathD["Path D: Sparse-Pauli (Certified Observables)"]
PathA --> R["SimulationResult (path, exact, error_bound, unresolved)"]
PathB --> R
PathC --> R
PathD -->|"Δ > ε"| U["unresolved=True (kein Rat)"]
PathD -->|"Δ ≤ ε"| R
| Pfad | Methode | Zielklasse | Algebra | Fehlerschranke | Ressourcengrenze | Verhalten an der Grenze |
|---|---|---|---|---|---|---|
| A | Stabilizer-Tableau | Reines Clifford ( |
GF(2)-symplektisch, exakt |
|
polynomiell |
Nicht-Clifford-Gatter → typisierte Ablehnung (kein stilles Ignorieren) |
| B | Stabilizer-Rank | Niedriger |
exakte Zerlegung, Auswertung float64 | exakte Algebra; numerische Diagnostik separat |
|
Deckel-/Gate-Überschreitung → typisierter Fehler (keine Fake-Counts) |
| C | MPS | 1D Area-Law | float64; SVD nur unterhalb der Relativschwelle |
numerical_error_bound=None; discarded_spectral_mass_diagnostic
|
Speicherbudget; natives Sampling bis 500 Qubits (dense to_statevector ≤ 20 Qubits) | Budget → kohärenter Abbruch, dann D/unresolved; Sampling-Grenze → keine Counts statt Platzhalter |
| D | Sparse-Pauli | Observable-Queries | Konjugation in der |
Pauli-Termbudget K; 200+ Qubits via selektiver Observablen-API |
unresolved=True, ohne Werte |
Jedes SimulationResult trägt einen verbindlichen, maschinenlesbaren Zustand:
Zustand (SimulationState) |
Kriterien | Bedeutung |
|---|---|---|
EXACT |
exact == True, kein bewusster Näherungsschritt |
Algebraisch exakt; die float64-Fehlerklasse ist über numerical_mode separat ausgewiesen (Pfad A, B, untruncated C). |
CERTIFIED |
not exact und not unresolved
|
Zertifizierte Näherung mit bewiesener Schranke über die tatsächlich zurückgegebene Größe (Pfad D). |
UNRESOLVED |
unresolved == True oder |
Schaltung überschreitet Verschränkungs-, Speicher- oder Toleranzgrenzen. Die Simulation verweigert das Raten und liefert keine Werte. |
FAILED |
Ausnahme / Validierungsfehler | Technischer Fehler in Ausführung oder Pipeline; nie „erfolgreich aussehend". |
Wichtig: exact=True heißt keine bewusste Näherung angewendet,
nicht (mathematisch exakte Arithmetik). Die Arithmetik-Klasse ist auf jedem
Resultat über numerical_mode explizit benannt (z. B.
exact-symplectic-gf2, float64-exact-decomposition, float64-untruncated-mps,
float64-heisenberg-certified).
Clifford-Gatter (
Der Zustand wird über ein binäres symplektisches Tableau (Aaronson-Gottesman) verlustfrei nachverfolgt. Die Arithmetik ist vollständig ganzzahlig — kein Gleitkommawert beteiligt, weshalb error_bound = 0.0 hier eine algebraische Aussage ist.
Nicht-Clifford-Rotationen (
Die Zerlegung selbst ist mathematisch exakt; die Auswertung nutzt IEEE-754 float64 und ist als numerical_mode = float64-exact-decomposition benannt. Der Sampling-Fehler wird separat über die supportgrößen-abhängige Schranke berichtet.
Bei zwei-Qubit-Kontraktionen wird eine SVD auf dem zweistelligen Block berechnet:
Es gibt keine Budget-Truncation: die Bindungsdimension wächst zur vollen numerischen Rangstufe. Die Rangwahl verwirft nur Werte unterhalb einer relativen Rundungsschwelle (1e-13 × σ_max) — eine Gleitkomma-Aussage, keine mathematische Approximation. Die verworfene Spektralmasse ist als discarded_spectral_mass_diagnostic gemeldet, aber sie ist keine zertifizierte Schranke für die zurückgegebenen Amplituden; numerical_error_bound bleibt deshalb None.
Observablen werden in der Heisenberg-Darstellung rückwärts evolviert:
Werden Operatoren mit kleinen Koeffizienten verworfen (
Diese Schranke gilt nur für die angefragten Observablen, nicht für eine gemeinsame Messverteilung. Sobald unresolved=True ohne Werte gemeldet.
Für eine kategoriale Verteilung mit Stützgröße
Bei
Das Python-Paket, die cq-hecs-CLI und alle vier Pfade laufen ausschließlich
auf der CPU und benötigen kein Vulkan-SDK:
pip install . # aus dem Projektverzeichnis (Checkout)
cq-hecs doctor
cq-hecs run name:bell --shots 1000 --format jsonDer Nativkern (
cq_hecs.exe/cq_hecs.dll/_cqhecs_core) benötigt das Vulkan-SDK (die öffentlichen Header inkludierenvulkan/vulkan.h). Das betrifft nur den nativen Build — nicht die Python-Oberfläche.
# CMake/Ninja, C++-Compiler, Vulkan SDK (nur für den Nativkern)
sudo apt-get update
sudo apt-get install -y cmake ninja-build g++ libvulkan-dev glslang-tools vulkan-tools
git clone https://github.com/timfromhcs/CQ-HECS.git
cd CQ-HECS
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
pip install -e .# Vulkan SDK via Chocolatey oder offiziellen Installer (nur für den Nativkern)
choco install vulkan-sdk cmake ninja -y --no-progress
git clone https://github.com/timfromhcs/CQ-HECS.git
cd CQ-HECS
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install --upgrade pip
pip install -r requirements.txt
pip install -e .
.\build.bat # Nativkern (optional)python -m build
# => dist/cqhecs-2.0.0-py3-none-any.whl und dist/cqhecs-2.0.0.tar.gzcq-hecs version # Versionsinformation
cq-hecs doctor # Umgebung: OS, Python, Nativ-Binding, Vulkan-Stufen
cq-hecs backend list # Fähigkeiten und Gate-Sets der Pfade A-D
cq-hecs analyze name:ghz8 # statische Analyse + Pfadempfehlung
cq-hecs run name:bell --shots 1000 --seed 42
cq-hecs verify name:bell --reference aer
cq-hecs benchmark smoke # reproduzierbarer Smoke-Benchmark--format json schreibt genau ein JSON-Dokument auf stdout; Diagnosen gehen
immer an stderr. Exit-Codes: 0 Erfolg, 1 unerwarteter Fehler, 2
Verwendungsfehler, 3 unresolved, 4 Umgebung nicht verfügbar.
Verfügbare Referenzschaltungen (cq-hecs analyze name:<name>): bell,
bell_measured, clifford6, ghz8, ghz8_measured, ghz16, low_t_rank4,
mps6, sparse_pauli4.
Kompiliert alle Vulkan-Compute-Shader mit glslangValidator:
python scripts/verify_vulkan_shaders.pycmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DCQ_BUILD_TESTS=ON
cmake --build build --config Release
ctest --test-dir build --output-on-failurepytest tests/ -ra # vollständige Suite
pytest tests/test_correctness_contracts.py -v # 4-Pfad-Korrekturregressionen
pytest tests/test_cli_contract.py -v # JSON-Reinheit, Exit-Codes
python scripts/check_version.py # Versionskonsistenz aller Flächen
python scripts/verify_no_silent_truncation.py # Audit gegen Silent Cutoffs
python scripts/run_mutation_tests.py # Mutation harness (fail-closed)Reproduzierbarer Smoke-Benchmark — der Datensatz, an dem die aktuellen Claims hinterlegt sind:
cq-hecs --format json benchmark smokeDie Rohdaten liegen in benchmarks/smoke_results_current.json; Provenienz (Commit, Version, Hardware, Abhängigkeiten) ist in docs/BENCHMARKS.md erfasst.
Die historischen Mess-Tabellen bleiben in docs/BENCHMARKS.md als historisch/STALE gekennzeichnet und werden nicht als v2-Messwerte gelesen.
from qiskit import QuantumCircuit
from cqhecs.backend import CQHecsBackend
backend = CQHecsBackend(num_qubits=100) # backend_version == cqhecs.__version__
qc = QuantumCircuit(100)
qc.h(0)
for i in range(99):
qc.cx(i, i + 1)
qc.measure_all()
job = backend.run(qc, shots=1000)
result = job.result()
print(result.get_counts())Klassische Bit-Abbildung: Bei measure_all() erscheint Qubit q rechtsbündig
innerhalb des hinten angehängten klassischen Registers (Qiskit-Konvention,
Qubit 0 am weitesten rechts) — das Verhalten ist gegen Aer getestet.
from qiskit import QuantumCircuit
from cqhecs.router import EntanglementAdaptiveRouter
router = EntanglementAdaptiveRouter(error_tolerance=0.01)
qc = QuantumCircuit(4)
qc.h(0); qc.t(0); qc.cx(0, 1)
res = router.route_and_execute(qc, shots=1000)
print(res.path, res.exact, res.error_bound, res.unresolved)Der Router ist fail-closed: erzwungene Pfade werden nicht still umgeleitet;
nur typisierte Capability-/Ressourcenfehler lösen eine Eskalation aus —
keine willkürlichen Exceptions.
from qiskit import QuantumCircuit
from cqhecs.backends import PathDSparsePauliBackend
qc = QuantumCircuit(3)
qc.h(0); qc.cx(0, 1); qc.t(0); qc.cx(0, 2)
backend = PathDSparsePauliBackend(max_pauli_terms=512)
res = backend.execute(qc, shots=100)
print(res.expectation_values) # {"Z[0]": ..., "Z[0]Z[1]": ...} mit zertifizierter Schranke
print(res.error_bound) # Δ ≤ Σ|c_P| über alle ausgegebenen WerteEin gemeinsames Counts-Dict stammt von diesem Pfad nicht automatisch:
gemeinsame Verteilungen sind opt-in via allow_uncertified_joint_counts=True
und werden dann als keine gemeinsame Verteilung (counts_are_joint_distribution=False) markiert.
CQ-HECS unterscheidet strikt zwischen physisch verifizierter Ausführung, CI-Verifizierung und reiner Lade-/Prüfbarkeit:
| Plattform / GPU | Vulkan / Compute API | Verifikationsstufe | Status & Nachweis |
|---|---|---|---|
| Ubuntu Linux x64 + Mesa Lavapipe | Vulkan 1.3 SPIR-V (Software-Rasterizer) | CI_VERIFIED (Software-Vulkan) |
GitHub Actions (ubuntu-latest); Shader- und Pipeline-Konformität automatisiert geprüft. Keine physische GPU. |
| Windows Headless CI | Headless-Fallback / Null-Device-Guard | CI_VERIFIED (CI-Stufe) |
GitHub Actions (windows-latest). |
| Lokale Windows-Workstation | Vulkan 1.4 Loader | LOADER_VERIFIED |
Vulkan-Loader lädt und enumeriert genau ein Gerät. Kein Compute-Dispatch von CQ-HECS auf diesem Gerät nachgewiesen. |
| Apple Silicon (M1–M4) | MoltenVK / Metal | NOT_VERIFIED |
Kein Test auf dieser Hardware durchgeführt. |
| Intel Arc / NVIDIA / AMD diskret | Vulkan 1.3 Treiber | NOT_VERIFIED |
Kein Test auf dieser Hardware durchgeführt. |
Wichtig: Der Python-Pfad (Paket, CLI, alle vier Pfade) rechnet ausschließlich auf der CPU. Vulkan wird nur über den Nativkern genutzt; Shader-Kompilierung und Software-Vulkan belegen Integrationsverhalten, nicht physische GPU-Beschleunigung und keine Vendor-übergreifende Kompatibilität.
| Merkmal | CQ-HECS | Qiskit Aer MPS | NVIDIA cuTensorNet |
|---|---|---|---|
| Pfade | Vier explizit abgedeckte Pfade mit je eigenen Tests und dokumentierten Grenzen | MPS für 1D-artige Chains (CPU/GPU-Backend) | Tensor-Netzwerke, CUDA-GPU exklusiv (Lock-in) |
| Bind-Dimension Cutoff | Kein Cutoff im Python-Pfad C; verworfene Spektralmasse wird berichtet, zertifizierte Truncation nur in Pfad D | Standard-Truncation (Standard-χ) | SVD-Truncation mit Näherung |
| Fehlerüberwachung | Drei getrennte Quellen (Approximation / Numerik / Sampling) mit support-abhängiger Konzentrationsschranke | Nicht-zertifiziert | Approximate Truncation Error |
| Zustand bei Grenzüberschreitung | unresolved=True ohne Werte, bzw. kohärenter Abbruch |
Error / Fail ohne klare Grenzklassifikation | Truncation Error |
Keine Leistungs- oder Portabilitätsaussage ohne Messung. Die VRAM-/Zeitwerte aus früheren Benchmark-Tabellen wurden nach den Korrekturen in diesem Releasezyklus nicht neu gemessen und sind daher nicht als aktuelle Ergebnisse zu lesen. Siehe
docs/BENCHMARKS.mdfür den Reproduktionsstand.
| Dokument | Inhalt |
|---|---|
ARCHITECTURE.md |
Verbindliche Architekturübersicht |
docs/ARCHITECTURE.md |
Komponentenmatrix und Verifizierungsstufen |
docs/API_REFERENCE.md |
CLI-, Python- und C-ABI-Verträge |
docs/USAGE_GUIDE.md |
Geprüfte Kommandos und Nutzung |
docs/BENCHMARKS.md |
Aktuelle und historische Benchmarks (sauber getrennt) |
docs/V2_IMPLEMENTATION_MATRIX.md |
Was v2 implementiert, mit Test-Ankern |
research/v2/METHOD_CATALOG.md |
Methodenentscheidungen inkl. Verwerfungen |
research/v2/FORMALIZATION_STATUS.md |
Beweisstatus jeder verwendeten Aussage |
CHANGELOG.md · RELEASE_NOTES.md |
Versionsgeschichte und Freigabedaten |
CQ-HECS ist lizenziert unter der Apache License 2.0. Siehe LICENSE für den vollständigen Lizenztext.