@@ -340,21 +340,23 @@ using LinearAlgebra, SparseArrays
340
340
end
341
341
342
342
@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 ))
344
345
@test SparseMatrixCSC (CuSparseMatrixCSR (S)) ≈ S
345
346
346
- S = sprand (elty, 10 , 10 , 0.1 )
347
+ S = sprand (elty, m, m , 0.1 )
347
348
T = f (CuSparseMatrixCSR (S))
348
349
@test SparseMatrixCSC (CuSparseMatrixCSC (T)) ≈ f (S)
349
350
350
- S = sprand (elty, 10 , 10 , 0.1 )
351
+ S = sprand (elty, m, m , 0.1 )
351
352
T = f (CuSparseMatrixCSC (S))
352
353
@test SparseMatrixCSC (CuSparseMatrixCSR (T)) ≈ f (S)
353
354
end
354
355
355
356
@testset " UniformScaling basic operations" begin
356
357
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 )
358
360
U1 = 2 * I
359
361
for SparseMatrixType in (CuSparseMatrixCSC, CuSparseMatrixCSR, CuSparseMatrixCOO)
360
362
B = SparseMatrixType (A)
@@ -367,9 +369,10 @@ using LinearAlgebra, SparseArrays
367
369
368
370
@testset " Diagonal basic operations" begin
369
371
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))
373
376
for SparseMatrixType in (CuSparseMatrixCSC, CuSparseMatrixCSR, CuSparseMatrixCOO)
374
377
B = SparseMatrixType (A)
375
378
for op in (+ , - , * )
@@ -395,11 +398,12 @@ using LinearAlgebra, SparseArrays
395
398
for triangle in [LowerTriangular, UnitLowerTriangular, UpperTriangular, UnitUpperTriangular]
396
399
@testset " ldiv!($triangle (CuSparseMatrixBSR), CuVector) -- $elty " for elty in [Float32,Float64,ComplexF32,ComplexF64]
397
400
@testset " opa = $opa " for opa in [identity, transpose, adjoint]
398
- A = rand (elty, 10 , 10 )
401
+ m = 10
402
+ A = rand (elty, m, m)
399
403
A = triangle in (UnitLowerTriangular, LowerTriangular) ? tril (A) : triu (A)
400
404
A = triangle in (UnitLowerTriangular, UnitUpperTriangular) ? A - Diagonal (A) + I : A
401
405
A = sparse (A)
402
- y = rand (elty, 10 )
406
+ y = rand (elty, m )
403
407
dA = CuSparseMatrixBSR (A, 1 )
404
408
dy = CuArray (y)
405
409
ldiv! (triangle (opa (A)), y)
@@ -410,11 +414,12 @@ using LinearAlgebra, SparseArrays
410
414
411
415
@testset " $triangle (CuSparseMatrixBSR) \\ CuVector -- $elty " for elty in [Float32,Float64,ComplexF32,ComplexF64]
412
416
@testset " opa = $opa " for opa in [identity, transpose, adjoint]
413
- A = rand (elty, 10 , 10 )
417
+ m = 10
418
+ A = rand (elty, m, m)
414
419
A = triangle in (UnitLowerTriangular, LowerTriangular) ? tril (A) : triu (A)
415
420
A = triangle in (UnitLowerTriangular, UnitUpperTriangular) ? A - Diagonal (A) + I : A
416
421
A = sparse (A)
417
- y = rand (elty, 10 )
422
+ y = rand (elty, m )
418
423
dA = CuSparseMatrixBSR (A, 1 )
419
424
dy = CuArray (y)
420
425
x = triangle (opa (A)) \ y
@@ -427,16 +432,23 @@ using LinearAlgebra, SparseArrays
427
432
@testset " opa = $opa " for opa in [identity, transpose, adjoint]
428
433
@testset " opb = $opb " for opb in [identity, transpose, adjoint]
429
434
elty <: Complex && opb == adjoint && continue
430
- A = rand (elty, 10 , 10 )
435
+ m = 10
436
+ n = 2
437
+ A = rand (elty, m, m)
431
438
A = triangle in (UnitLowerTriangular, LowerTriangular) ? tril (A) : triu (A)
432
439
A = triangle in (UnitLowerTriangular, UnitUpperTriangular) ? A - Diagonal (A) + I : A
433
440
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 )
435
442
dA = CuSparseMatrixBSR (A, 1 )
436
443
dB = CuArray (B)
437
444
ldiv! (triangle (opa (A)), opb (B))
438
445
ldiv! (triangle (opa (dA)), opb (dB))
439
446
@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
440
452
end
441
453
end
442
454
end
@@ -445,16 +457,23 @@ using LinearAlgebra, SparseArrays
445
457
@testset " opa = $opa " for opa in [identity, transpose, adjoint]
446
458
@testset " opb = $opb " for opb in [identity, transpose, adjoint]
447
459
elty <: Complex && opb == adjoint && continue
448
- A = rand (elty, 10 , 10 )
460
+ m = 10
461
+ n = 2
462
+ A = rand (elty, m, m)
449
463
A = triangle in (UnitLowerTriangular, LowerTriangular) ? tril (A) : triu (A)
450
464
A = triangle in (UnitLowerTriangular, UnitUpperTriangular) ? A - Diagonal (A) + I : A
451
465
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 )
453
467
dA = CuSparseMatrixBSR (A, 1 )
454
468
dB = CuArray (B)
455
469
C = triangle (opa (A)) \ opb (B)
456
470
dC = triangle (opa (dA)) \ opb (dB)
457
471
@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
458
477
end
459
478
end
460
479
end
@@ -466,11 +485,12 @@ using LinearAlgebra, SparseArrays
466
485
@testset " ldiv!($triangle ($SparseMatrixType ), CuVector) -- $elty " for elty in [Float64,ComplexF64]
467
486
@testset " opa = $opa " for opa in [identity, transpose, adjoint]
468
487
SparseMatrixType == CuSparseMatrixCSC && elty <: Complex && opa == adjoint && continue
469
- A = A = rand (elty, 10 , 10 )
488
+ m = 10
489
+ A = A = rand (elty, m, m)
470
490
A = triangle in (UnitLowerTriangular, LowerTriangular) ? tril (A) : triu (A)
471
491
A = triangle in (UnitLowerTriangular, UnitUpperTriangular) ? A - Diagonal (A) + I : A
472
492
A = sparse (A)
473
- y = rand (elty, 10 )
493
+ y = rand (elty, m )
474
494
dA = SparseMatrixType (A)
475
495
dy = CuArray (y)
476
496
ldiv! (triangle (opa (A)), y)
@@ -482,12 +502,13 @@ using LinearAlgebra, SparseArrays
482
502
@testset " ldiv!(CuVector, $triangle ($SparseMatrixType ), CuVector) -- $elty " for elty in [Float64,ComplexF64]
483
503
@testset " opa = $opa " for opa in [identity, transpose, adjoint]
484
504
SparseMatrixType == CuSparseMatrixCSC && elty <: Complex && opa == adjoint && continue
485
- A = A = rand (elty, 10 , 10 )
505
+ m = 10
506
+ A = A = rand (elty, m, m)
486
507
A = triangle in (UnitLowerTriangular, LowerTriangular) ? tril (A) : triu (A)
487
508
A = triangle in (UnitLowerTriangular, UnitUpperTriangular) ? A - Diagonal (A) + I : A
488
509
A = sparse (A)
489
- y = rand (elty, 10 )
490
- x = rand (elty, 10 )
510
+ y = rand (elty, m )
511
+ x = rand (elty, m )
491
512
dA = SparseMatrixType (A)
492
513
dy = CuArray (y)
493
514
dx = CuArray (x)
@@ -500,11 +521,12 @@ using LinearAlgebra, SparseArrays
500
521
@testset " $triangle ($SparseMatrixType ) \\ CuVector -- $elty " for elty in [Float64,ComplexF64]
501
522
@testset " opa = $opa " for opa in [identity, transpose, adjoint]
502
523
SparseMatrixType == CuSparseMatrixCSC && elty <: Complex && opa == adjoint && continue
503
- A = rand (elty, 10 , 10 )
524
+ m = 10
525
+ A = rand (elty, m, m)
504
526
A = triangle in (UnitLowerTriangular, LowerTriangular) ? tril (A) : triu (A)
505
527
A = triangle in (UnitLowerTriangular, UnitUpperTriangular) ? A - Diagonal (A) + I : A
506
528
A = sparse (A)
507
- y = rand (elty, 10 )
529
+ y = rand (elty, m )
508
530
dA = SparseMatrixType (A)
509
531
dy = CuArray (y)
510
532
x = triangle (opa (A)) \ y
@@ -518,16 +540,23 @@ using LinearAlgebra, SparseArrays
518
540
@testset " opb = $opb " for opb in [identity, transpose, adjoint]
519
541
SparseMatrixType == CuSparseMatrixCSC && elty <: Complex && opa == adjoint && continue
520
542
elty <: Complex && opb == adjoint && continue
521
- A = rand (elty, 10 , 10 )
543
+ m = 10
544
+ n = 2
545
+ A = rand (elty, m, m)
522
546
A = triangle in (UnitLowerTriangular, LowerTriangular) ? tril (A) : triu (A)
523
547
A = triangle in (UnitLowerTriangular, UnitUpperTriangular) ? A - Diagonal (A) + I : A
524
548
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 )
526
550
dA = SparseMatrixType (A)
527
551
dB = CuArray (B)
528
552
ldiv! (triangle (opa (A)), opb (B))
529
553
ldiv! (triangle (opa (dA)), opb (dB))
530
554
@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
531
560
end
532
561
end
533
562
end
@@ -537,18 +566,25 @@ using LinearAlgebra, SparseArrays
537
566
@testset " opb = $opb " for opb in [identity, transpose, adjoint]
538
567
SparseMatrixType == CuSparseMatrixCSC && elty <: Complex && opa == adjoint && continue
539
568
elty <: Complex && opb == adjoint && continue
540
- A = rand (elty, 10 , 10 )
569
+ m = 10
570
+ n = 2
571
+ A = rand (elty, m, m)
541
572
A = triangle in (UnitLowerTriangular, LowerTriangular) ? tril (A) : triu (A)
542
573
A = triangle in (UnitLowerTriangular, UnitUpperTriangular) ? A - Diagonal (A) + I : A
543
574
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 )
546
577
dA = SparseMatrixType (A)
547
578
dB = CuArray (B)
548
579
dC = CuArray (C)
549
580
ldiv! (C, triangle (opa (A)), opb (B))
550
581
ldiv! (dC, triangle (opa (dA)), opb (dB))
551
582
@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
552
588
end
553
589
end
554
590
end
@@ -558,16 +594,23 @@ using LinearAlgebra, SparseArrays
558
594
@testset " opb = $opb " for opb in [identity, transpose, adjoint]
559
595
SparseMatrixType == CuSparseMatrixCSC && elty <: Complex && opa == adjoint && continue
560
596
elty <: Complex && opb == adjoint && continue
561
- A = rand (elty, 10 , 10 )
597
+ m = 10
598
+ n = 2
599
+ A = rand (elty, m, m)
562
600
A = triangle in (UnitLowerTriangular, LowerTriangular) ? tril (A) : triu (A)
563
601
A = triangle in (UnitLowerTriangular, UnitUpperTriangular) ? A - Diagonal (A) + I : A
564
602
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 )
566
604
dA = SparseMatrixType (A)
567
605
dB = CuArray (B)
568
606
C = triangle (opa (A)) \ opb (B)
569
607
dC = triangle (opa (dA)) \ opb (dB)
570
608
@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
571
614
end
572
615
end
573
616
end
0 commit comments