File tree Expand file tree Collapse file tree 1 file changed +33
-0
lines changed Expand file tree Collapse file tree 1 file changed +33
-0
lines changed Original file line number Diff line number Diff line change @@ -441,3 +441,36 @@ to avoid allocations and automatically offloads to the GPU.
441
441
struct MetalLUFactorization <: AbstractFactorization end
442
442
443
443
struct BLISLUFactorization <: AbstractFactorization end
444
+
445
+ """
446
+ `CUSOLVERRFFactorization(; symbolic = :RF, reuse_symbolic = true)`
447
+
448
+ A GPU-accelerated sparse LU factorization using NVIDIA's cusolverRF library.
449
+ This solver is specifically designed for sparse matrices on CUDA GPUs and
450
+ provides high-performance factorization and solve capabilities.
451
+
452
+ ## Keyword Arguments
453
+
454
+ - `symbolic`: The symbolic factorization method to use. Options are:
455
+ - `:RF` (default): Use cusolverRF's built-in symbolic analysis
456
+ - `:KLU`: Use KLU for symbolic analysis
457
+ - `reuse_symbolic`: Whether to reuse the symbolic factorization when the
458
+ sparsity pattern doesn't change (default: `true`)
459
+
460
+ !!! note
461
+ This solver requires CUSOLVERRF.jl to be loaded and only supports
462
+ `Float64` element types with `Int32` indices.
463
+ """
464
+ struct CUSOLVERRFFactorization <: AbstractSparseFactorization
465
+ symbolic:: Symbol = :RF
466
+ reuse_symbolic:: Bool = true
467
+
468
+ function CUSOLVERRFFactorization (; symbolic:: Symbol = :RF , reuse_symbolic:: Bool = true )
469
+ ext = Base. get_extension (@__MODULE__ , :CUSOLVERRFFactorization )
470
+ if ext === nothing
471
+ error (" CUSOLVERRFFactorization requires that CUSOLVERRF.jl is loaded, i.e. `using CUSOLVERRF`" )
472
+ else
473
+ return new {} (symbolic, reuse_symbolic)
474
+ end
475
+ end
476
+ end
You can’t perform that action at this time.
0 commit comments