Crate kryst

Crate kryst 

Source
Expand description

§kryst

PETSc-like KSP/PC in Rust with MPI-friendly design.

§Architecture decisions (read first)

  • LinOp::comm() is the single source of truth for parallel context (ADR-001).
  • Preconditioners compute z = M⁻¹ x; solvers decide left/right placement (ADR-002).
  • Flexible PCs use [Preconditioner::apply_mut] (FGMRES, etc.).
  • Options map to builders; no in-solver construction.

See docs/adr/ for rationale and trade-offs.

§Parallelism

With the rayon feature, CsrOp::matvec can use a parallel SpMV path for local-only matrices larger than KRYST_PAR_CUTOFF (default crate::parallel::threads::DEFAULT_PAR_CUTOFF). Control the pool size with KRYST_THREADS or RAYON_NUM_THREADS. See crate::parallel::threads for details.

Re-exports§

pub use utils::convergence::SolveStats;
pub use algebra::*;
pub use config::*;
pub use context::*;
pub use core::*;
pub use error::*;
pub use matrix::*;
pub use reduction::*;
pub use utils::*;

Modules§

algebra
Basic numeric traits and operations used throughout the crate.
config
context
Context module for KrylovKit linear algebra library.
core
error
matrix
Matrix module: dense and sparse matrix types and traits.
parallel
preconditioner
Preconditioners
reduction
solver
Solver traits and adapters.
utils
Utility modules for logging, convergence checks, graph coloring, reordering, and profiling.

Macros§

pc_log
time_stage
Macro for timing a code block with automatic stage guard creation.
with_monitoring
Conditionally execute monitoring code only when monitoring is enabled.
with_profiling
Conditionally execute profiling code only when profiling is enabled.