paulistrings/
lib.rs

1//! The Rust core of `paulistrings-rs`: operators evolved in the Pauli basis under gates and noise channels, stored as a GF(2)-bucketed `PauliSum` and optionally partitioned over NUMA domains, MPI ranks or CUDA devices.
2//!
3//! These docs are a developer guide; the user-facing API is the Python package, documented at <https://lkdvos.github.io/paulistrings-rs/>.
4
5#![warn(missing_docs)]
6#![cfg_attr(docsrs, feature(doc_cfg))]
7
8mod channel;
9mod circuit;
10mod collectives;
11mod engine;
12mod pauli_string;
13mod pauli_sum;
14mod phase;
15mod readout;
16mod rng;
17#[cfg(any(test, feature = "test-utils"))]
18#[doc(hidden)]
19pub mod test_support;
20mod truncation;
21
22pub use channel::{support_mask, Channel, OutputBuffer, PauliRotation, PtmChannel};
23pub use circuit::Circuit;
24pub use collectives::Collectives;
25pub use engine::bucketed::LayerScratch;
26#[cfg(feature = "cuda")]
27pub use engine::gpu;
28#[cfg(feature = "mpi")]
29pub use engine::partitioned::mpi;
30pub use engine::partitioned::{
31    numa_nodes, propagate_partitioned, CpuSet, DistributedSum, PartitionConfig, PartitionRowPolicy,
32    PartitionRuntime, PartitionedSum, Placement, ScatterOptions, ScatterRows, TopologyError,
33};
34#[cfg(feature = "phase-timing")]
35pub use engine::stats::PartitionPhaseStats;
36#[cfg(feature = "phase-timing")]
37pub use engine::stats::PhaseStats;
38pub use engine::trace::{DeviceLayerRecord, PartitionLayerRecord, PartitionTrace};
39pub use engine::transport::Transport;
40pub use engine::{propagate, propagate_with, Direction, PropagateOptions};
41pub use pauli_string::PauliString;
42pub use pauli_sum::accumulator::BuildAccumulator;
43pub use pauli_sum::{Gf2Hash, PartitionRows, PauliSum, P_MAX_BITS};
44pub use phase::Phase;
45pub use readout::{PauliAxis, ProductBasis, StabilizerError, StabilizerState};
46pub use truncation::{
47    And, ApproxTopN, BuiltinTruncation, CoefficientThreshold, CollapseSample, Or, TopN,
48    TruncationPolicy, WeightCutoff,
49};