@@ -53,6 +53,14 @@ for f in [:rowvals, :nonzeros, :getcolptr]
53
53
@eval SparseArrays.$ (f)(A:: ThreadedSparseMatrixCSC ) = SparseArrays.$ (f)(A. A)
54
54
end
55
55
56
+ # For non-threaded implementations, fallback to sparse methods and not generic matmul.
57
+ mul! (C:: AbstractVector , A:: ThreadedSparseMatrixCSC , B:: AbstractVector , α:: Number , β:: Number ) = mul! (C, A. A, B, α, β)
58
+ mul! (C:: AbstractMatrix , A:: ThreadedSparseMatrixCSC , B:: AbstractMatrix , α:: Number , β:: Number ) = mul! (C, A. A, B, α, β)
59
+ mul! (C:: AbstractVector , A:: Adjoint{<:Any,<:ThreadedSparseMatrixCSC} , B:: AbstractVector , α:: Number , β:: Number ) = mul! (C, adjoint (A. parent. A), B, α, β)
60
+ mul! (C:: AbstractMatrix , A:: Adjoint{<:Any,<:ThreadedSparseMatrixCSC} , B:: AbstractMatrix , α:: Number , β:: Number ) = mul! (C, adjoint (A. parent. A), B, α, β)
61
+ mul! (C:: AbstractVector , A:: Transpose{<:Any,<:ThreadedSparseMatrixCSC} , B:: AbstractVector , α:: Number , β:: Number ) = mul! (C, transpose (A. parent. A), B, α, β)
62
+ mul! (C:: AbstractMatrix , A:: Transpose{<:Any,<:ThreadedSparseMatrixCSC} , B:: AbstractMatrix , α:: Number , β:: Number ) = mul! (C, transpose (A. parent. A), B, α, β)
63
+
56
64
function mul! (C:: StridedVecOrMat , A:: ThreadedSparseMatrixCSC , B:: Union{StridedVector,AdjOrTransDenseMatrix} , α:: Number , β:: Number )
57
65
size (A, 2 ) == size (B, 1 ) || throw (DimensionMismatch ())
58
66
size (A, 1 ) == size (C, 1 ) || throw (DimensionMismatch ())
0 commit comments