@@ -2,7 +2,7 @@ using CUDA.CUSPARSE
2
2
3
3
using LinearAlgebra
4
4
using SparseArrays
5
- using SparseArrays: nonzeroinds, getcolptr
5
+ using SparseArrays: rowvals, nonzeroinds, getcolptr
6
6
7
7
@test CUSPARSE. version () isa VersionNumber
8
8
@@ -22,6 +22,7 @@ blockdim = 5
22
22
@test ndims (d_x) == 1
23
23
dense_d_x = CuVector (x)
24
24
CUDA. @allowscalar begin
25
+ @test sprint (show, d_x) == replace (sprint (show, x), " SparseVector{Float64, Int64}" => " CUDA.CUSPARSE.CuSparseVector{Float64, Int32}" , " sparsevec([" => " sparsevec(Int32[" )
25
26
@test Array (d_x[:]) == x[:]
26
27
@test d_x[firstindex (d_x)] == x[firstindex (x)]
27
28
@test d_x[div (end , 2 )] == x[div (end , 2 )]
@@ -34,7 +35,13 @@ blockdim = 5
34
35
@test nnz (d_x) == nnz (x)
35
36
@test Array (nonzeros (d_x)) == nonzeros (x)
36
37
@test Array (nonzeroinds (d_x)) == nonzeroinds (x)
38
+ @test Array (rowvals (d_x)) == nonzeroinds (x)
37
39
@test nnz (d_x) == length (nonzeros (d_x))
40
+ d_y = copy (d_x)
41
+ CUDA. unsafe_free! (d_y)
42
+ x = sprand (m,0.2 )
43
+ d_x = CuSparseMatrixCSC {Float64} (x)
44
+ @test size (d_x) == (m, 1 )
38
45
x = sprand (m,n,0.2 )
39
46
d_x = CuSparseMatrixCSC (x)
40
47
@test CuSparseMatrixCSC (d_x) === d_x
@@ -74,6 +81,8 @@ blockdim = 5
74
81
@test ! ishermitian (d_x)
75
82
@test_throws ArgumentError size (d_x,0 )
76
83
@test_throws ArgumentError CUSPARSE. CuSparseVector (x)
84
+ d_y = copy (d_x)
85
+ CUDA. unsafe_free! (d_y)
77
86
y = sprand (k,n,0.2 )
78
87
d_y = CuSparseMatrixCSC (y)
79
88
@test_throws ArgumentError copyto! (d_y,d_x)
@@ -111,7 +120,15 @@ blockdim = 5
111
120
@test_throws ArgumentError copyto! (d_y,d_x)
112
121
d_y = CuSparseMatrixCSR (d_y)
113
122
d_x = CuSparseMatrixCSR (d_x)
123
+ d_z = copy (d_x)
124
+ CUDA. unsafe_free! (d_z)
114
125
@test CuSparseMatrixCSR (d_x) === d_x
126
+ @test reshape (d_x, :, :, 1 , 1 , 1 ) isa CuSparseArrayCSR
127
+ @test_throws ArgumentError (" Cannot repeat matrix dimensions of CuSparseCSR" ) repeat (d_x, 2 , 1 , 3 )
128
+ @test repeat (d_x, 1 , 1 , 3 ) isa CuSparseArrayCSR
129
+ @test reshape (repeat (d_x, 1 , 1 , 3 ), size (d_x, 1 ), size (d_x, 2 ), 3 , 1 , 1 ) isa CuSparseArrayCSR
130
+ # to hit the CuSparseArrayCSR path
131
+ CUDA. unsafe_free! (repeat (d_x, 1 , 1 , 3 ))
115
132
@test length (d_x) == m* n
116
133
@test_throws ArgumentError copyto! (d_y,d_x)
117
134
CUDA. @allowscalar begin
@@ -123,6 +140,8 @@ blockdim = 5
123
140
d_y = CuSparseMatrixBSR (d_y, blockdim)
124
141
d_x = CuSparseMatrixBSR (d_x, blockdim)
125
142
@test CuSparseMatrixBSR (d_x) === d_x
143
+ d_z = copy (d_x)
144
+ CUDA. unsafe_free! (d_z)
126
145
@test_throws ArgumentError copyto! (d_y,d_x)
127
146
CUDA. @allowscalar begin
128
147
@test d_y[1 , 1 ] ≈ y[1 , 1 ]
0 commit comments