[[bench]]
harness = false
name = "apply_no_alloc"
path = "benches/apply_no_alloc.rs"
[[bench]]
harness = false
name = "cg"
path = "benches/cg.rs"
[[bench]]
harness = false
name = "direct_vs_faer"
path = "benches/direct_vs_faer.rs"
[[bench]]
harness = false
name = "gmres_variants"
path = "benches/gmres_variants.rs"
[[bench]]
harness = false
name = "iai"
path = "benches/iai.rs"
[[bench]]
harness = false
name = "ksp_core"
path = "benches/ksp_core.rs"
[[bench]]
harness = false
name = "mpi_rayon_suite"
path = "benches/mpi_rayon_suite.rs"
[[bench]]
harness = false
name = "pcg_pipelined_scaling"
path = "benches/pcg_pipelined_scaling.rs"
[[bench]]
harness = false
name = "rap"
path = "benches/rap.rs"
[[bench]]
harness = false
name = "repeated_solves"
path = "benches/repeated_solves.rs"
[[bench]]
harness = false
name = "spmv"
path = "benches/spmv.rs"
[[bench]]
name = "spmv_vs_spmm"
path = "benches/spmv_vs_spmm.rs"
[[bench]]
harness = false
name = "submatrix"
path = "benches/submatrix.rs"
[[bench]]
harness = false
name = "tri_solve"
path = "benches/tri_solve.rs"
[dependencies.bitflags]
features = ["serde"]
version = "2.9.1"
[dependencies.faer]
default-features = false
features = ["std"]
optional = true
version = "0.22.6"
[dependencies.log]
version = "0.4"
[dependencies.mpi]
optional = true
version = "0.8"
[dependencies.nalgebra]
optional = true
version = "0.33"
[dependencies.num-complex]
optional = true
version = "0.4"
[dependencies.num-traits]
version = "0.2"
[dependencies.num_cpus]
optional = true
version = "1.0"
[dependencies.once_cell]
version = "1"
[dependencies.oorandom]
version = "11"
[dependencies.parking_lot]
optional = true
version = "0.12"
[dependencies.rand]
version = "0.8"
[dependencies.rand_distr]
version = "0.4"
[dependencies.rayon]
optional = true
version = "1.10"
[dependencies.serde]
features = ["derive"]
version = "1.0"
[dependencies.serde_json]
version = "1.0"
[dependencies.smallvec]
version = "1.13"
[dependencies.sprs]
optional = true
version = "0.11"
[dependencies.tempfile]
version = "3.20.0"
[dependencies.thiserror]
version = "1.0"
[dependencies.toml]
version = "0.8"
[dependencies.wide]
optional = true
version = "0.7"
[dev-dependencies.approx]
version = "0.5"
[dev-dependencies.criterion]
default-features = false
version = "0.5"
[dev-dependencies.env_logger]
version = "0.11"
[dev-dependencies.faer]
version = "0.22.6"
[dev-dependencies.iai-callgrind]
version = "0.14"
[dev-dependencies.proptest]
version = "1"
[dev-dependencies.rand]
version = "0.8"
[[example]]
name = "amg_options_demo"
path = "examples/amg_options_demo.rs"
[[example]]
name = "basic_gmres"
path = "examples/basic_gmres.rs"
[[example]]
name = "bicgstab_workspace_demo"
path = "examples/bicgstab_workspace_demo.rs"
[[example]]
name = "bicgstab_workspace_verification"
path = "examples/bicgstab_workspace_verification.rs"
[[example]]
name = "complex_gmres"
path = "examples/complex_gmres.rs"
[[example]]
name = "complex_matrix_market_demo"
path = "examples/complex_matrix_market_demo.rs"
[[example]]
name = "convection_diffusion_ilutp"
path = "examples/convection_diffusion_ilutp.rs"
[[example]]
name = "convergence_demo"
path = "examples/convergence_demo.rs"
[[example]]
name = "debug_matrix_test"
path = "examples/debug_matrix_test.rs"
[[example]]
name = "dense_direct"
path = "examples/dense_direct.rs"
[[example]]
name = "hypre_amg_demo"
path = "examples/hypre_amg_demo.rs"
[[example]]
name = "hypre_gmres_demo"
path = "examples/hypre_gmres_demo.rs"
[[example]]
name = "matrix_market_demo"
path = "examples/matrix_market_demo.rs"
[[example]]
name = "monitor"
path = "examples/monitor.rs"
[[example]]
name = "mpi_amg_gmres_demo"
path = "examples/mpi_amg_gmres_demo.rs"
required-features = ["mpi_examples"]
[[example]]
name = "mpi_gmres"
path = "examples/mpi_gmres.rs"
[[example]]
name = "mpi_parallel_demo"
path = "examples/mpi_parallel_demo.rs"
[[example]]
name = "mpi_poisson_block_jacobi_ilu"
path = "examples/mpi_poisson_block_jacobi_ilu.rs"
[[example]]
name = "optimized_solver_demo"
path = "examples/optimized_solver_demo.rs"
[[example]]
name = "options_demo"
path = "examples/options_demo.rs"
[[example]]
name = "phase_i_test"
path = "examples/phase_i_test.rs"
[[example]]
name = "poisson_spd_ilu0_vs_jacobi"
path = "examples/poisson_spd_ilu0_vs_jacobi.rs"
[[example]]
name = "setup_reuse_demo"
path = "examples/setup_reuse_demo.rs"
[[example]]
name = "shell_demo"
path = "examples/shell_demo.rs"
[[example]]
name = "superlu_dist_demo"
path = "examples/superlu_dist_demo.rs"
[[example]]
name = "test_help"
path = "examples/test_help.rs"
[[example]]
name = "test_superlu_cli"
path = "examples/test_superlu_cli.rs"
[features]
amd = []
backend-faer = ["dep:faer"]
backend-naive = []
backend-nalgebra = ["dep:nalgebra"]
backend-sprs = ["dep:sprs"]
complex = ["dep:num-complex"]
complex_ilu = []
default = ["rayon", "backend-faer"]
dense-direct = ["backend-faer"]
iai = []
invariants = []
legacy-pc-bridge = []
logging = []
mat-values-fingerprint = []
metrics = []
mpi = ["dep:mpi"]
mpi_examples = ["mpi"]
nalgebra-explicit-dense = ["backend-nalgebra"]
proptest = []
rayon = ["dep:rayon", "dep:num_cpus"]
simd = ["dep:wide"]
superlu3d = []
superlu_dist = ["backend-faer"]
transpose-cache = ["dep:parking_lot"]
tuning = []
x86_intrinsics = []
[lib]
doctest = true
name = "kryst"
path = "src/lib.rs"
[package]
authors = ["Thomas James Mathis <tmathis720@gmail.com>"]
autobenches = false
autobins = false
autoexamples = false
autolib = false
autotests = false
build = false
categories = ["science", "mathematics", "algorithms"]
description = "Krylov subspace and preconditioned iterative solvers for dense and sparse linear systems, with shared and distributed memory parallelism."
documentation = "https://docs.rs/kryst"
edition = "2024"
exclude = ["examples/*/e*.mtx", "references/*.pdf", "target/*", ".git/*", "*.png", "*.jpg", "*.jpeg"]
homepage = "https://github.com/tmathis720/kryst"
keywords = ["krylov", "gmres", "linear-solver", "parallel", "mpi"]
license = "MIT"
name = "kryst"
readme = "README.md"
repository = "https://github.com/tmathis720/kryst"
version = "3.2.0"
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]
[[test]]
name = "algebra_scalar"
path = "tests/algebra_scalar.rs"
[[test]]
name = "alloc_guard"
path = "tests/alloc_guard.rs"
[[test]]
name = "amg_cycle"
path = "tests/amg_cycle.rs"
[[test]]
name = "amg_keep_transpose"
path = "tests/amg_keep_transpose.rs"
[[test]]
name = "amg_stats"
path = "tests/amg_stats.rs"
[[test]]
name = "api_surface"
path = "tests/api_surface.rs"
[[test]]
name = "backend_abstraction"
path = "tests/backend_abstraction.rs"
[[test]]
name = "bicgstab_complex"
path = "tests/bicgstab_complex.rs"
[[test]]
name = "block_solvers_parallel"
path = "tests/block_solvers_parallel.rs"
[[test]]
name = "bridge_adapters"
path = "tests/bridge_adapters.rs"
[[test]]
name = "cg_complex"
path = "tests/cg_complex.rs"
[[test]]
name = "cg_initial_guess"
path = "tests/cg_initial_guess.rs"
[[test]]
name = "cg_invariants"
path = "tests/cg_invariants.rs"
[[test]]
name = "cg_norm_types"
path = "tests/cg_norm_types.rs"
[[test]]
name = "cg_objectsafe"
path = "tests/cg_objectsafe.rs"
[[test]]
name = "cg_pcg_reduction_counts"
path = "tests/cg_pcg_reduction_counts.rs"
[[test]]
name = "cg_pipelined"
path = "tests/cg_pipelined.rs"
[[test]]
name = "cg_repro"
path = "tests/cg_repro.rs"
[[test]]
name = "cg_true_residual_monitor"
path = "tests/cg_true_residual_monitor.rs"
[[test]]
name = "cg_trust_region"
path = "tests/cg_trust_region.rs"
[[test]]
name = "cgnr_ls"
path = "tests/cgnr_ls.rs"
[[test]]
name = "cgs_linop"
path = "tests/cgs_linop.rs"
[[test]]
name = "coarse_ilu"
path = "tests/coarse_ilu.rs"
[[test]]
name = "comm"
path = "tests/comm.rs"
[[test]]
name = "complex_dense_op"
path = "tests/complex_dense_op.rs"
[[test]]
name = "complex_dotc"
path = "tests/complex_dotc.rs"
[[test]]
name = "complex_ksp"
path = "tests/complex_ksp.rs"
[[test]]
name = "context_smoke"
path = "tests/context_smoke.rs"
[[test]]
name = "convergence_tests"
path = "tests/convergence_tests.rs"
[[test]]
name = "core_dense"
path = "tests/core_dense.rs"
[[test]]
name = "csc"
path = "tests/csc.rs"
[[test]]
name = "csc_cache"
path = "tests/csc_cache.rs"
[[test]]
name = "dist_block_jacobi"
path = "tests/dist_block_jacobi.rs"
[[test]]
name = "dist_csr"
path = "tests/dist_csr.rs"
[[test]]
name = "dist_try_matvec"
path = "tests/dist_try_matvec.rs"
[[test]]
name = "doc_audit"
path = "tests/doc_audit.rs"
[[test]]
name = "dot_result_to_real"
path = "tests/dot_result_to_real.rs"
[[test]]
name = "drivcav_integration"
path = "tests/drivcav_integration.rs"
[[test]]
name = "fgmres_flexible"
path = "tests/fgmres_flexible.rs"
[[test]]
name = "fgmres_ksp"
path = "tests/fgmres_ksp.rs"
[[test]]
name = "fixtures"
path = "tests/fixtures.rs"
[[test]]
name = "generic_csr_bridge"
path = "tests/generic_csr_bridge.rs"
[[test]]
name = "givens_rotation"
path = "tests/givens_rotation.rs"
[[test]]
name = "gmres_complex"
path = "tests/gmres_complex.rs"
[[test]]
name = "golden_pc"
path = "tests/golden_pc.rs"
[[test]]
name = "ilu_apply_no_alloc"
path = "tests/ilu_apply_no_alloc.rs"
[[test]]
name = "ilu_complex"
path = "tests/ilu_complex.rs"
[[test]]
name = "ilu_drop_tolerance"
path = "tests/ilu_drop_tolerance.rs"
[[test]]
name = "ksp_csr_setup"
path = "tests/ksp_csr_setup.rs"
[[test]]
name = "mat_values_fingerprint"
path = "tests/mat_values_fingerprint.rs"
[[test]]
name = "minres_complex"
path = "tests/minres_complex.rs"
[[test]]
name = "monitor_integration"
path = "tests/monitor_integration.rs"
[[test]]
name = "monitors_consistency"
path = "tests/monitors_consistency.rs"
[[test]]
name = "mpi_collectives"
path = "tests/mpi_collectives.rs"
[[test]]
name = "mpi_complex_reduction"
path = "tests/mpi_complex_reduction.rs"
[[test]]
name = "mpi_gmres_sstep"
path = "tests/mpi_gmres_sstep.rs"
[[test]]
name = "mpi_smoke"
path = "tests/mpi_smoke.rs"
[[test]]
name = "options_integration"
path = "tests/options_integration.rs"
[[test]]
name = "panel_factorization"
path = "tests/panel_factorization.rs"
[[test]]
name = "panel_microbench"
path = "tests/panel_microbench.rs"
[[test]]
name = "parallel_reductions"
path = "tests/parallel_reductions.rs"
[[test]]
name = "parallel_vec"
path = "tests/parallel_vec.rs"
[[test]]
name = "pcagmres"
path = "tests/pcagmres.rs"
[[test]]
name = "pcg_basic"
path = "tests/pcg_basic.rs"
[[test]]
name = "pcg_norm_types"
path = "tests/pcg_norm_types.rs"
[[test]]
name = "pcg_pipelined"
path = "tests/pcg_pipelined.rs"
[[test]]
name = "pcg_true_residual_monitor"
path = "tests/pcg_true_residual_monitor.rs"
[[test]]
name = "phase_iii_iv_integration"
path = "tests/phase_iii_iv_integration.rs"
[[test]]
name = "preconditioner_integration"
path = "tests/preconditioner_integration.rs"
[[test]]
name = "preconditioner_sor"
path = "tests/preconditioner_sor.rs"
[[test]]
name = "prop_no_nan"
path = "tests/prop_no_nan.rs"
[[test]]
name = "qmr"
path = "tests/qmr.rs"
[[test]]
name = "rayon_kernels"
path = "tests/rayon_kernels.rs"
[[test]]
name = "reduce_nocomm"
path = "tests/reduce_nocomm.rs"
[[test]]
name = "reduction_async"
path = "tests/reduction_async.rs"
[[test]]
name = "reduction_bounds"
path = "tests/reduction_bounds.rs"
[[test]]
name = "reduction_counter"
path = "tests/reduction_counter.rs"
[[test]]
name = "reproducibility_regression"
path = "tests/reproducibility_regression.rs"
[[test]]
name = "reuse_tests"
path = "tests/reuse_tests.rs"
[[test]]
name = "scalar_prelude"
path = "tests/scalar_prelude.rs"
[[test]]
name = "serial_nonblocking_api"
path = "tests/serial_nonblocking_api.rs"
[[test]]
name = "solver_async_dot"
path = "tests/solver_async_dot.rs"
[[test]]
name = "solver_bridge"
path = "tests/solver_bridge.rs"
[[test]]
name = "solver_iterative"
path = "tests/solver_iterative.rs"
[[test]]
name = "spmv_kernels"
path = "tests/spmv_kernels.rs"
[[test]]
name = "superlu_dist_mpi"
path = "tests/superlu_dist_mpi.rs"
[[test]]
name = "with_comm_op"
path = "tests/with_comm_op.rs"
[[test]]
name = "workspace_tests"
path = "tests/workspace_tests.rs"