Skip to content

Commit 8152b97

Browse files
matteoseclimaleadt
authored andcommitted
Test geev for supported CUSOLVER versions only
1 parent 1d9e95f commit 8152b97

File tree

1 file changed

+66
-58
lines changed

1 file changed

+66
-58
lines changed

test/libraries/cusolver/dense.jl

Lines changed: 66 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -329,54 +329,56 @@ sorteig!(λ::AbstractVector, sortby::Union{Function, Nothing} = eigsortby) = sor
329329
end
330330
end
331331

332-
@testset "geev!" begin
333-
## Note: we have Xgeev in dense_generic.jl, but no geev in dense.jl.
334-
# A = rand(elty,m,m)
335-
# d_A = CuArray(A)
336-
local d_W, d_V
337-
# d_W, _, d_V = CUSOLVER.Xgeev!('N','V', d_A)
338-
# # d_W_b, _, d_V_b = LAPACK.geev!('N','V', CuArray(A))
339-
# # @test d_W ≈ d_W_b
340-
# # @test d_V ≈ d_V_b
341-
# W_b, _, V_b = LAPACK.geev!('N','V', A)
342-
# @test collect(d_W) ≈ W_b
343-
# @test collect(d_V) ≈ V_b
344-
# h_W = collect(d_W)
345-
# h_V = collect(d_V)
346-
# h_V⁻¹ = inv(h_V)
347-
# Eig = eigen(A)
348-
# @test Eig.values ≈ h_W
349-
# @test abs.(Eig.vectors*h_V⁻¹) ≈ I
350-
# d_A = CuArray(A)
351-
# d_W = CUSOLVER.Xgeev!('N','N', d_A)
352-
# h_W = collect(d_W)
353-
# @test Eig.values ≈ h_W
354-
355-
A = rand(elty,m,m)
356-
d_A = CuArray(A)
357-
Eig = eigen(A)
358-
d_eig = eigen(d_A)
359-
sorteig!(d_eig.values, d_eig.vectors)
360-
@test Eig.values collect(d_eig.values)
361-
h_V = collect(d_eig.vectors)
362-
h_V⁻¹ = inv(h_V)
363-
@test abs.(h_V⁻¹*Eig.vectors) I
364-
365-
A = rand(elty,m,m)
366-
d_A = CuArray(A)
367-
W = eigvals(A)
368-
d_W = eigvals(d_A)
369-
sorteig!(d_W)
370-
@test W collect(d_W)
332+
if CUSOLVER.version() >= v"11.7.1"
333+
@testset "geev!" begin
334+
## Note: we have Xgeev in dense_generic.jl, but no geev in dense.jl.
335+
# A = rand(elty,m,m)
336+
# d_A = CuArray(A)
337+
local d_W, d_V
338+
# d_W, _, d_V = CUSOLVER.Xgeev!('N','V', d_A)
339+
# # d_W_b, _, d_V_b = LAPACK.geev!('N','V', CuArray(A))
340+
# # @test d_W ≈ d_W_b
341+
# # @test d_V ≈ d_V_b
342+
# W_b, _, V_b = LAPACK.geev!('N','V', A)
343+
# @test collect(d_W) ≈ W_b
344+
# @test collect(d_V) ≈ V_b
345+
# h_W = collect(d_W)
346+
# h_V = collect(d_V)
347+
# h_V⁻¹ = inv(h_V)
348+
# Eig = eigen(A)
349+
# @test Eig.values ≈ h_W
350+
# @test abs.(Eig.vectors*h_V⁻¹) ≈ I
351+
# d_A = CuArray(A)
352+
# d_W = CUSOLVER.Xgeev!('N','N', d_A)
353+
# h_W = collect(d_W)
354+
# @test Eig.values ≈ h_W
355+
356+
A = rand(elty,m,m)
357+
d_A = CuArray(A)
358+
Eig = eigen(A)
359+
d_eig = eigen(d_A)
360+
sorteig!(d_eig.values, d_eig.vectors)
361+
@test Eig.values collect(d_eig.values)
362+
h_V = collect(d_eig.vectors)
363+
h_V⁻¹ = inv(h_V)
364+
@test abs.(h_V⁻¹*Eig.vectors) I
365+
366+
A = rand(elty,m,m)
367+
d_A = CuArray(A)
368+
W = eigvals(A)
369+
d_W = eigvals(d_A)
370+
sorteig!(d_W)
371+
@test W collect(d_W)
371372

