Expand description
§OxiCUDA Solver — GPU-Accelerated Matrix Decompositions
This crate provides GPU-accelerated matrix decompositions and linear solvers, serving as a pure Rust equivalent to NVIDIA’s cuSOLVER library.
§Dense decompositions
- LU — LU factorization with partial pivoting (
P * A = L * U) - QR — QR factorization via blocked Householder reflections (
A = Q * R) - Cholesky — Cholesky decomposition for SPD matrices (
A = L * L^T) - SVD — Singular Value Decomposition (
A = U * Σ * V^T) - DC-SVD — Divide-and-Conquer SVD for medium-to-large matrices
- LDL^T — Bunch-Kaufman factorization for symmetric indefinite matrices
- Eigendecomposition — Symmetric eigenvalue decomposition (
A = Q * Λ * Q^T) - Inverse — Matrix inverse via LU (
A^{-1}) - Determinant — Determinant and log-determinant via LU
- Least squares — Least squares solver via QR (
min ||A*x - b||)
§Dense solvers
- Tridiagonal — Thomas algorithm and cyclic reduction for tridiagonal systems
- Band — LU and Cholesky for banded matrices (O(n*b^2) complexity)
§Iterative sparse solvers
- CG — Conjugate Gradient for SPD systems
- BiCGSTAB — Biconjugate Gradient Stabilized for non-symmetric systems
- GMRES(m) — Generalized Minimal Residual with restart
- FGMRES(m) — Flexible GMRES with variable preconditioner
- Direct — Direct sparse solver via dense LU (small systems)
- Preconditioned CG — PCG with pluggable preconditioners (Identity, Jacobi, ILU, IC)
- Preconditioned GMRES — Left-preconditioned GMRES(m) with restart
§Example
use oxicuda_solver::prelude::*;(C) 2026 COOLJAPAN OU (Team KitaSan)
Re-exports§
pub use dense::AdvectionEquation1D;pub use dense::BandMatrix;pub use dense::BatchAlgorithm;pub use dense::BatchConfig;pub use dense::BatchedResult;pub use dense::BatchedSolver;pub use dense::Bdf2Solver;pub use dense::BoundaryCondition;pub use dense::CpAlsConfig;pub use dense::CpDecomposition;pub use dense::DcSvdConfig;pub use dense::EigJob;pub use dense::EulerSolver;pub use dense::Grid1D;pub use dense::Grid2D;pub use dense::HeatEquation1D;pub use dense::ImplicitEulerSolver;pub use dense::LdltResult;pub use dense::LuResult;pub use dense::Matrix;pub use dense::OdeConfig;pub use dense::OdeMethod;pub use dense::OdeSolution;pub use dense::OdeSystem;pub use dense::PdeConfig;pub use dense::Poisson1D;pub use dense::RandomizedSvdConfig;pub use dense::RandomizedSvdResult;pub use dense::Rk4Solver;pub use dense::Rk45Solver;pub use dense::StepResult;pub use dense::SvdJob;pub use dense::SvdResult;pub use dense::Tensor;pub use dense::TtConfig;pub use dense::TtDecomposition;pub use dense::TuckerConfig;pub use dense::TuckerDecomposition;pub use dense::WaveEquation1D;pub use error::SolverError;pub use error::SolverResult;pub use handle::SolverHandle;pub use sparse::AdjacencyGraph;pub use sparse::EliminationTree;pub use sparse::FgmresConfig;pub use sparse::MultifrontalLUSolver;pub use sparse::NestedDissectionOrdering;pub use sparse::OrderingQuality;pub use sparse::Permutation;pub use sparse::SupernodalCholeskySolver;pub use sparse::SupernodalStructure;pub use sparse::SymbolicFactorization;pub use sparse::fgmres;pub use sparse::fgmres;pub use sparse::sparse_cholesky_solve;pub use sparse::sparse_lu_solve;