@@ -88,7 +88,7 @@ LinearAlgebra.svdvals(A::ElementalMatrix, ctrl::SVDCtrl) = svdvals!(copy(A), ctr
8888# return dest
8989# end
9090
91- function Base. copy ! (dest:: DistMatrix{T} , src:: Base.AbstractVecOrMat ) where {T}
91+ function Base. copyto ! (dest:: DistMatrix{T} , src:: Base.AbstractVecOrMat ) where {T}
9292 m, n = size (src, 1 ), size (src, 2 )
9393 zeros! (dest, m, n)
9494 if MPI. commRank (comm (dest)) == 0
@@ -102,9 +102,9 @@ function Base.copy!(dest::DistMatrix{T}, src::Base.AbstractVecOrMat) where {T}
102102 return dest
103103end
104104
105- Base. copy ! (dest:: DistMatrix , src:: ElementalMatrix ) = _copy! (src, dest)
105+ Base. copyto ! (dest:: DistMatrix , src:: ElementalMatrix ) = _copy! (src, dest)
106106
107- function Base. copy ! (dest:: Base.VecOrMat , src:: DistMatrix{T} ) where {T}
107+ function Base. copyto ! (dest:: Base.VecOrMat , src:: DistMatrix{T} ) where {T}
108108 m, n = size (src, 1 ), size (src, 2 )
109109 if MPI. commRank (comm (src)) == 0
110110 for j = 1 : n
@@ -177,7 +177,7 @@ function Base.convert(::Type{DistMatrix{T}}, A::DistMultiVec{T}) where {T}
177177end
178178
179179Base. convert (:: Type{Array} , xd:: DistMatrix{T} ) where {T} =
180- Base. copy ! (Base. zeros (T, size (xd)), xd)
180+ Base. copyto ! (Base. zeros (T, size (xd)), xd)
181181
182182Base. Array (xd:: DistMatrix ) = convert (Array, xd)
183183
@@ -194,3 +194,11 @@ LinearAlgebra.cholesky!(A::Hermitian{<:Union{Real,Complex},<:ElementalMatrix}) =
194194LinearAlgebra. cholesky (A:: Hermitian{<:Union{Real,Complex},<:ElementalMatrix} ) = cholesky! (copy (A))
195195
196196LinearAlgebra. lu (A:: ElementalMatrix ) = _lu! (copy (A))
197+
198+ # Mixed multiplication with Julia Arrays
199+ (* )(A:: DistMatrix{T} , B:: StridedVecOrMat{T} ) where {T} = A* convert (DistMatrix{T}, B)
200+ (* )(A:: DistMultiVec{T} , B:: StridedVecOrMat{T} ) where {T} = convert (DistMatrix{T}, A)* convert (DistMatrix{T}, B)
201+ (* )(A:: DistSparseMatrix{T} , B:: StridedVecOrMat{T} ) where {T} = A* convert (DistMultiVec{T}, B)
202+ (* )(A:: Adjoint{T,DistMatrix{T}} , B:: StridedVecOrMat{T} ) where {T} = A* convert (DistMatrix{T}, B)
203+ (* )(A:: Adjoint{T,DistMultiVec{T}} , B:: Base.VecOrMat{T} ) where {T} = convert (DistMatrix{T}, parent (A))' * convert (DistMatrix{T}, B)
204+ (* )(A:: Adjoint{T,DistSparseMatrix{T}} , B:: Base.VecOrMat{T} ) where {T} = A* convert (DistMultiVec{T}, B)
0 commit comments