@@ -3,7 +3,12 @@ module ThreadedSparseArrays
3
3
using LinearAlgebra
4
4
import LinearAlgebra: mul!
5
5
using SparseArrays
6
- import SparseArrays: AdjOrTransStridedOrTriangularMatrix, getcolptr
6
+ import SparseArrays: getcolptr
7
+ const AdjOrTransDenseMatrix = if VERSION < v " 1.7.0-DEV.499"
8
+ SparseArrays. AdjOrTransStridedOrTriangularMatrix
9
+ else
10
+ SparseArrays. AdjOrTransDenseMatrix
11
+ end
7
12
8
13
# * Threading utilities
9
14
struct RangeIterator
@@ -48,7 +53,7 @@ for f in [:rowvals, :nonzeros, :getcolptr]
48
53
@eval SparseArrays.$ (f)(A:: ThreadedSparseMatrixCSC ) = SparseArrays.$ (f)(A. A)
49
54
end
50
55
51
- function mul! (C:: StridedVecOrMat , A:: ThreadedSparseMatrixCSC , B:: Union{StridedVector,AdjOrTransStridedOrTriangularMatrix } , α:: Number , β:: Number )
56
+ function mul! (C:: StridedVecOrMat , A:: ThreadedSparseMatrixCSC , B:: Union{StridedVector,AdjOrTransDenseMatrix } , α:: Number , β:: Number )
52
57
size (A, 2 ) == size (B, 1 ) || throw (DimensionMismatch ())
53
58
size (A, 1 ) == size (C, 1 ) || throw (DimensionMismatch ())
54
59
size (B, 2 ) == size (C, 2 ) || throw (DimensionMismatch ())
@@ -70,7 +75,7 @@ function mul!(C::StridedVecOrMat, A::ThreadedSparseMatrixCSC, B::Union{StridedVe
70
75
C
71
76
end
72
77
73
- function mul! (C:: StridedVecOrMat , adjA:: Adjoint{<:Any,<:ThreadedSparseMatrixCSC} , B:: AdjOrTransStridedOrTriangularMatrix , α:: Number , β:: Number )
78
+ function mul! (C:: StridedVecOrMat , adjA:: Adjoint{<:Any,<:ThreadedSparseMatrixCSC} , B:: AdjOrTransDenseMatrix , α:: Number , β:: Number )
74
79
A = adjA. parent
75
80
size (A, 2 ) == size (C, 1 ) || throw (DimensionMismatch ())
76
81
size (A, 1 ) == size (B, 1 ) || throw (DimensionMismatch ())
@@ -118,7 +123,7 @@ function mul!(C::StridedVecOrMat, adjA::Adjoint{<:Any,<:ThreadedSparseMatrixCSC}
118
123
C
119
124
end
120
125
121
- function mul! (C:: StridedVecOrMat , transA:: Transpose{<:Any,<:ThreadedSparseMatrixCSC} , B:: AdjOrTransStridedOrTriangularMatrix , α:: Number , β:: Number )
126
+ function mul! (C:: StridedVecOrMat , transA:: Transpose{<:Any,<:ThreadedSparseMatrixCSC} , B:: AdjOrTransDenseMatrix , α:: Number , β:: Number )
122
127
A = transA. parent
123
128
size (A, 2 ) == size (C, 1 ) || throw (DimensionMismatch ())
124
129
size (A, 1 ) == size (B, 1 ) || throw (DimensionMismatch ())
@@ -164,7 +169,7 @@ function mul!(C::StridedVecOrMat, transA::Transpose{<:Any,<:ThreadedSparseMatrix
164
169
C
165
170
end
166
171
167
- function mul! (C:: StridedVecOrMat , X:: AdjOrTransStridedOrTriangularMatrix , A:: ThreadedSparseMatrixCSC , α:: Number , β:: Number )
172
+ function mul! (C:: StridedVecOrMat , X:: AdjOrTransDenseMatrix , A:: ThreadedSparseMatrixCSC , α:: Number , β:: Number )
168
173
mX, nX = size (X)
169
174
nX == size (A, 1 ) || throw (DimensionMismatch ())
170
175
mX == size (C, 1 ) || throw (DimensionMismatch ())
0 commit comments