@@ -2,10 +2,12 @@ module QuantumToolboxCUDAExt
22
33using QuantumToolbox
44using QuantumToolbox: makeVal, getVal
5- import CUDA: cu, CuArray
6- import CUDA. CUSPARSE: CuSparseVector, CuSparseMatrixCSC, CuSparseMatrixCSR
5+ import CUDA: cu, CuArray, allowscalar
6+ import CUDA. CUSPARSE: CuSparseVector, CuSparseMatrixCSC, CuSparseMatrixCSR, AbstractCuSparseArray
77import SparseArrays: SparseVector, SparseMatrixCSC
88
9+ allowscalar (false )
10+
911@doc raw """
1012 CuArray(A::QuantumObject)
1113
@@ -99,10 +101,9 @@ _change_eltype(::Type{T}, ::Val{32}) where {T<:AbstractFloat} = Float32
99101_change_eltype (:: Type{Complex{T}} , :: Val{64} ) where {T<: Union{Int,AbstractFloat} } = ComplexF64
100102_change_eltype (:: Type{Complex{T}} , :: Val{32} ) where {T<: Union{Int,AbstractFloat} } = ComplexF32
101103
102- sparse_to_dense (:: Type{T} , A:: CuArray{T} ) where {T<: Number } = A
103- sparse_to_dense (:: Type{T1} , A:: CuArray{T2} ) where {T1<: Number ,T2<: Number } = CuArray {T1} (A)
104- sparse_to_dense (:: Type{T} , A:: CuSparseVector ) where {T<: Number } = CuArray {T} (A)
105- sparse_to_dense (:: Type{T} , A:: CuSparseMatrixCSC ) where {T<: Number } = CuArray {T} (A)
106- sparse_to_dense (:: Type{T} , A:: CuSparseMatrixCSR ) where {T<: Number } = CuArray {T} (A)
104+ QuantumToolbox. sparse_to_dense (A:: MT ) where {MT<: AbstractCuSparseArray } = CuArray (A)
105+
106+ QuantumToolbox. sparse_to_dense (:: Type{T1} , A:: CuArray{T2} ) where {T1<: Number ,T2<: Number } = CuArray {T1} (A)
107+ QuantumToolbox. sparse_to_dense (:: Type{T} , A:: AbstractCuSparseArray ) where {T<: Number } = CuArray {T} (A)
107108
108109end
0 commit comments