You should look at the back trace of the error message:
julia> out = GPU_init(A_CPU,Vector_CPU, n, niter_GPU)
ERROR: Scalar indexing is disallowed.
...
Stacktrace:
...
[7] generic_matvecmul!(C::CuArray{ComplexF32, 1}, tA::Char, A::CuSparseMatrixCSR{ComplexF32}, B::CuArray{Float32, 1}, _add::LinearAlgebra.MulAddMul{true, true, Bool, Bool})
@ LinearAlgebra /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/LinearAlgebra/src/matmul.jl:759
[8] mul!
@ /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/LinearAlgebra/src/matmul.jl:81 [inlined]
[9] mul!
@ /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/LinearAlgebra/src/matmul.jl:275 [inlined]
[10] *(A::CuSparseMatrixCSR{ComplexF32}, x::CuArray{Float32, 1})
@ LinearAlgebra /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/LinearAlgebra/src/matmul.jl:51
[11] GPU_test(A_GPU::CuSparseMatrixCSR{ComplexF32}, Vector_GPU::CuArray{ComplexF32, 1}, niter::Int64)
@ Main ./REPL[5]:6
It’s clear here that this is triggered by *, because you’re doing sparse x dense multiplication with mismatched types, which falls back to the Base implementation. For sparse operations, we only use CUSPARSE (i.e. we don’t have a natively-implemented generic fallback), so you need to stick to what CUSPARSE supports.