Open
Description
This may be similar to #554
MWE:
using CUDA
n=(16,16,16)
P = CUDA.zeros(Float32,n...)
active = (1:16).<12
function update1!(P)
P.=P.+2
end
function update2!(P)
P[:]=P.+2
end
update1!(P); # Works
update2!(P); # Works
@views update1!(P); # Works
@views update2!(P); # Works
update1!(P[:,:,active]); # Works
update2!(P[:,:,active]); # Works
@views update1!(P[:,:,active]); # Works
@views update2!(P[:,:,active]); # Ambiguity
ERROR: MethodError: _unsafe_setindex!(::IndexCartesian, ::Base.ReshapedArray{…}, ::CuArray{…}, ::Base.Slice{…}) is ambiguous.
Candidates:
_unsafe_setindex!(::IndexStyle, A::Union{Base.LogicalIndex{T, <:GPUArraysCore.AbstractGPUArray}, Base.ReinterpretArray{T, N, <:Any, <:Union{SubArray{<:Any, <:Any, var"#s14"}, var"#s14"}} where var"#s14"<:GPUArraysCore.AbstractGPUArray, Base.ReshapedArray{T, N, <:Union{Base.ReinterpretArray{<:Any, <:Any, <:Any, <:Union{SubArray{<:Any, <:Any, var"#s15"}, var"#s15"}}, SubArray{<:Any, <:Any, var"#s15"}, var"#s15"}} where var"#s15"<:GPUArraysCore.AbstractGPUArray, SubArray{T, N, <:Union{Base.ReinterpretArray{<:Any, <:Any, <:Any, <:Union{SubArray{<:Any, <:Any, var"#s16"}, var"#s16"}}, Base.ReshapedArray{<:Any, <:Any, <:Union{Base.ReinterpretArray{<:Any, <:Any, <:Any, <:Union{SubArray{<:Any, <:Any, var"#s16"}, var"#s16"}}, SubArray{<:Any, <:Any, var"#s16"}, var"#s16"}}, var"#s16"}} where var"#s16"<:GPUArraysCore.AbstractGPUArray, LinearAlgebra.Adjoint{T, <:GPUArraysCore.AbstractGPUArray{T, N}}, LinearAlgebra.Diagonal{T, <:GPUArraysCore.AbstractGPUArray{T, N}}, LinearAlgebra.LowerTriangular{T, <:GPUArraysCore.AbstractGPUArray{T, N}}, LinearAlgebra.Symmetric{T, <:GPUArraysCore.AbstractGPUArray{T, N}}, LinearAlgebra.Transpose{T, <:GPUArraysCore.AbstractGPUArray{T, N}}, LinearAlgebra.Tridiagonal{T, <:GPUArraysCore.AbstractGPUArray{T, N}}, LinearAlgebra.UnitLowerTriangular{T, <:GPUArraysCore.AbstractGPUArray{T, N}}, LinearAlgebra.UnitUpperTriangular{T, <:GPUArraysCore.AbstractGPUArray{T, N}}, LinearAlgebra.UpperTriangular{T, <:GPUArraysCore.AbstractGPUArray{T, N}}, PermutedDimsArray{T, N, <:Any, <:Any, <:GPUArraysCore.AbstractGPUArray}} where {T, N}, x, Is::Vararg{Union{Real, AbstractArray}, N}) where N
@ GPUArrays ~/julia1/packages/GPUArrays/uiVyU/src/host/indexing.jl:167
_unsafe_setindex!(::IndexStyle, A::Base.ReshapedArray{<:Any, <:Any, <:Union{Base.LogicalIndex{T, <:GPUArraysCore.AbstractGPUArray}, Base.ReinterpretArray{T, N, <:Any, <:Union{SubArray{<:Any, <:Any, var"#s14"}, var"#s14"}} where var"#s14"<:GPUArraysCore.AbstractGPUArray, Base.ReshapedArray{T, N, <:Union{Base.ReinterpretArray{<:Any, <:Any, <:Any, <:Union{SubArray{<:Any, <:Any, var"#s15"}, var"#s15"}}, SubArray{<:Any, <:Any, var"#s15"}, var"#s15"}} where var"#s15"<:GPUArraysCore.AbstractGPUArray, SubArray{T, N, <:Union{Base.ReinterpretArray{<:Any, <:Any, <:Any, <:Union{SubArray{<:Any, <:Any, var"#s16"}, var"#s16"}}, Base.ReshapedArray{<:Any, <:Any, <:Union{Base.ReinterpretArray{<:Any, <:Any, <:Any, <:Union{SubArray{<:Any, <:Any, var"#s16"}, var"#s16"}}, SubArray{<:Any, <:Any, var"#s16"}, var"#s16"}}, var"#s16"}} where var"#s16"<:GPUArraysCore.AbstractGPUArray, LinearAlgebra.Adjoint{T, <:GPUArraysCore.AbstractGPUArray{T, N}}, LinearAlgebra.Diagonal{T, <:GPUArraysCore.AbstractGPUArray{T, N}}, LinearAlgebra.LowerTriangular{T, <:GPUArraysCore.AbstractGPUArray{T, N}}, LinearAlgebra.Symmetric{T, <:GPUArraysCore.AbstractGPUArray{T, N}}, LinearAlgebra.Transpose{T, <:GPUArraysCore.AbstractGPUArray{T, N}}, LinearAlgebra.Tridiagonal{T, <:GPUArraysCore.AbstractGPUArray{T, N}}, LinearAlgebra.UnitLowerTriangular{T, <:GPUArraysCore.AbstractGPUArray{T, N}}, LinearAlgebra.UnitUpperTriangular{T, <:GPUArraysCore.AbstractGPUArray{T, N}}, LinearAlgebra.UpperTriangular{T, <:GPUArraysCore.AbstractGPUArray{T, N}}, PermutedDimsArray{T, N, <:Any, <:Any, <:GPUArraysCore.AbstractGPUArray}} where {T, N}}, x, Is::Vararg{Union{Real, AbstractArray}, N}) where N
@ GPUArrays ~/julia1/packages/GPUArrays/uiVyU/src/host/indexing.jl:171
To resolve the ambiguity, try making one of the methods more specific, or adding a new method more specific than any of the existing applicable methods.
Stacktrace:
[1] _setindex!
@ ./multidimensional.jl:967 [inlined]
[2] setindex!
@ ./abstractarray.jl:1413 [inlined]
[3] update2!(P::SubArray{Float32, 3, CuArray{…}, Tuple{…}, false})
@ Main ./REPL[72]:2
[4] top-level scope
@ REPL[80]:1
Some type information was truncated. Use `show(err)` to see complete types.
Metadata
Metadata
Assignees
Labels
No labels