Skip to content

Commit 949434e

Browse files
authored
Restore the descriptors in CUSPARSE (#2746)
1 parent af58f61 commit 949434e

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

lib/cusparse/helpers.jl

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,14 @@ end
3636
mutable struct CuDenseVectorDescriptor
3737
handle::cusparseDnVecDescr_t
3838

39+
function CuDenseVectorDescriptor(T::DataType, n::Integer)
40+
desc_ref = Ref{cusparseDnVecDescr_t}()
41+
cusparseCreateDnVec(desc_ref, n, CU_NULL, T)
42+
obj = new(desc_ref[])
43+
finalizer(cusparseDestroyDnVec, obj)
44+
return obj
45+
end
46+
3947
function CuDenseVectorDescriptor(x::DenseCuVector)
4048
desc_ref = Ref{cusparseDnVecDescr_t}()
4149
cusparseCreateDnVec(desc_ref, length(x), x, eltype(x))
@@ -71,6 +79,18 @@ Base.unsafe_convert(::Type{cusparseSpVecDescr_t}, desc::CuSparseVectorDescriptor
7179
mutable struct CuDenseMatrixDescriptor
7280
handle::cusparseDnMatDescr_t
7381

82+
function CuDenseMatrixDescriptor(T::DataType, m::Integer, n::Integer; transposed::Bool=false)
83+
desc_ref = Ref{cusparseDnMatDescr_t}()
84+
if transposed
85+
cusparseCreateDnMat(desc_ref, n, m, m, CU_NULL, T, 'R')
86+
else
87+
cusparseCreateDnMat(desc_ref, m, n, m, CU_NULL, T, 'C')
88+
end
89+
obj = new(desc_ref[])
90+
finalizer(cusparseDestroyDnMat, obj)
91+
return obj
92+
end
93+
7494
function CuDenseMatrixDescriptor(A::DenseCuMatrix; transposed::Bool=false)
7595
desc_ref = Ref{cusparseDnMatDescr_t}()
7696
if transposed

0 commit comments

Comments
 (0)