@@ -79,17 +79,22 @@ for (taga, untaga) in tag_wrappers, (wrapa, transa, unwrapa) in op_wrappers
79
79
end
80
80
end
81
81
82
+ function LinearAlgebra.:(* )(A:: Union{CuMatrix, CuSparseMatrix} , B:: CuSparseMatrix{T} ) where {T}
83
+ return mul! (similar (CuMatrix{T}, (size (A,1 ), size (B,2 ))), A, CuArray (B))
84
+ end
85
+
86
+ function LinearAlgebra. mul! (C:: CuMatrix{T} , A:: CuMatrix{T} , B:: CuSparseMatrix{T} ) where {T}
87
+ mul! (C, B' , A' , one (T), zero (T))
88
+ return C'
89
+ end
90
+
82
91
Base.:(+ )(A:: CuSparseMatrixCSR , B:: CuSparseMatrixCSR ) = geam (one (eltype (A)), A, one (eltype (A)), B, ' O' )
83
92
Base.:(- )(A:: CuSparseMatrixCSR , B:: CuSparseMatrixCSR ) = geam (one (eltype (A)), A, - one (eltype (A)), B, ' O' )
84
93
85
- Base.:(+ )(A:: CuSparseMatrixCSR , B:: Adjoint{T,<:CuSparseMatrixCSR} ) where {T} =
86
- A + Transpose (conj (B. parent))
87
- Base.:(- )(A:: CuSparseMatrixCSR , B:: Adjoint{T,<:CuSparseMatrixCSR} ) where {T} =
88
- A - Transpose (conj (B. parent))
89
- Base.:(+ )(A:: Adjoint{T,<:CuSparseMatrixCSR} , B:: CuSparseMatrixCSR ) where {T} =
90
- Transpose (conj (A. parent)) + B
91
- Base.:(- )(A:: Adjoint{T,<:CuSparseMatrixCSR} , B:: CuSparseMatrixCSR ) where {T} =
92
- Transpose (conj (A. parent)) - B
94
+ Base.:(+ )(A:: CuSparseMatrixCSR , B:: Adjoint{T,<:CuSparseMatrixCSR} ) where {T} = A + Transpose (conj (B. parent))
95
+ Base.:(- )(A:: CuSparseMatrixCSR , B:: Adjoint{T,<:CuSparseMatrixCSR} ) where {T} = A - Transpose (conj (B. parent))
96
+ Base.:(+ )(A:: Adjoint{T,<:CuSparseMatrixCSR} , B:: CuSparseMatrixCSR ) where {T} = Transpose (conj (A. parent)) + B
97
+ Base.:(- )(A:: Adjoint{T,<:CuSparseMatrixCSR} , B:: CuSparseMatrixCSR ) where {T} = Transpose (conj (A. parent)) - B
93
98
Base.:(+ )(A:: Adjoint{T,<:CuSparseMatrixCSR} , B:: Adjoint{T,<:CuSparseMatrixCSR} ) where {T} =
94
99
Transpose (conj (A. parent)) + B
95
100
Base.:(- )(A:: Adjoint{T,<:CuSparseMatrixCSR} , B:: Adjoint{T,<:CuSparseMatrixCSR} ) where {T} =
0 commit comments