Skip to content

Views with repeating indices lead to different results than Base.Array #89

@clintonTE

Description

@clintonTE

Describe the bug
Views don't play well with assignments, leading to silent errors.

To Reproduce
The Minimal Working Example (MWE) for this bug:

using Revise, CuArrays, Flux
function cusubmwe(N)
  v = ones(Float32, N)
  vgpu = v|> gpu

  indices = (i->(i-1)%N + 1).(1:N^2)
  subv = view(v, indices)
  subvgpu = view(vgpu, indices)

  subv .+= 1
  subvgpu .+= 1

  @info "indices: $indices"
  @info "cpu: $(v)"
  @info "gpu: $(vgpu)"

end

Output:

[ Info: indices: [1, 2, 3, 1, 2, 3, 1, 2, 3]
[ Info: cpu: Float32[4.0, 4.0, 4.0]
[ Info: gpu: Float32[2.0, 2.0, 2.0]

Expected behavior
The cpu version provides a baseline.

Build log

   Building WebIO ──→ `C:\Users\Clinton\.julia\packages\WebIO\2mZPb\deps\build.log`
   Building NNlib ──→ `C:\Users\Clinton\.julia\packages\NNlib\FAI3o\deps\build.log`
   Building Libtask → `C:\Users\Clinton\.julia\packages\Libtask\GQPaW\deps\build.log`
   Building CMake ──→ `C:\Users\Clinton\.julia\packages\CMake\ULbyn\deps\build.log`
   Building NLopt ──→ `C:\Users\Clinton\.julia\packages\NLopt\eqN9a\deps\build.log`

Environment details (please complete this section)
Details on Julia:

Commit b8e9a9ecc6 (2020-03-21 16:36 UTC)
Platform Info:
  OS: Windows (x86_64-w64-mingw32)
  CPU: Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-8.0.1 (ORCJIT, skylake)
Environment:
  JULIA_EDITOR = "C:\Users\Clinton\AppData\Local\atom\app-1.45.0\atom.exe"  -a
  JULIA_NUM_THREADS = 6

Julia packages:
CuArrays v2.0.1 #master (https://github.com/JuliaGPU/CuArrays.jl.git)
GPUArrays v3.1.0 #master (https://github.com/JuliaGPU/GPUArrays.jl.git)
CUDAnative v3.0.4
Flux v0.10.4 #master (https://github.com/FluxML/Flux.jl.git)

CUDA: toolkit and driver version
10.2 / 441.66

Additional context
This came up in the context of FluxML/Zygote.jl#600, but I am basing the mwe on an example from Michael Abbott from Slack (https://julialang.slack.com/archives/C6G240ENA/p1587070650391500).

I think this is the reason I was having difficulties with Zygote AD on views of CuArrays as mentioned in that issue, though I don't know for sure.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingcuda arrayStuff about CuArray.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions