@@ -439,3 +439,38 @@ A wrapper over Apple's Metal GPU library. Direct calls to Metal in a way that pr
439439to avoid allocations and automatically offloads to the GPU.
440440"""
441441struct MetalLUFactorization <: AbstractFactorization end
442+
443+ # # CUSOLVERRFFactorization
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
0 commit comments