JuliaGPU / JuliaGPU/GPUArrays.jl
Multi-axis concatenation errors on 1.12
- Dominant language
- Julia
- Stars
- 450
- Forks
- 104
- Avg merge
- 1d 4h
- Merged PRs (30d)
- 10
Description
Trying to concatenate multiple arrays using square bracket syntax errors on 1.12. After descending with Cthulhu.jl and comparing with Julia master, I'm seeing it may be related to https://github.com/JuliaLang/julia/pull/39729
## MWE
Julia v1.11.7:
```julia
julia> v = CUDA.zeros(1); [v v; v v]
2×2 CuArray{Float32, 2, CUDA.DeviceMemory}:
0.0 0.0
0.0 0.0
```
Julia v1.12.3:
```julia
julia> v = CUDA.zeros(1); [v v; v v]
ERROR: Scalar indexing is disallowed.
Invocation of getindex resulted in scalar indexing of a GPU array.
This is typically caused by calling an iterating implementation of a method.
Such implementations *do not* execute on the GPU, but very slowly on the CPU,
and therefore should be avoided.
If you want to allow scalar iteration, use `allowscalar` or `@allowscalar`
to enable scalar iteration globally or for the operations in question.
Stacktrace:
[1] error(s::String)
@ Base ./error.jl:44
[2] errorscalar(op::String)
@ GPUArraysCore ~/.julia/packages/GPUArraysCore/aNaXo/src/GPUArraysCore.jl:151
[3] _assertscalar(op::String, behavior::GPUArraysCore.ScalarIndexing)
@ GPUArraysCore ~/.julia/packages/GPUArraysCore/aNaXo/src/GPUArraysCore.jl:124
[4] assertscalar(op::String)
@ GPUArraysCore ~/.julia/packages/GPUArraysCore/aNaXo/src/GPUArraysCore.jl:112
[5] getindex
@ ~/.julia/packages/GPUArrays/0F4Dn/src/host/indexing.jl:50 [inlined]
[6] iterate
@ ./abstractarray.jl:1235 [inlined]
[7] iterate
@ ./abstractarray.jl:1233 [inlined]
[8] hvncat_fill!(A::CuArray{Float32, 2, CUDA.DeviceMemory}, scratch1::Vector{Int64}, scratch2::Vector{Int64}, d1::Int64, d2::Int64, as::NTuple{4, CuArray{Float32, 1, CUDA.DeviceMemory}})
@ Base ./abstractarray.jl:2723
[9] _typed_hvncat_dims(::Type{Float32}, dims::Tuple{Int64, Int64}, row_first::Bool, as::NTuple{4, CuArray{Float32, 1, CUDA.DeviceMemory}})
@ Base ./abstractarray.jl:2613
[10] _typed_hvncat(::Type, ::Tuple{Int64, Int64}, ::Bool, ::CuArray{Float32, 1, CUDA.DeviceMemory}, ::Vararg{CuArray{Float32, 1, CUDA.DeviceMemory}})
@ Base ./abstractarray.jl:2520
[11] typed_hvncat(::Type, ::Tuple{Int64, Int64}, ::Bool, ::CuArray{Float32, 1, CUDA.DeviceMemory}, ::Vararg{CuArray{Float32, 1, CUDA.DeviceMemory}})
@ Base ./abstractarray.jl:2351
[12] typed_hvcat(::Type{Float32}, ::Tuple{Int64, Int64}, ::CuArray{Float32, 1, CUDA.DeviceMemory}, ::Vararg{CuArray{Float32, 1, CUDA.DeviceMemory}})
@ Base ./abstractarray.jl:2193
[13] hvcat_internal(::Tuple{Int64, Int64}, ::CuArray{Float32, 1, CUDA.DeviceMemory}, ::CuArray{Float32, 1, CUDA.DeviceMemory}, ::Vararg{CuArray{Float32, 1, CUDA.DeviceMemory}})
@ SparseArrays ~/.julia/juliaup/julia-1.12.3+0.x64.linux.gnu/share/julia/stdlib/v1.12/SparseArrays/src/sparsevector.jl:1285
[14] hvcat(::Tuple{Int64, Int64}, ::CuArray{Float32, 1, CUDA.DeviceMemory}, ::CuArray{Float32, 1, CUDA.DeviceMemory}, ::Vararg{CuArray{Float32, 1, CUDA.DeviceMemory}})
@ SparseArrays ~/.julia/juliaup/julia-1.12.3+0.x64.linux.gnu/share/julia/stdlib/v1.12/SparseArrays/src/sparsevector.jl:1289
[15] top-level scope
@ REPL[3]:1
```
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.