paulistrings 0.1.2

Classical simulation of quantum circuits in the Pauli basis, parallel across threads, NUMA domains, MPI ranks and GPUs
Documentation
//! 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.
//!
//! These docs are a developer guide; the user-facing API is the Python package, documented at <https://lkdvos.github.io/paulistrings-rs/>.

#![warn(missing_docs)]
#![cfg_attr(docsrs, feature(doc_cfg))]

mod channel;
mod circuit;
mod collectives;
mod engine;
mod pauli_string;
mod pauli_sum;
mod phase;
mod readout;
mod rng;
#[cfg(any(test, feature = "test-utils"))]
#[doc(hidden)]
pub mod test_support;
mod truncation;

pub use channel::{support_mask, Channel, OutputBuffer, PauliRotation, PtmChannel};
pub use circuit::Circuit;
pub use collectives::Collectives;
pub use engine::bucketed::LayerScratch;
#[cfg(feature = "cuda")]
pub use engine::gpu;
#[cfg(feature = "mpi")]
pub use engine::partitioned::mpi;
pub use engine::partitioned::{
    numa_nodes, propagate_partitioned, CpuSet, DistributedSum, PartitionConfig, PartitionRowPolicy,
    PartitionRuntime, PartitionedSum, Placement, ScatterOptions, ScatterRows, TopologyError,
};
#[cfg(feature = "phase-timing")]
pub use engine::stats::PartitionPhaseStats;
#[cfg(feature = "phase-timing")]
pub use engine::stats::PhaseStats;
pub use engine::trace::{DeviceLayerRecord, PartitionLayerRecord, PartitionTrace};
pub use engine::transport::Transport;
pub use engine::{propagate, propagate_with, Direction, PropagateOptions};
pub use pauli_string::PauliString;
pub use pauli_sum::accumulator::BuildAccumulator;
pub use pauli_sum::{Gf2Hash, PartitionRows, PauliSum, P_MAX_BITS};
pub use phase::Phase;
pub use readout::{PauliAxis, ProductBasis, StabilizerError, StabilizerState};
pub use truncation::{
    And, ApproxTopN, BuiltinTruncation, CoefficientThreshold, CollapseSample, Or, TopN,
    TruncationPolicy, WeightCutoff,
};