Expand description
PRISM-Q: Performance Rust Interoperable Simulator for Quantum
A performance-first quantum circuit simulator with pluggable backends.
§Quick start
use prism_q::run_qasm;
let qasm = r#"
OPENQASM 3.0;
include "stdgates.inc";
qubit[2] q;
bit[2] c;
h q[0];
cx q[0], q[1];
"#;
let result = run_qasm(qasm, 42).expect("parse/sim failed");
let probs = result.probabilities.expect("no probabilities").to_vec();
// Bell state: ~50% |00>, ~50% |11>
assert!((probs[0] - 0.5).abs() < 1e-10);
assert!((probs[3] - 0.5).abs() < 1e-10);§Input model
The primary entrypoint accepts OpenQASM 3.0 strings (&str). See
circuit::openqasm for the supported subset.
§Backends
StatevectorBackend: full state-vector simulation (implemented)StabilizerBackend: Clifford-only O(n^2) simulation (implemented)SparseBackend: sparse state-vector O(k) simulation (implemented)MpsBackend: Matrix Product State O(n * chi^2) simulation (implemented)ProductStateBackend: per-qubit O(n) simulation for non-entangling circuits (implemented)TensorNetworkBackend: deferred contraction for low-treewidth circuits (implemented)FactoredBackend: dynamic split-state simulation for sparse-entanglement circuits (implemented)
§Native QEC
Measurement-record QEC programs use QecProgram or parse_qec_program.
run_qec_program executes supported Clifford QEC programs through packed
compiled sampling with Pauli-noise annotations. run_qec_program_reference
runs small correctness checks through the reference path.
Re-exports§
pub use backend::factored::FactoredBackend;pub use backend::factored_stabilizer::FactoredStabilizerBackend;pub use backend::mps::MpsBackend;pub use backend::product::ProductStateBackend;pub use backend::sparse::SparseBackend;pub use backend::stabilizer::StabilizerBackend;pub use backend::statevector::StatevectorBackend;pub use backend::tensornetwork::TensorNetworkBackend;pub use circuit::builder::CircuitBuilder;pub use circuit::Circuit;pub use circuit::ClassicalCondition;pub use circuit::Instruction;pub use circuit::SvgOptions;pub use circuit::TextOptions;pub use error::PrismError;pub use error::Result;pub use gates::BatchPhaseData;pub use gates::Gate;pub use gates::McuData;pub use gates::Multi2qData;pub use gates::MultiFusedData;pub use qec::compile_qec_program_rows;pub use qec::parse_qec_program;pub use qec::run_qec_program;pub use qec::run_qec_program_reference;pub use qec::QecBasis;pub use qec::QecCompiledRows;pub use qec::QecMeasurementRow;pub use qec::QecNoise;pub use qec::QecOp;pub use qec::QecOptions;pub use qec::QecPauli;pub use qec::QecProgram;pub use qec::QecRecordRef;pub use qec::QecSampleResult;pub use sim::compiled::compile_detector_sampler;pub use sim::compiled::compile_forward;pub use sim::compiled::compile_measurements;pub use sim::compiled::run_shots_compiled;pub use sim::compiled::CompiledDetectorSampler;pub use sim::compiled::CompiledSampler;pub use sim::compiled::CorrelatorAccumulator;pub use sim::compiled::DetectorSampleBatch;pub use sim::compiled::HistogramAccumulator;pub use sim::compiled::MarginalsAccumulator;pub use sim::compiled::NullAccumulator;pub use sim::compiled::PackedShots;pub use sim::compiled::ParityStats;pub use sim::compiled::PauliExpectationAccumulator;pub use sim::compiled::ShotAccumulator;pub use sim::compiled::ShotLayout;pub use sim::homological::noisy_marginals_analytical;pub use sim::homological::run_shots_homological;pub use sim::homological::ErrorChainComplex;pub use sim::homological::HomologicalSampler;pub use sim::noise::compile_noisy;pub use sim::noise::run_shots_noisy;pub use sim::noise::NoiseChannel;pub use sim::noise::NoiseEvent;pub use sim::noise::NoiseModel;pub use sim::noise::NoisyCompiledSampler;pub use sim::noise::ReadoutError;pub use sim::stabilizer_rank::run_stabilizer_rank;pub use sim::stabilizer_rank::run_stabilizer_rank_approx;pub use sim::stabilizer_rank::stabilizer_overlap_sq;pub use sim::stabilizer_rank::StabRankResult;pub use sim::unified_pauli::run_spd;pub use sim::unified_pauli::run_spp;pub use sim::unified_pauli::spd_to_probabilities;pub use sim::unified_pauli::spp_to_probabilities;pub use sim::unified_pauli::SpdResult;pub use sim::unified_pauli::SppResult;pub use sim::bitstring;pub use sim::run;pub use sim::run_counts;pub use sim::run_marginals;pub use sim::run_on;pub use sim::run_qasm;pub use sim::run_shots;pub use sim::run_shots_with;pub use sim::run_shots_with_noise;pub use sim::run_with;pub use sim::BackendKind;pub use sim::FactoredBlock;pub use sim::Probabilities;pub use sim::ShotsResult;pub use sim::SimulationResult;
Modules§
- backend
- Simulation backend trait and implementations.
- circuit
- Circuit intermediate representation.
- circuits
- Reusable benchmark and test circuit builders.
- error
- Error types for PRISM-Q.
- gates
- Gate definitions and matrix representations.
- qec
- Native measurement-record QEC program IR, parser, and runners.
- sim
- Simulation orchestration.