@@ -340,21 +340,23 @@ using LinearAlgebra, SparseArrays
340340 end
341341
342342 @testset " CuSparseMatrixCSR($f ) $elty " for f in [transpose, adjoint], elty in [Float32, ComplexF32]
343- S = f (sprand (elty, 10 , 10 , 0.1 ))
343+ m = 10
344+ S = f (sprand (elty, m, m, 0.1 ))
344345 @test SparseMatrixCSC (CuSparseMatrixCSR (S)) ≈ S
345346
346- S = sprand (elty, 10 , 10 , 0.1 )
347+ S = sprand (elty, m, m , 0.1 )
347348 T = f (CuSparseMatrixCSR (S))
348349 @test SparseMatrixCSC (CuSparseMatrixCSC (T)) ≈ f (S)
349350
350- S = sprand (elty, 10 , 10 , 0.1 )
351+ S = sprand (elty, m, m , 0.1 )
351352 T = f (CuSparseMatrixCSC (S))
352353 @test SparseMatrixCSC (CuSparseMatrixCSR (T)) ≈ f (S)
353354 end
354355
355356 @testset " UniformScaling basic operations" begin
356357 for elty in (Float32, Float64, ComplexF32, ComplexF64)
357- A = sprand (elty, 100 , 100 , 0.1 )
358+ m = 100
359+ A = sprand (elty, m, m, 0.1 )
358360 U1 = 2 * I
359361 for SparseMatrixType in (CuSparseMatrixCSC, CuSparseMatrixCSR, CuSparseMatrixCOO)
360362 B = SparseMatrixType (A)
@@ -367,9 +369,10 @@ using LinearAlgebra, SparseArrays
367369
368370 @testset " Diagonal basic operations" begin
369371 for elty in (Float32, Float64, ComplexF32, ComplexF64)
370- A = sprand (elty, 100 , 100 , 0.1 )
371- U2 = 2 * I (100 )
372- U3 = Diagonal (rand (elty, 100 ))
372+ m = 100
373+ A = sprand (elty, m, m, 0.1 )
374+ U2 = 2 * I (m)
375+ U3 = Diagonal (rand (elty, m))
373376 for SparseMatrixType in (CuSparseMatrixCSC, CuSparseMatrixCSR, CuSparseMatrixCOO)
374377 B = SparseMatrixType (A)
375378 for op in (+ , - , * )
@@ -395,11 +398,12 @@ using LinearAlgebra, SparseArrays
395398 for triangle in [LowerTriangular, UnitLowerTriangular, UpperTriangular, UnitUpperTriangular]
396399 @testset " ldiv!($triangle (CuSparseMatrixBSR), CuVector) -- $elty " for elty in [Float32,Float64,ComplexF32,ComplexF64]
397400 @testset " opa = $opa " for opa in [identity, transpose, adjoint]
398- A = rand (elty, 10 , 10 )
401+ m = 10
402+ A = rand (elty, m, m)
399403 A = triangle in (UnitLowerTriangular, LowerTriangular) ? tril (A) : triu (A)
400404 A = triangle in (UnitLowerTriangular, UnitUpperTriangular) ? A - Diagonal (A) + I : A
401405 A = sparse (A)
402- y = rand (elty, 10 )
406+ y = rand (elty, m )
403407 dA = CuSparseMatrixBSR (A, 1 )
404408 dy = CuArray (y)
405409 ldiv! (triangle (opa (A)), y)
@@ -410,11 +414,12 @@ using LinearAlgebra, SparseArrays
410414
411415 @testset " $triangle (CuSparseMatrixBSR) \\ CuVector -- $elty " for elty in [Float32,Float64,ComplexF32,ComplexF64]
412416 @testset " opa = $opa " for opa in [identity, transpose, adjoint]
413- A = rand (elty, 10 , 10 )
417+ m = 10
418+ A = rand (elty, m, m)
414419 A = triangle in (UnitLowerTriangular, LowerTriangular) ? tril (A) : triu (A)
415420 A = triangle in (UnitLowerTriangular, UnitUpperTriangular) ? A - Diagonal (A) + I : A
416421 A = sparse (A)
417- y = rand (elty, 10 )
422+ y = rand (elty, m )
418423 dA = CuSparseMatrixBSR (A, 1 )
419424 dy = CuArray (y)
420425 x = triangle (opa (A)) \ y
@@ -427,16 +432,23 @@ using LinearAlgebra, SparseArrays
427432 @testset " opa = $opa " for opa in [identity, transpose, adjoint]
428433 @testset " opb = $opb " for opb in [identity, transpose, adjoint]
429434 elty <: Complex && opb == adjoint && continue
430- A = rand (elty, 10 , 10 )
435+ m = 10
436+ n = 2
437+ A = rand (elty, m, m)
431438 A = triangle in (UnitLowerTriangular, LowerTriangular) ? tril (A) : triu (A)
432439 A = triangle in (UnitLowerTriangular, UnitUpperTriangular) ? A - Diagonal (A) + I : A
433440 A = sparse (A)
434- B = opb == identity ? rand (elty, 10 , 2 ) : rand (elty, 2 , 10 )
441+ B = opb == identity ? rand (elty, m, n ) : rand (elty, n, m )
435442 dA = CuSparseMatrixBSR (A, 1 )
436443 dB = CuArray (B)
437444 ldiv! (triangle (opa (A)), opb (B))
438445 ldiv! (triangle (opa (dA)), opb (dB))
439446 @test B ≈ collect (dB)
447+ if CUSPARSE. version () < v " 12.0"
448+ B_bad = opb == identity ? rand (elty, m+ 1 , n) : rand (elty, n, m+ 1 )
449+ error_str = opb == identity ? " first dimensions of A ($m ) and X ($(m+ 1 ) ) must match when transxy is 'N'" : " first dimension of A ($m ) must match second dimension of X ($(m+ 1 ) ) when transxy is not 'N'"
450+ @test_throws DimensionMismatch (error_str) ldiv! (triangle (opa (dA)), opb (CuArray (B_bad)))
451+ end
440452 end
441453 end
442454 end
@@ -445,16 +457,23 @@ using LinearAlgebra, SparseArrays
445457 @testset " opa = $opa " for opa in [identity, transpose, adjoint]
446458 @testset " opb = $opb " for opb in [identity, transpose, adjoint]
447459 elty <: Complex && opb == adjoint && continue
448- A = rand (elty, 10 , 10 )
460+ m = 10
461+ n = 2
462+ A = rand (elty, m, m)
449463 A = triangle in (UnitLowerTriangular, LowerTriangular) ? tril (A) : triu (A)
450464 A = triangle in (UnitLowerTriangular, UnitUpperTriangular) ? A - Diagonal (A) + I : A
451465 A = sparse (A)
452- B = opb == identity ? rand (elty, 10 , 2 ) : rand (elty, 2 , 10 )
466+ B = opb == identity ? rand (elty, m, n ) : rand (elty, n, m )
453467 dA = CuSparseMatrixBSR (A, 1 )
454468 dB = CuArray (B)
455469 C = triangle (opa (A)) \ opb (B)
456470 dC = triangle (opa (dA)) \ opb (dB)
457471 @test C ≈ collect (dC)
472+ if CUSPARSE. version () < v " 12.0"
473+ B_bad = opb == identity ? rand (elty, m+ 1 , n) : rand (elty, n, m+ 1 )
474+ error_str = opb == identity ? " first dimensions of A ($m ) and X ($(m+ 1 ) ) must match when transxy is 'N'" : " first dimension of A ($m ) must match second dimension of X ($(m+ 1 ) ) when transxy is not 'N'"
475+ @test_throws DimensionMismatch (error_str) ldiv! (triangle (opa (dA)), opb (CuArray (B_bad)))
476+ end
458477 end
459478 end
460479 end
@@ -466,11 +485,12 @@ using LinearAlgebra, SparseArrays
466485 @testset " ldiv!($triangle ($SparseMatrixType ), CuVector) -- $elty " for elty in [Float64,ComplexF64]
467486 @testset " opa = $opa " for opa in [identity, transpose, adjoint]
468487 SparseMatrixType == CuSparseMatrixCSC && elty <: Complex && opa == adjoint && continue
469- A = A = rand (elty, 10 , 10 )
488+ m = 10
489+ A = A = rand (elty, m, m)
470490 A = triangle in (UnitLowerTriangular, LowerTriangular) ? tril (A) : triu (A)
471491 A = triangle in (UnitLowerTriangular, UnitUpperTriangular) ? A - Diagonal (A) + I : A
472492 A = sparse (A)
473- y = rand (elty, 10 )
493+ y = rand (elty, m )
474494 dA = SparseMatrixType (A)
475495 dy = CuArray (y)
476496 ldiv! (triangle (opa (A)), y)
@@ -482,12 +502,13 @@ using LinearAlgebra, SparseArrays
482502 @testset " ldiv!(CuVector, $triangle ($SparseMatrixType ), CuVector) -- $elty " for elty in [Float64,ComplexF64]
483503 @testset " opa = $opa " for opa in [identity, transpose, adjoint]
484504 SparseMatrixType == CuSparseMatrixCSC && elty <: Complex && opa == adjoint && continue
485- A = A = rand (elty, 10 , 10 )
505+ m = 10
506+ A = A = rand (elty, m, m)
486507 A = triangle in (UnitLowerTriangular, LowerTriangular) ? tril (A) : triu (A)
487508 A = triangle in (UnitLowerTriangular, UnitUpperTriangular) ? A - Diagonal (A) + I : A
488509 A = sparse (A)
489- y = rand (elty, 10 )
490- x = rand (elty, 10 )
510+ y = rand (elty, m )
511+ x = rand (elty, m )
491512 dA = SparseMatrixType (A)
492513 dy = CuArray (y)
493514 dx = CuArray (x)
@@ -500,11 +521,12 @@ using LinearAlgebra, SparseArrays
500521 @testset " $triangle ($SparseMatrixType ) \\ CuVector -- $elty " for elty in [Float64,ComplexF64]
501522 @testset " opa = $opa " for opa in [identity, transpose, adjoint]
502523 SparseMatrixType == CuSparseMatrixCSC && elty <: Complex && opa == adjoint && continue
503- A = rand (elty, 10 , 10 )
524+ m = 10
525+ A = rand (elty, m, m)
504526 A = triangle in (UnitLowerTriangular, LowerTriangular) ? tril (A) : triu (A)
505527 A = triangle in (UnitLowerTriangular, UnitUpperTriangular) ? A - Diagonal (A) + I : A
506528 A = sparse (A)
507- y = rand (elty, 10 )
529+ y = rand (elty, m )
508530 dA = SparseMatrixType (A)
509531 dy = CuArray (y)
510532 x = triangle (opa (A)) \ y
@@ -518,16 +540,23 @@ using LinearAlgebra, SparseArrays
518540 @testset " opb = $opb " for opb in [identity, transpose, adjoint]
519541 SparseMatrixType == CuSparseMatrixCSC && elty <: Complex && opa == adjoint && continue
520542 elty <: Complex && opb == adjoint && continue
521- A = rand (elty, 10 , 10 )
543+ m = 10
544+ n = 2
545+ A = rand (elty, m, m)
522546 A = triangle in (UnitLowerTriangular, LowerTriangular) ? tril (A) : triu (A)
523547 A = triangle in (UnitLowerTriangular, UnitUpperTriangular) ? A - Diagonal (A) + I : A
524548 A = sparse (A)
525- B = opb == identity ? rand (elty, 10 , 2 ) : rand (elty, 2 , 10 )
549+ B = opb == identity ? rand (elty, m, n ) : rand (elty, n, m )
526550 dA = SparseMatrixType (A)
527551 dB = CuArray (B)
528552 ldiv! (triangle (opa (A)), opb (B))
529553 ldiv! (triangle (opa (dA)), opb (dB))
530554 @test B ≈ collect (dB)
555+ if CUSPARSE. version () < v " 12.0"
556+ B_bad = opb == identity ? rand (elty, m+ 1 , n) : rand (elty, n, m+ 1 )
557+ error_str = opb == identity ? " first dimensions of A ($m ) and X ($(m+ 1 ) ) must match when transxy is 'N'" : " first dimension of A ($m ) must match second dimension of X ($(m+ 1 ) ) when transxy is not 'N'"
558+ @test_throws DimensionMismatch (error_str) ldiv! (triangle (opa (dA)), opb (CuArray (B_bad)))
559+ end
531560 end
532561 end
533562 end
@@ -537,18 +566,25 @@ using LinearAlgebra, SparseArrays
537566 @testset " opb = $opb " for opb in [identity, transpose, adjoint]
538567 SparseMatrixType == CuSparseMatrixCSC && elty <: Complex && opa == adjoint && continue
539568 elty <: Complex && opb == adjoint && continue
540- A = rand (elty, 10 , 10 )
569+ m = 10
570+ n = 2
571+ A = rand (elty, m, m)
541572 A = triangle in (UnitLowerTriangular, LowerTriangular) ? tril (A) : triu (A)
542573 A = triangle in (UnitLowerTriangular, UnitUpperTriangular) ? A - Diagonal (A) + I : A
543574 A = sparse (A)
544- B = opb == identity ? rand (elty, 10 , 2 ) : rand (elty, 2 , 10 )
545- C = rand (elty, 10 , 2 )
575+ B = opb == identity ? rand (elty, m, n ) : rand (elty, n, m )
576+ C = rand (elty, m, n )
546577 dA = SparseMatrixType (A)
547578 dB = CuArray (B)
548579 dC = CuArray (C)
549580 ldiv! (C, triangle (opa (A)), opb (B))
550581 ldiv! (dC, triangle (opa (dA)), opb (dB))
551582 @test C ≈ collect (dC)
583+ if CUSPARSE. version () < v " 12.0"
584+ B_bad = opb == identity ? rand (elty, m+ 1 , n) : rand (elty, n, m+ 1 )
585+ error_str = opb == identity ? " first dimensions of A ($m ) and X ($(m+ 1 ) ) must match when transxy is 'N'" : " first dimension of A ($m ) must match second dimension of X ($(m+ 1 ) ) when transxy is not 'N'"
586+ @test_throws DimensionMismatch (error_str) ldiv! (triangle (opa (dA)), opb (CuArray (B_bad)))
587+ end
552588 end
553589 end
554590 end
@@ -558,16 +594,23 @@ using LinearAlgebra, SparseArrays
558594 @testset " opb = $opb " for opb in [identity, transpose, adjoint]
559595 SparseMatrixType == CuSparseMatrixCSC && elty <: Complex && opa == adjoint && continue
560596 elty <: Complex && opb == adjoint && continue
561- A = rand (elty, 10 , 10 )
597+ m = 10
598+ n = 2
599+ A = rand (elty, m, m)
562600 A = triangle in (UnitLowerTriangular, LowerTriangular) ? tril (A) : triu (A)
563601 A = triangle in (UnitLowerTriangular, UnitUpperTriangular) ? A - Diagonal (A) + I : A
564602 A = sparse (A)
565- B = opb == identity ? rand (elty, 10 , 2 ) : rand (elty, 2 , 10 )
603+ B = opb == identity ? rand (elty, m, n ) : rand (elty, n, m )
566604 dA = SparseMatrixType (A)
567605 dB = CuArray (B)
568606 C = triangle (opa (A)) \ opb (B)
569607 dC = triangle (opa (dA)) \ opb (dB)
570608 @test C ≈ collect (dC)
609+ if CUSPARSE. version () < v " 12.0"
610+ B_bad = opb == identity ? rand (elty, m+ 1 , n) : rand (elty, n, m+ 1 )
611+ error_str = opb == identity ? " first dimensions of A ($m ) and X ($(m+ 1 ) ) must match when transxy is 'N'" : " first dimension of A ($m ) must match second dimension of X ($(m+ 1 ) ) when transxy is not 'N'"
612+ @test_throws DimensionMismatch (error_str) ldiv! (triangle (opa (dA)), opb (CuArray (B_bad)))
613+ end
571614 end
572615 end
573616 end
0 commit comments