372-
A = rand(elty,m,m)
373-
d_A = CuArray(A)
374-
V = eigvecs(A)
375-
d_W = eigvals(d_A)
376-
d_V = eigvecs(d_A)
377-
sorteig!(d_W, d_V)
378-
V⁻¹ = inv(V)
379-
@test abs.(V⁻¹*collect(d_V)) I
373+
A = rand(elty,m,m)
374+
d_A = CuArray(A)
375+
V = eigvecs(A)
376+
d_W = eigvals(d_A)
377+
d_V = eigvecs(d_A)
378+
sorteig!(d_W, d_V)
379+
V⁻¹ = inv(V)
380+
@test abs.(V⁻¹*collect(d_V)) I
381+
end
380382
end
381383

382384
@testset "syevd!" begin
@@ -419,9 +421,11 @@ sorteig!(λ::AbstractVector, sortby::Union{Function, Nothing} = eigsortby) = sor
419421
A += A'
420422
d_A = CuArray(A)
421423
Eig = eigen(LinearAlgebra.Hermitian(A))
422-
d_eig = eigen(d_A)
423-
sorteig!(d_eig.values, d_eig.vectors)
424-
@test Eig.values collect(d_eig.values)
424+
if CUSOLVER.version() >= v"11.7.1"
425+
d_eig = eigen(d_A)
426+
sorteig!(d_eig.values, d_eig.vectors)
427+
@test Eig.values collect(d_eig.values)
428+
end
425429
d_eig = eigen(LinearAlgebra.Hermitian(d_A))
426430
@test Eig.values collect(d_eig.values)
427431
h_V = collect(d_eig.vectors)
@@ -438,9 +442,11 @@ sorteig!(λ::AbstractVector, sortby::Union{Function, Nothing} = eigsortby) = sor
438442
A += A'
439443
d_A = CuArray(A)
440444
W = eigvals(LinearAlgebra.Hermitian(A))
441-
d_W = eigvals(d_A)
442-
sorteig!(d_W)
443-
@test W collect(d_W)
445+
if CUSOLVER.version() >= v"11.7.1"
446+
d_W = eigvals(d_A)
447+
sorteig!(d_W)
448+
@test W collect(d_W)
449+
end
444450
d_W = eigvals(LinearAlgebra.Hermitian(d_A))
445451
@test W collect(d_W)
446452
if elty <: Real
@@ -453,11 +459,13 @@ sorteig!(λ::AbstractVector, sortby::Union{Function, Nothing} = eigsortby) = sor
453459
A += A'
454460
d_A = CuArray(A)
455461
V = eigvecs(LinearAlgebra.Hermitian(A))
456-
d_W = eigvals(d_A)
457-
d_V = eigvecs(d_A)
458-
sorteig!(d_W, d_V)
459-
h_V = collect(d_V)
460-
@test abs.(V'*h_V) I
462+
if CUSOLVER.version() >= v"11.7.1"
463+
d_W = eigvals(d_A)
464+
d_V = eigvecs(d_A)
465+
sorteig!(d_W, d_V)
466+
h_V = collect(d_V)
467+
@test abs.(V'*h_V) I
468+
end
461469
d_V = eigvecs(LinearAlgebra.Hermitian(d_A))
462470
h_V = collect(d_V)
463471
@test abs.(V'*h_V) I

0 commit comments

Comments
 (0)