|
1 | 1 | using SparseMatricesCSR
|
2 | 2 | using SparseArrays
|
3 | 3 | using CUDA
|
| 4 | +using CUDA.CUSPARSE |
4 | 5 | using Test
|
5 | 6 |
|
6 |
| -@testset "SparseMatricesCSR" begin |
7 |
| - A = sprand(10, 10, 0.1) |
8 |
| - A_csr = SparseMatrixCSR(A) |
9 |
| - A_gpu = CUSPARSE.CuSparseMatrixCSR(A_csr) |
| 7 | +@testset "SparseMatricesCSRExt" begin |
10 | 8 |
|
11 |
| - @test size(A_gpu) == size(A_csr) |
12 |
| - @test CUSPARSE.nnz(A_gpu) == nnz(A_csr) |
13 |
| - @test SparseMatrixCSR(A_gpu) ≈ A_csr |
14 |
| - @test A_csr |> cu isa CUSPARSE.CuSparseMatrixCSR |
15 |
| - |
16 |
| - # convert from CSR to CuCSC |
17 |
| - A_csc_gpu = CUSPARSE.CuSparseMatrixCSC(A_csr) |
18 |
| - @test size(A_csc_gpu) == size(A) |
19 |
| - @test CUSPARSE.nnz(A_csc_gpu) == nnz(A) |
20 |
| - @test SparseMatrixCSC(A_csc_gpu) ≈ A |
| 9 | + for (n, bd, p) in [(100, 5, 0.02), (5, 1, 0.8), (4, 2, 0.5)] |
| 10 | + v"12.0" <= CUSPARSE.version() < v"12.1" && n == 4 && continue |
| 11 | + @testset "conversions between CuSparseMatrices (n, bd, p) = ($n, $bd, $p)" begin |
| 12 | + _A = sprand(n, n, p) |
| 13 | + A = SparseMatrixCSR(_A) |
| 14 | + blockdim = bd |
| 15 | + for CuSparseMatrixType1 in (CuSparseMatrixCSC, CuSparseMatrixCSR, CuSparseMatrixCOO, CuSparseMatrixBSR) |
| 16 | + dA1 = CuSparseMatrixType1 == CuSparseMatrixBSR ? CuSparseMatrixType1(A, blockdim) : CuSparseMatrixType1(A) |
| 17 | + @testset "conversion $CuSparseMatrixType1 --> SparseMatrixCSR" begin |
| 18 | + @test SparseMatrixCSR(dA1) ≈ A |
| 19 | + end |
| 20 | + for CuSparseMatrixType2 in (CuSparseMatrixCSC, CuSparseMatrixCSR, CuSparseMatrixCOO, CuSparseMatrixBSR) |
| 21 | + CuSparseMatrixType1 == CuSparseMatrixType2 && continue |
| 22 | + dA2 = CuSparseMatrixType2 == CuSparseMatrixBSR ? CuSparseMatrixType2(dA1, blockdim) : CuSparseMatrixType2(dA1) |
| 23 | + @testset "conversion $CuSparseMatrixType1 --> $CuSparseMatrixType2" begin |
| 24 | + @test collect(dA1) ≈ collect(dA2) |
| 25 | + end |
| 26 | + end |
| 27 | + end |
| 28 | + end |
| 29 | + end |
21 | 30 | end
|
0 commit comments