Skip to content

Commit 4c55f9e

Browse files
ChrisRackauckas-ClaudeChrisRackauckasclaude
authored
Fix CUDA functional check in init_cacheval functions (#770)
- Add CUDA.functional() check before creating CUDA arrays in init_cacheval - Return nothing if CUDA is loaded but not functional - Fixes issue where CudaOffloadLUFactorization and CudaOffloadQRFactorization would fail during cache initialization when CUDA is in environment but not usable - Addresses issue #761 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: ChrisRackauckas <accounts@chrisrackauckas.com> Co-authored-by: Claude <noreply@anthropic.com>
1 parent fc55a8b commit 4c55f9e

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

ext/LinearSolveCUDAExt.jl

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,11 @@ end
5353
function LinearSolve.init_cacheval(alg::CudaOffloadLUFactorization, A::AbstractArray, b, u, Pl, Pr,
5454
maxiters::Int, abstol, reltol, verbose::Bool,
5555
assumptions::OperatorAssumptions)
56+
# Check if CUDA is functional before creating CUDA arrays
57+
if !CUDA.functional()
58+
return nothing
59+
end
60+
5661
T = eltype(A)
5762
noUnitT = typeof(zero(T))
5863
luT = LinearAlgebra.lutype(noUnitT)
@@ -76,6 +81,11 @@ end
7681
function LinearSolve.init_cacheval(alg::CudaOffloadQRFactorization, A, b, u, Pl, Pr,
7782
maxiters::Int, abstol, reltol, verbose::Bool,
7883
assumptions::OperatorAssumptions)
84+
# Check if CUDA is functional before creating CUDA arrays
85+
if !CUDA.functional()
86+
return nothing
87+
end
88+
7989
qr(CUDA.CuArray(A))
8090
end
8191

0 commit comments

Comments
 (0)