Skip to content

Releases: tmathis720/kryst

v4.3.0

Choose a tag to compare

@tmathis720 tmathis720 released this 19 Jul 05:00

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

Choose a tag to compare

@tmathis720 tmathis720 released this 29 May 22:40

Full Changelog: v4.0.3...v4.0.4

v4.0.3

Choose a tag to compare

@tmathis720 tmathis720 released this 29 May 20:49

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_view flags 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...
Read more

v3.2.1

Choose a tag to compare

@tmathis720 tmathis720 released this 06 Feb 00:58

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

Choose a tag to compare

@tmathis720 tmathis720 released this 11 Jan 00:57

What's Changed

Read more

v2.4.0

Choose a tag to compare

@tmathis720 tmathis720 released this 03 Sep 06:41

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 PcSide across 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.
  • 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 MatOp adapter removed; use LinOp shells 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

  • LinOp abstractions and conversion cache (CSR/CSC).
  • Unified KError across 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 MatOp adapter removed (use LinOp).
  • 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