@@ -439,3 +439,38 @@ A wrapper over Apple's Metal GPU library. Direct calls to Metal in a way that pr
439
439
to avoid allocations and automatically offloads to the GPU.
440
440
"""
441
441
struct 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