Skip to content

Commit 68180d4

Browse files
Add CUSOLVERRF documentation
- Added CUSOLVERRF to recommended methods for sparse matrices - Added CUSOLVERRF section in the full list of solvers - Added CUSOLVERRF examples in GPU tutorial documentation - Documented supported options and limitations 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
1 parent d885a99 commit 68180d4

File tree

2 files changed

+40
-1
lines changed

2 files changed

+40
-1
lines changed

docs/src/solvers/solvers.md

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,11 @@ For sparse LU-factorizations, `KLUFactorization` if there is less structure
4343
to the sparsity pattern and `UMFPACKFactorization` if there is more structure.
4444
Pardiso.jl's methods are also known to be very efficient sparse linear solvers.
4545

46+
For GPU-accelerated sparse LU-factorizations, `CUSOLVERRFFactorization` provides
47+
access to NVIDIA's cusolverRF library, offering significant performance improvements
48+
for sparse systems on CUDA-capable GPUs. This is particularly effective for large
49+
sparse matrices that can benefit from GPU parallelization.
50+
4651
While these sparse factorizations are based on implementations in other languages,
4752
and therefore constrained to standard number types (`Float64`, `Float32` and
4853
their complex counterparts), `SparspakFactorization` is able to handle general
@@ -219,7 +224,7 @@ LinearSolve.PardisoJL
219224

220225
### CUDA.jl
221226

222-
Note that `CuArrays` are supported by `GenericFactorization` in the normal way.
227+
Note that `CuArrays` are supported by `GenericFactorization` in the "normal" way.
223228
The following are non-standard GPU factorization routines.
224229

225230
!!! note
@@ -230,6 +235,16 @@ The following are non-standard GPU factorization routines.
230235
CudaOffloadFactorization
231236
```
232237

238+
### CUSOLVERRF.jl
239+
240+
!!! note
241+
242+
Using this solver requires adding the package CUSOLVERRF.jl, i.e. `using CUSOLVERRF`
243+
244+
```@docs
245+
CUSOLVERRFFactorization
246+
```
247+
233248
### IterativeSolvers.jl
234249

235250
!!! note

docs/src/tutorials/gpu.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,30 @@ sol = LS.solve(prob, LS.LUFactorization())
121121

122122
For now, CUDSS only supports CuSparseMatrixCSR type matrices.
123123

124+
For high-performance sparse LU factorization on GPUs, you can also use CUSOLVERRF.jl:
125+
126+
```julia
127+
using CUSOLVERRF
128+
sol = LS.solve(prob, LS.CUSOLVERRFFactorization())
129+
```
130+
131+
CUSOLVERRF provides access to NVIDIA's cusolverRF library, which offers significant
132+
performance improvements for sparse LU factorization on GPUs. It supports both
133+
`:RF` (default) and `:KLU` symbolic factorization methods, and can reuse symbolic
134+
factorization for matrices with the same sparsity pattern:
135+
136+
```julia
137+
# Use KLU for symbolic factorization
138+
sol = LS.solve(prob, LS.CUSOLVERRFFactorization(symbolic = :KLU))
139+
140+
# Reuse symbolic factorization for better performance
141+
sol = LS.solve(prob, LS.CUSOLVERRFFactorization(reuse_symbolic = true))
142+
```
143+
144+
!!! note
145+
146+
CUSOLVERRF only supports `Float64` element types with `Int32` indices.
147+
124148
Note that `KrylovJL` methods also work with sparse GPU arrays:
125149

126150
```julia

0 commit comments

Comments
 (0)