Expand description
SolverActor — wraps a [cudarc::cusolver::DnHandle] for dense
linear algebra and a [cudarc::cusolver::SpHandle] for sparse
solves (gated cusolver-sp).
Phase 1 cuSOLVER scope:
- Dense:
Qr,Lu(factorize / solve),Cholesky,Svd,Syevdfor f32 and f64 (seedense). - Batched:
getrfBatched(cuBLAS-side LU, lifted into this actor for symmetry),potrfBatched,gesvdjBatched(seebatched). - Generalized symmetric eigenvalue:
Sygvd/Hegvd(real variants today; complex Hermitian deferred — seegeneralized). - Sparse:
cusolverSpCholesky/QRsolves over CSR matrices (gatedcusolver-sp, see [sparse]).
Implementation notes:
- cudarc 0.19’s safe layer exposes only handle management; per-op
entry points live in
cusolver::sysand are wired throughcrate::sys::cusolver::SolverScalarinto a dtype-generic surface (seecrate/src/sys/cusolver.rs). - Each op queries the cuSOLVER workspace size, grows our on-demand
CudaSlice<u8>workspace, then dispatches the factorisation. The 1-elementinfobuffer is read back to detect failures (singular matrix, illegal arg, etc.). SolverMsg::Op(Box<dyn SolverDispatch>)is the canonical surface; the typedQr/Lu/Cholesky/Svd/Syevdvariants are kept as#[deprecated]aliases for backward compatibility with the f32-only Phase 0 layout.
Re-exports§
pub use batched::GesvdjBatchedRequest;pub use batched::GetrfBatchedRequest;pub use batched::PotrfBatchedRequest;pub use dense::CholeskyRequest;pub use dense::LuRequest;pub use dense::LuSolveRequest;pub use dense::QrRequest;pub use dense::SvdRequest;pub use dense::SyevdRequest;pub use generalized::HegvdRequest;pub use generalized::SygvdRequest;
Modules§
- batched
- Batched cuSOLVER ops.
- dense
- Dense cuSOLVER ops: QR, LU (factorize / solve), Cholesky, SVD,
Syevd. Each request struct is generic over
T: SolverSupported(f32, f64) and dispatches throughcrate::sys::cusolver::SolverScalar. - generalized
- Generalized symmetric / Hermitian eigenvalue problems.
Structs§
- Solver
Actor - Solver
Cells - Crate-private cells the dispatch traits operate against. Passed
to
SolverDispatch::dispatchas a single bundle so each op implementation only depends on what it actually uses.
Enums§
Traits§
- Solver
Dispatch - Trait implemented by every solver request. The actor turns the boxed trait object back into a typed launcher and forwards the runtime cells.