Uni20
Asynchronous tensor and runtime library.
Loading...
Searching...
No Matches
src/uni20/krylov

This directory contains native matrix-free Krylov algorithms for Uni20. The solvers operate through a small vector-operation interface rather than through ARPACK-style work arrays or reverse communication. Vectors are opaque to the solver, so callers can keep them on host memory, device memory, or distributed storage as long as the matrix-free operations provide host scalar results for norms and inner products.

Contents

  • gmres.hpp: restarted fixed right-preconditioned GMRES with recoverable results and true-residual acceptance.
  • gmres_diagnostics.hpp: optional operator 2-norm information and corresponding backward-error and solution-error estimates.
  • gmres_refinement.hpp, vector_space.hpp: explicit working, inner and residual spaces for matrix-free mixed-precision refinement.
  • matrix_free.hpp: matrix-free operator concepts, parameter types, result types, diagnostics, and dimension validation helpers.
  • symmetric_lanczos.hpp: real symmetric and complex Hermitian Lanczos eigensolvers, including restart and generalized-problem support.
  • nonsymmetric_arnoldi.hpp: real and complex nonsymmetric Arnoldi solvers.
  • krylov_exponential.hpp: Lanczos/Arnoldi exponential-action projection algorithms.
  • taylor_exponential.hpp: independent Taylor exponential-action reference algorithm used for validation and fallback experiments.
  • dense_linalg.hpp, dense_subspace.hpp, tridiagonal.hpp: small dense projected-problem infrastructure used by the Krylov solvers. Owning matrices are uni20::DenseMatrix aliases, and active projected eigensystem, Schur, and matrix-exponential paths use the operation-tag linalg dispatch layer.
  • dense_subspace_unused.hpp: quarantined experimental helper inventory. It is retained for possible future mining and compiled by dedicated regression tests, but is not exposed through the default Krylov API or used by the supported projected-problem path.
  • dense_host_vector.hpp: simple host-vector adapter for tests, examples, and prototype callers.
  • block_tensor_vector.hpp: exact-structure BlockTensor vector algebra and an owned-callable matrix-free operator adapter.

Design Notes

  • The Krylov documentation index separates canonical behavior, numerical rationale, and exploratory policy.
  • Core Uni20 does not vendor ARPACK. The native solvers intentionally follow useful ARPACK/IRAM/IRLM ideas, but ARPACK comparisons and larger benchmark dashboards belong in a separate validation repository.
  • Public behavior, supported scalar types, defaults, and internal tuning are documented in `/docs/krylov/algorithms.md`.
  • Default ncv/nkeep policy notes live in `/docs/krylov/solver_defaults.md`.
  • Precision validation status lives in `/docs/krylov/precision_validation.md`.
  • Dense provider and quarantined helper coverage lives in Dense BLAS/LAPACK Wrapper Coverage". - Test matrix provenance and stress-test intent live in @ref "/home/runner/work/uni20/uni20/docs/krylov/test_matrices.md" "`/docs/krylov/test_matrices.md`". @section autotoc_md127 Tests And Examples Unit tests live under <a href="../../../tests/krylov" ><tt>/tests/krylov</tt></a>, with Matrix Market fixtures under <tt>/tests/krylov/matrix_market</tt>. Example drivers live under <a href="../../../examples/krylov" ><tt>/examples/krylov</tt></a>. Return to the @ref "/home/runner/work/uni20/uni20/README.md" "source tree map".