Releases: tmathis720/kryst
Releases · tmathis720/kryst
Release list
v4.3.0
What's Changed
- Fix docs build for complex ASM dense blocks by @tmathis720 in #737
- Guard real-only code/tests with
not(feature = "complex")and fix MPI trait import to resolve compilation errors by @tmathis720 in #738 - Avoid heap allocations in degraded complex IluCsr::apply_mut by @tmathis720 in #739
- Avoid deprecated ParCsr field access in DistCsr conversion by @tmathis720 in #740
- Serialize ILU allocation counter tests by @tmathis720 in #741
- Add apply_vec_into / apply_vec_t_into destination-buffer APIs to Permutation by @tmathis720 in #742
- Use explicit ILU CSR permutation buffers by @tmathis720 in #743
- Use no-allocation permutation buffers in ILU complex apply by @tmathis720 in #744
- Document ILU CSR apply workspace contract by @tmathis720 in #745
- Add permutation identity allocation-guard test by @tmathis720 in #746
- Add ILU CSR real apply_mut no-allocation test by @tmathis720 in #747
- Clarify ILU CSR no-allocation solve path by @tmathis720 in #748
- Fix ILU allocation test feature gating by @tmathis720 in #749
- Fix no-default-features test build by @tmathis720 in #750
Full Changelog: v4.0.4...v4.3.0
v4.0.4
v4.0.3
What's Changed
- Add runtime-selectable PETSc-style PC families (FieldSplit/Shell/KSP/MG) by @tmathis720 in #316
- Expand KSP types: add Richardson / Chebyshev / CR / TCQMR / GCR by @tmathis720 in #317
- Add nested prefixed PC/KSP options and composite PC modes by @tmathis720 in #318
- Add distributed coarse strategy interface and MPI-aware PC upgrade/fallback by @tmathis720 in #319
- Expand PETSc compatibility documentation and cross-link from README/lib by @tmathis720 in #320
- Add scaffolding for additional PETSc PC types (FieldSplit, MG, KSP-as-PC, Shell, BDDC/GAMG placeholders) by @tmathis720 in #321
- Add minimal convergence tests for Chebyshev/CR/TCQMR/GCR and PipeGCR parsing/docs by @tmathis720 in #322
- Codex-generated pull request by @tmathis720 in #323
- Add AMG option controls: cycle, coarse solver, per-level smoothers, interp/strength variants by @tmathis720 in #324
- Add structured KSP/PC diagnostics and CLI
-ksp_view/-pc_viewflags by @tmathis720 in #325 - Fix MPI preconditioner upgrade fallback return by @tmathis720 in #326
- Fix overlay for GCR restart, Richardson and Chebyshev omega options by @tmathis720 in #327
- Codex-generated pull request by @tmathis720 in #328
- Gate backend-faer code and examples to fix no-default-features CI by @tmathis720 in #329
- Make Richardson scalar-generic with complex bridge and gate GMRES s-step test by @tmathis720 in #331
- Codex-generated pull request by @tmathis720 in #332
- Extend FieldSplit PC: Schur support, multiplicative/symmetric modes, and diagnostics by @tmathis720 in #333
- Implement MG hierarchy, cycles, and per-level smoother / coarse-solve wiring by @tmathis720 in #334
- Upgrade nested KSP preconditioner wiring and surface inner diagnostics by @tmathis720 in #335
- Add PCSHELL hooks, context support, and PC-failure propagation by @tmathis720 in #336
- Improve convergence diagnostics and breakdown handling by @tmathis720 in #337
- Add PipeGCR solver support by @tmathis720 in #338
- Add prototype BDDC preconditioner and wire -pc_bddc_* options by @tmathis720 in #339
- Codex-generated pull request by @tmathis720 in #340
- Codex-generated pull request by @tmathis720 in #341
- Manage nested KSP lifecycle for KSP-as-PC and add nested KSP tests by @tmathis720 in #342
- FieldSplit: add PETSc-style split modes, distributed block handling, Schur hooks and tests by @tmathis720 in #343
- Fix compilation errors: MG coarse-solve mutability, shell callbacks, diagnostics, and sparse kernels by @tmathis720 in #344
- Fix shell callback invocation, borrow conflict, and generic AddAssign bounds by @tmathis720 in #345
- Codex-generated pull request by @tmathis720 in #346
- Codex-generated pull request by @tmathis720 in #347
- Fix DenseOp downcast for format conversions by @tmathis720 in #348
- Codex-generated pull request by @tmathis720 in #349
- Extend MG with user transfers, coarsening/interp/restrict options and coarse KSP/PC controls by @tmathis720 in #350
- Add Shell PC transpose/symmetric hooks and typed context helpers by @tmathis720 in #351
- Distinguish NaN vs Inf divergence and map BiCG breakdowns to explicit reasons by @tmathis720 in #352
- Expand GAMG options with advanced coarsening/interpolation controls by @tmathis720 in #353
- Enable targeted complex-scalar paths for GMRES s-step and core preconditioners by @tmathis720 in #354
- Implement nested KSP-as-PC lifecycle with configurable inner solver and failure propagation by @tmathis720 in #355
- Deepen MG/GAMG hierarchy tuning and diagnostics by @tmathis720 in #356
- Standardize distributed preconditioner contracts and MPI adapter behavior by @tmathis720 in #357
- Enable preconditioning for block solvers, add reduction accounting and reproducibility tests by @tmathis720 in #358
- Align PETSc convergence mapping docs with implemented reasons by @tmathis720 in #359
- Fix hanging shell preconditioner hook-order test by @tmathis720 in #360
- Fix nested KSP-PC option handling and MG CSR wrapping by @tmathis720 in #361
- Surface all nested KSP failures from KSP preconditioner by @tmathis720 in #362
- Codex-generated pull request by @tmathis720 in #363
- Adjust nested KSP-as-PC test to accept inner max-its as non-failure by @tmathis720 in #364
- Fix pc_scaffold tests for backend-faer: use DenseOp and update expectations by @tmathis720 in #365
- Fix hanging CG reproducibility multi-thread test by @tmathis720 in #366
- Make MG hierarchy scalar-generic (CsrMatrix
) and add complex AMG/MG tests by @tmathis720 in #367 - Expand distributed GAMG coarse-grid policy knobs and instrumentation by @tmathis720 in #368
- Codex-generated pull request by @tmathis720 in #369
- Enhance FieldSplit Schur configurability, child scoping, and layout validation by @tmathis720 in #370
- Add first-class shell transpose/symmetric hooks and option wiring by @tmathis720 in #371
- Expose PC complex-capability diagnostics and add native-complex SOR path by @tmathis720 in #372
- Codex-generated pull request by @tmathis720 in #373
- Per-level MG/GAMG policy stacks, diagnostics, and distributed coarse-policy parsing by @tmathis720 in #374
- Extend nested KSP-as-PC controls and nested lifecycle propagation by @tmathis720 in #375
- Codex-generated pull request by @tmathis720 in #376
- Codex-generated pull request by @tmathis720 in #377
- Expand shell preconditioner op hooks and typed context plumbing by @tmathis720 in #378
- Codex-generated pull request by @tmathis720 in #379
- Codex-generated pull request by @tmathis720 in #380
- Fix KSP-as-PC scoped option precedence by @tmathis720 in #381
- Fix KSP-as-PC option precedence for nested solver configuration by @tmathis720 in #382
- Refactor pc_ksp to own nested KspContext with scoped inner options by @tmathis720 in #383
- Extend shell preconditioner callbacks, typed context helpers, and staged nested-failure propagation by @tmathis720 in #384
- Codex-generated pull request by @tmathis720 in #385
- Codex-generated pull request by @tmathis720 in #386
- Codex-generated pull request by @tmathis720 in #387
- Codex-generated pull request by @tmathis720 in #388
- Add latency-aware auto execution heuristics for KSP policies by @tmathis720 in #389
- Codex-generated pull request by @tmathis720 in #390
- Per-level MG/GAMG KSP/PC stacks, distributed repartition controls, and perf counters by @tmathis720 in #391
- Implement nested KSP-as-PC lifecycle with scoped inner options and monitor history by @tmathis720 in #392
- Extend FieldSplit with Schur/composite modes, scoped sub-solvers, and extraction modes by @tmathis720 in #393
- Add PETSc-style PCSHELL transpose/symmetric hooks and shared context helpers by @tmathis720 in #394
- Add reduction models, topology-aware Rayon sizing, and solver scaling microbench by @tmathis720 in https://github.com/tmathis720/k...
v3.2.1
What's Changed
- Fix BlockJacobi cfg-gated CsrMatrix imports for docs.rs all-features by @tmathis720 in #312
- Relax MPI GMRES s-step reduction test convergence assumptions by @tmathis720 in #313
- Fix Rayon ILU test assumptions and correct level building for parallel triangular solve by @tmathis720 in #314
- Stabilize GMRES nonsymmetric test by shifting random matrix diagonal by @tmathis720 in #315
Full Changelog: beta_v2...v3.2.1
v3.2.0
What's Changed
- Add CG-safe AMG configuration and tests by @tmathis720 in #154
- Add flexible multigrid stage to AMG presmoothing by @tmathis720 in #155
- Add AMG-aware deflation preconditioner by @tmathis720 in #156
- Finalize AMG row-sum compensation tests by @tmathis720 in #157
- Add adaptive interpolation stage to AMG by @tmathis720 in #158
- Add Chebyshev smoother tests and eigenbound safety by @tmathis720 in #159
- Add ASM-AMG hybrid preconditioner by @tmathis720 in #160
- Add FSAI smoother and tests by @tmathis720 in #161
- Add AMG rank and Galerkin diagnostics by @tmathis720 in #162
- Add mixed precision support for AMG by @tmathis720 in #163
- Add AMG cycle policies and K-cycle Krylov postsmoother by @tmathis720 in #164
- Fix nodal strength normalization and reuse node aggregates by @tmathis720 in #165
- Fix rank retry smoothing for multi-function interpolation by @tmathis720 in #166
- Avoid padding user NNS with zero vectors by @tmathis720 in #167
- Stage 13: SIMD kernels and SpMV planning by @tmathis720 in #168
- Implement distributed kernels and memory estimates by @tmathis720 in #169
- Propagate near-nullspace function count across AMG levels by @tmathis720 in #170
- Fix FSAI smoother application order by @tmathis720 in #171
- Disable PoU weights for restricted ASM by @tmathis720 in #172
- Restore Chebyshev beta recurrence in smoother by @tmathis720 in #173
- Fix AMG SPD probe and stabilize tests by @tmathis720 in #174
- Fix nodal compensation RHS handling by @tmathis720 in #175
- Refresh deflation matrix values during numeric update by @tmathis720 in #176
- Add async reductions and workspace primitives by @tmathis720 in #177
- Add Poisson3D generator and pipelined PCG scaling bench by @tmathis720 in #178
- Fix final residual check in pipelined PCG by @tmathis720 in #179
- Add configurable reduction mode for pipelined Krylov by @tmathis720 in #180
- Prepare s-step GMRES helpers by @tmathis720 in #181
- Implement block Arnoldi step and tests by @tmathis720 in #182
- feat: add gmres augmentation scaffolding by @tmathis720 in #183
- Introduce shared BlockVec and block matvec trait by @tmathis720 in #184
- Add solver regression tests and reduction instrumentation by @tmathis720 in #185
- Add IDR(s) solver implementation by @tmathis720 in #186
- feat: add scalar abstraction and update spmv by @tmathis720 in #187
- Use scalar alias for GMRES workspace buffers by @tmathis720 in #188
- Add scalar bridge adapters for matvec and preconditioner by @tmathis720 in #189
- Finish complex scalar support for GMRES family by @tmathis720 in #190
- Fix generic CSR operator trait bounds by @tmathis720 in #191
- Add initial testkit module by @tmathis720 in #192
- Bridge ILU CSR preconditioner to scalar-generic interface by @tmathis720 in #193
- Port FGMRES solver to scalar pipeline by @tmathis720 in #194
- Make bridge adapters generic and cover GMRES paths by @tmathis720 in #195
- Wire IDR(s) history buffers into dedicated caches by @tmathis720 in #196
- Bridge legacy preconditioner to scalar interface by @tmathis720 in #197
- Batch PCG reductions through dot engine helpers by @tmathis720 in #198
- parcsr: use scalar real alias for halo buffers by @tmathis720 in #199
- Add CSC transpose matvec support and regression by @tmathis720 in #200
- Add complex Matrix Market FGMRES example by @tmathis720 in #202
- Enforce real dot invariant for complex CG by @tmathis720 in #203
- Improve CG solver scalar handling by @tmathis720 in #204
- Ensure CG scalars stay real and add invariant tests by @tmathis720 in #205
- Enforce left preconditioning for CG/PCG and clarify error semantics by @tmathis720 in #206
- Introduce pair-loan bridge scratch for real-to-S adapters by @tmathis720 in #207
- Make reductions scalar-generic and gate Jacobi on complex by @tmathis720 in #208
- Add complex CG tests and refine solver residual handling by @tmathis720 in #209
- Add async reduction infrastructure and no-comm tests by @tmathis720 in #210
- Add rayon-backed vector kernels and integrate them into CG by @tmathis720 in #211
- Add asynchronous CG reductions with configuration knobs by @tmathis720 in #212
- Enable configurable parallelism for vector and CSR kernels by @tmathis720 in #213
- Refactor distributed CSR matvec around reusable halo plan by @tmathis720 in #214
- Document reproducible mode threading guidance by @tmathis720 in #215
- Add CG configuration surface and CI coverage by @tmathis720 in #216
- Implement pipelined CG variant by @tmathis720 in #217
- Harden workspace buffers and SuperLU_DIST feature gating by @tmathis720 in #218
- Honor reproducibility mode in local reductions by @tmathis720 in #219
- Gate dense solvers behind backend feature by @tmathis720 in #220
- Tighten distributed kernel accumulation by @tmathis720 in #221
- Add KrystScalar bounds to ILU pivot handling by @tmathis720 in #222
- Complete scalar prelude adoption for approxinv and ASM by @tmathis720 in #224
- Gate optional builds without faer by @tmathis720 in #225
- Align ILU configuration with scalar real types by @tmathis720 in #226
- Normalize pivot stats to real scalar types by @tmathis720 in #227
- Add local preconditioner kernel integration by @tmathis720 in #228
- Add ILU correctness and drop tolerance tests by @tmathis720 in #229
- Ensure workspace setup reruns and gate pipelined variants by @tmathis720 in #230
- Use scalar aliases in context layer by @tmathis720 in #231
- Align KSP interfaces with real scalar API by @tmathis720 in #232
- Fix KSP context debug and scalar handling by @tmathis720 in #233
- Use real scalar linops in KspContext by @tmathis720 in #234
- Fix deferred PC construction for complex builds by @tmathis720 in #235
- Refactor residual norm computations by @tmathis720 in #236
- Handle AMG/ASM in deferred PC chains by @tmathis720 in #237
- Guard KSP solve under complex feature by @tmathis720 in #238
- Skip real-only tests under the complex feature by @tmathis720 in #239
- Gate examples and tests for complex builds by @tmathis720 in #240
- Add distributed layout metadata and halo-exchange hooks to LinOp by @tmathis720 in #241
- Add MPI-aware (distributed) ASM preconditioner with RAS overlap support by @tmathis720 in #242
- Fix ASM MPI compilation errors by @tmathis720 in #243
- Add MonitorPolicy and rank0-only KSP monitors with option support by @tmathis720 in https://github.com/tmathis720/kryst...
v2.4.0
Kryst (KRYlov Subspace Toolkit) v2.4.0 — Release Notes
TL;DR
- New distributed path: ParCSR with halo-based SpMV for MPI.
- AMG leveled-up: richer coarsening/interpolation/relaxation, nodal + near-nullspace, non-Galerkin filtering, W-cycle, pluggable coarse solvers.
- ILU rebuilt: CSR-native ILU0/MILU0/ILUK/ILUT with pivoting, reordering, and zero-alloc solves.
- Side-aware solvers: explicit
PcSideacross CG/GMRES/FGMRES/QMR/TFQMR/CGS/MINRES. - Reproducible reductions and a unified error model (
KError).
Breaking Changes
1) Solver & Preconditioner APIs
The traits for linear solvers and preconditioners were refactored for clarity and object-safety.
-
What changed
- Explicit preconditioning side via
PcSide::{Left, Right, Symmetric}. - Updated trait methods and builder wiring for construction and reuse.
- Legacy adapters gated/removed where appropriate.
- Explicit preconditioning side via
-
Why
- Align semantics across all solvers (esp. right-preconditioned GMRES/FGMRES).
- Enable deferred construction and chaining.
Migration guide (typical patterns)
Before
solver.set_preconditioner(pc);
solver.solve(&A, &b, &mut x)?;After (side-aware)
use kryst::preconditioner::PcSide;
solver.set_preconditioner(pc);
solver.set_pc_side(PcSide::Left); // or Right/Symmetric when supported
solver.solve(&A, &b, &mut x)?;AMG/ILU reuse
pc.setup(&A)?;
// later, structure unchanged:
pc.update_numeric(&A)?;
// if sparsity changed:
pc.update_symbolic(&A)?;Removed/changed
- Legacy
MatOpadapter removed; useLinOpshells and converters. - Some legacy preconditioner bridges are feature-gated.
Features & Improvements
Distributed sparse matrices
- ParCsrMatrix with HaloPlan‐driven SpMV for MPI.
- Two-phase (overlap) SpMV and row partition helpers.
- Reproducible, communicator-aware reductions for norms and dot products.
AMG preconditioner (major upgrade)
- Coarsening: deterministic RS/PMIS/HMIS (with aggressive MIS-2).
- Interpolation: classical/standard/direct + smoothed aggregation with truncation & row caps.
- Relaxation: Jacobi, L1-Jacobi, Gauss–Seidel (forward/backward/symmetric), Chebyshev.
- Cycles: V- and W-cycle; per-phase relax policy (fine/down/up/coarse).
- Nodal & multi-function SA: group DOFs per node; near-nullspace/rigid-body modes supported.
- Post-interpolation stage: row scaling to targets, local QR, optional energy “polish”.
- Non-Galerkin filtering with operator-complexity control.
- Reuse paths: keep-transpose option; patterned RAP with values-only refresh.
- Coarse solvers: direct dense for tiny systems; ILU-based and CG for larger ones.
- Detailed per-level stats and cycle profiling.
ILU infrastructure
-
CSR-native ILU0, MILU0 (row-sum), ILUK, ILUT:
- Pivot policy with additive floors.
- Reordering (permutation-based) hooks.
- Deterministic row work, epoch position maps.
- Zero-allocation apply; timing/stats.
- Level-scheduled triangular-solve scaffolding.
Solver suite & plumbing
- Added/modernized CG, PCG, MINRES, CGNR, GMRES, FGMRES (flexible), CGS, QMR, TFQMR.
- Right-preconditioned GMRES/FGMRES; consistent side checks across solvers.
- True residual monitoring; natural-norm fixes; single-reduction CG/PCG variants.
- Preconditioner chaining (
PcChain) with deferred construction.
Ecosystem & utilities
LinOpabstractions and conversion cache (CSR/CSC).- Unified
KErroracross the crate. - Buffer pool, profiling hooks, deterministic reduction engine.
- Expanded tests, examples, and README refresh.
Performance & Scalability
- CSR/CSC SpMV kernels and micro-benchmarks.
- Fewer global reductions (fused two-scalar allreduce, single-reduction CG).
- Operator complexity guard rails and non-Galerkin filtering to tame coarse growth.
- Centralized rayon pool; guarded threading for CSR.
Quality & Maintenance
- Large pass over clippy/lint cleanups.
- Stabilized MPI CI, communicator handling, and reduction semantics.
- Clearer defaults and documented solver/preconditioner contracts.
Deprecations & Removals
- Legacy
MatOpadapter removed (useLinOp). - Some legacy preconditioner bridges are gated and may be removed in a future release.
Acknowledgements
Thanks to everyone testing nightly builds, filing issues, and proposing improvements. Your feedback directly shaped v2.4.0.
Full changelog: https://github.com/tmathis720/kryst/commits/beta