@@ -581,40 +581,6 @@ function LinearAlgebra.rmul!(A::Adjoint{Tt, <:CuMatrix{Tt}}, B::Diagonal{Td,<:Cu
581581 return adjoint (At)
582582end
583583
584- # diagm
585-
586- LinearAlgebra. diagm (kv:: Pair{<:Integer,<:CuVector} ...) = _cuda_diagm (nothing , kv... )
587- LinearAlgebra. diagm (m:: Integer , n:: Integer , kv:: Pair{<:Integer,<:CuVector} ...) = _cuda_diagm ((Int (m),Int (n)), kv... )
588- LinearAlgebra. diagm (v:: CuVector ) = LinearAlgebra. diagm (0 => v)
589- LinearAlgebra. diagm (m:: Integer , n:: Integer , v:: CuVector ) = LinearAlgebra. diagm (m, n, 0 => v)
590-
591- function _cuda_diagm (size, kv:: Pair{<:Integer,<:CuVector} ...)
592- A = LinearAlgebra. diagm_container (size, kv... )
593- for p in kv
594- inds = LinearAlgebra. diagind (A, p. first)
595- copyto! (view (A, inds), p. second)
596- end
597- return A
598- end
599-
600- function LinearAlgebra. diagm_container (size, kv:: Pair{<:Integer,<:CuVector} ...)
601- T = promote_type (map (x -> eltype (x. second), kv)... )
602- U = promote_type (T, typeof (zero (T)))
603- return CUDA. zeros (U, LinearAlgebra. diagm_size (size, kv... )... )
604- end
605-
606- function LinearAlgebra. diagm_size (size:: Nothing , kv:: Pair{<:Integer,<:CuVector} ...)
607- mnmax = mapreduce (x -> length (x. second) + abs (Int (x. first)), max, kv; init= 0 )
608- return mnmax, mnmax
609- end
610- function LinearAlgebra. diagm_size (size:: Tuple{Int,Int} , kv:: Pair{<:Integer,<:CuVector} ...)
611- mmax = mapreduce (x -> length (x. second) - min (0 ,Int (x. first)), max, kv; init= 0 )
612- nmax = mapreduce (x -> length (x. second) + max (0 ,Int (x. first)), max, kv; init= 0 )
613- m, n = size
614- (m ≥ mmax && n ≥ nmax) || throw (DimensionMismatch (lazy " invalid size=$size" ))
615- return m, n
616- end
617-
618584# symmetric mul!
619585
620586op_wrappers = ((identity, T -> ' N' , identity),
0 commit comments