File tree Expand file tree Collapse file tree 2 files changed +40
-1
lines changed
Expand file tree Collapse file tree 2 files changed +40
-1
lines changed Original file line number Diff line number Diff line change @@ -43,6 +43,11 @@ For sparse LU-factorizations, `KLUFactorization` if there is less structure
4343to the sparsity pattern and ` UMFPACKFactorization ` if there is more structure.
4444Pardiso.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+
4651While these sparse factorizations are based on implementations in other languages,
4752and therefore constrained to standard number types (` Float64 ` , ` Float32 ` and
4853their 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.
223228The following are non-standard GPU factorization routines.
224229
225230!!! note
@@ -230,6 +235,16 @@ The following are non-standard GPU factorization routines.
230235CudaOffloadFactorization
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
Original file line number Diff line number Diff 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+
124148Note that ` KrylovJL ` methods also work with sparse GPU arrays:
125149
126150``` julia
You can’t perform that action at this time.
0 commit comments