This document provides a practical orientation to the current implementation. It is intended for developers who want to understand how the framework is organized and where to make targeted changes.
A typical execution path follows this sequence:
- Construct a
QuantumCircuit. - Optionally bind symbolic parameters.
- Optionally run transpiler passes.
- Execute with simulator backend or primitive.
- Consume outputs in algorithms or application code.
include/lindblad/circuit.hpp,src/circuit.cppinclude/lindblad/dag.hpp,src/dag.cpp
These files define circuit instructions, fluent construction APIs, and DAG transformations used by compilation flows.
include/lindblad/simulators/*.hppsrc/simulators/*.cpp
Statevector, density matrix, Clifford, and MPS simulators each provide specialized execution behavior.
include/lindblad/noise.hpp,src/noise/*.cppinclude/lindblad/operators.hpp,src/quantum_info/*.cpp
These modules model channels/noise and provide operator algebra and metrics used by primitives and algorithms.
include/lindblad/transpiler.hppsrc/transpiler/**/*.cpp
Layout, routing, basis translation, and local optimization passes are implemented here.
include/lindblad/primitives.hpp,src/primitives/*.cppinclude/lindblad/algorithms.hpp,src/algorithms/*.cpp
Primitives (Estimator, Sampler) provide reusable execution interfaces. Algorithms build on primitives.
src/backends/local_backend.cppbindings/python_bindings.cppsrc/qasm/*.cpp
These files expose runtime selection behavior, Python interoperability, and QASM import/export pathways.
- Unit tests:
tests/ - Benchmarks:
benchmarks/
Use tests for correctness checks and benchmarks for performance regressions or optimizations.
README.mddocs/Architecture.mddocs/BuildAndTest.mddocs/APIOverview.mddocs/DevelopmentGuide.mddocs/algorithms/— one page per algorithm family (QPE, QFT, VQE, QAOA, Grover, BV, Simon, etc.)docs/api/— method and class deep-dives (circuit, gates, simulators, backends, noise, transpiler, etc.)