From db43cf78b6345da659eca32899e5471395b7a900 Mon Sep 17 00:00:00 2001 From: Katharine Hyatt Date: Wed, 19 Nov 2025 08:09:26 -0500 Subject: [PATCH 1/2] Remove diagm in favour of GPUArrays --- Project.toml | 3 +++ lib/cublas/linalg.jl | 34 ---------------------------------- 2 files changed, 3 insertions(+), 34 deletions(-) diff --git a/Project.toml b/Project.toml index 07e437dbb2..afb0b485c2 100644 --- a/Project.toml +++ b/Project.toml @@ -96,3 +96,6 @@ ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" SparseMatricesCSR = "a0a7dd2c-ebf4-11e9-1f05-cf50bc540ca1" SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b" + +[sources] +GPUArrays = {url="https://github.com/JuliaGPU/GPUArrays.jl", rev="master"} diff --git a/lib/cublas/linalg.jl b/lib/cublas/linalg.jl index ea027edabc..83ef750dbb 100644 --- a/lib/cublas/linalg.jl +++ b/lib/cublas/linalg.jl @@ -581,40 +581,6 @@ function LinearAlgebra.rmul!(A::Adjoint{Tt, <:CuMatrix{Tt}}, B::Diagonal{Td,<:Cu return adjoint(At) end -# diagm - -LinearAlgebra.diagm(kv::Pair{<:Integer,<:CuVector}...) = _cuda_diagm(nothing, kv...) -LinearAlgebra.diagm(m::Integer, n::Integer, kv::Pair{<:Integer,<:CuVector}...) = _cuda_diagm((Int(m),Int(n)), kv...) -LinearAlgebra.diagm(v::CuVector) = LinearAlgebra.diagm(0 => v) -LinearAlgebra.diagm(m::Integer, n::Integer, v::CuVector) = LinearAlgebra.diagm(m, n, 0 => v) - -function _cuda_diagm(size, kv::Pair{<:Integer,<:CuVector}...) - A = LinearAlgebra.diagm_container(size, kv...) - for p in kv - inds = LinearAlgebra.diagind(A, p.first) - copyto!(view(A, inds), p.second) - end - return A -end - -function LinearAlgebra.diagm_container(size, kv::Pair{<:Integer,<:CuVector}...) - T = promote_type(map(x -> eltype(x.second), kv)...) - U = promote_type(T, typeof(zero(T))) - return CUDA.zeros(U, LinearAlgebra.diagm_size(size, kv...)...) -end - -function LinearAlgebra.diagm_size(size::Nothing, kv::Pair{<:Integer,<:CuVector}...) - mnmax = mapreduce(x -> length(x.second) + abs(Int(x.first)), max, kv; init=0) - return mnmax, mnmax -end -function LinearAlgebra.diagm_size(size::Tuple{Int,Int}, kv::Pair{<:Integer,<:CuVector}...) - mmax = mapreduce(x -> length(x.second) - min(0,Int(x.first)), max, kv; init=0) - nmax = mapreduce(x -> length(x.second) + max(0,Int(x.first)), max, kv; init=0) - m, n = size - (m ≥ mmax && n ≥ nmax) || throw(DimensionMismatch(lazy"invalid size=$size")) - return m, n -end - # symmetric mul! op_wrappers = ((identity, T -> 'N', identity), From 73589b22e0fd12f35007e832cfb4f0c06d52ec6b Mon Sep 17 00:00:00 2001 From: Katharine Hyatt Date: Mon, 24 Nov 2025 10:12:34 +0100 Subject: [PATCH 2/2] Remove sources from Project.toml --- Project.toml | 3 --- 1 file changed, 3 deletions(-) diff --git a/Project.toml b/Project.toml index afb0b485c2..07e437dbb2 100644 --- a/Project.toml +++ b/Project.toml @@ -96,6 +96,3 @@ ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" SparseMatricesCSR = "a0a7dd2c-ebf4-11e9-1f05-cf50bc540ca1" SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b" - -[sources] -GPUArrays = {url="https://github.com/JuliaGPU/GPUArrays.jl", rev="master"}