# Julia 1.9.0-DEV.239 with CUDA CuArray

**URL:** <https://discourse.julialang.org/t/julia-1-9-0-dev-239-with-cuda-cuarray/78350>\
**Category:** GPU\
**Created:** [March 23, 2022, 7:21pm UTC](https://discourse.julialang.org/t/julia-1-9-0-dev-239-with-cuda-cuarray/78350 "2022-03-23T19:21:28Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![sjinwsu](https://avatars.discourse-cdn.com/v4/letter/s/b782af/32.png) [@sjinwsu](https://discourse.julialang.org/u/sjinwsu)\
**Post date:** [March 23, 2022, 7:21pm UTC](https://discourse.julialang.org/t/julia-1-9-0-dev-239-with-cuda-cuarray/78350/1 "2022-03-23T19:21:28Z")

</div>

Hello, I would like to ask if the following error regarding CuArray is Julia version specific. I was able to run the following basic CuArray test with Julia 1.8.0-Dev.1370, but when I tried with the latest release of Julia 1.9.0-DEV.239, it gave the following error. Can anyone help look into the problem and provide a solution to get it around? Thanks!

[jin6@node0026 Julia-03232022]$ ./julia

**\_**

**\_** \_ **\_** **(\_)**  **\_** | Documentation: [https://docs.julialang.org](https://docs.julialang.org)

**(\_)** | **(\_)** **(\_)** |

\_ \_ _| |_ \_\_ \_ | Type “?” for help, “]?” for Pkg help.

| | | | | | |/ \_` | |

| | |_| | | | (_| | | Version 1.9.0-DEV.239 (2022-03-23)

_/ |\ __‘_|_|_|\__ ’\_| | Commit a5fe945b4f (0 days old master)

|\_\_/ |

**julia\>** VERSION

v"1.9.0-DEV.239"

**julia\>** import Pkg; Pkg.add(“CUDA”)

**Updating** registry at `~/.julia/registries/General`

**Updating** git-repo `https://github.com/JuliaRegistries/General.git`

**Resolving** package versions…

**No Changes** to `~/.julia/environments/v1.9/Project.toml`

**No Changes** to `~/.julia/environments/v1.9/Manifest.toml`

**Precompiling** project…

46 dependencies successfully precompiled in 44 seconds

**julia\>** using CUDA

**julia\>** CUDA.versioninfo()

CUDA toolkit 11.6, artifact installation

NVIDIA driver 470.42.1, for CUDA 11.4

CUDA driver 11.4

Libraries:

- CUBLAS: 11.8.1

- CURAND: 10.2.9

- CUFFT: 10.7.0

- CUSOLVER: 11.3.2

- CUSPARSE: 11.7.1

- CUPTI: 16.0.0

- NVML: 11.0.0+470.42.1

- CUDNN: 8.30.2 (for CUDA 11.5.0)

- CUTENSOR: 1.4.0 (for CUDA 11.5.0)

Toolchain:

- Julia: 1.9.0-DEV.239

- LLVM: 13.0.1

- PTX ISA support: 3.2, 4.0, 4.1, 4.2, 4.3, 5.0, 6.0, 6.1, 6.3, 6.4, 6.5, 7.0

- Device capability support: sm\_35, sm\_37, sm\_50, sm\_52, sm\_53, sm\_60, sm\_61, sm\_62, sm\_70, sm\_72, sm\_75, sm\_80

1 device:

0: Tesla V100-PCIE-16GB (sm\_70, 15.756 GiB / 15.782 GiB available)

**julia\>** [CUDA.capability(dev) for dev in CUDA.devices()]

1-element Vector{VersionNumber}:

v"7.0.0"

**julia\>** a = CuArray([1,2,3,4])

4-element CuArray{Int64, 1, CUDA.Mem.DeviceBuffer}:

1

2

3

4

**julia\>** a .+= 1

**ERROR:** MethodError: no method matching return\_types(::GPUArrays.var"#broadcast\_kernel#17", ::Type{Tuple{CUDA.CuKernelContext, CuDeviceVector{Int64, 1}, Base.Broadcast.Broadcasted{CUDA.CuArrayStyle{1}, Tuple{Base.OneTo{Int64}}, typeof(+), Tuple{Base.Broadcast.Extruded{CuDeviceVector{Int64, 1}, Tuple{Bool}, Tuple{Int64}}, Int64}}, Int64}}, ::GPUCompiler.GPUInterpreter)

Closest candidates are:

return\_types(::Any, ::Any; world, interp) at reflection.jl:1294

return\_types(::Any) at reflection.jl:1294

Stacktrace:

[1] **check\_method(** job::GPUCompiler.CompilerJob **)**

@ GPUCompiler ~/.julia/packages/GPUCompiler/I9fZc/src/validation.jl:19

[2] **macro expansion**

@ ~/.julia/packages/TimerOutputs/nDhDw/src/TimerOutput.jl:252 [inlined]

[3] **macro expansion**

@ ~/.julia/packages/GPUCompiler/I9fZc/src/driver.jl:89 [inlined]

[4] **emit\_julia(** job::GPUCompiler.CompilerJob **)**

@ GPUCompiler ~/.julia/packages/GPUCompiler/I9fZc/src/utils.jl:64

[5] **cufunction\_compile(** job::GPUCompiler.CompilerJob **)**

@ CUDA ~/.julia/packages/CUDA/5jdFl/src/compiler/execution.jl:324

[6] **cached\_compilation(** cache::Dict{UInt64, Any}, job::GPUCompiler.CompilerJob, compiler::typeof(CUDA.cufunction\_compile), linker::typeof(CUDA.cufunction\_link) **)**

@ GPUCompiler ~/.julia/packages/GPUCompiler/I9fZc/src/cache.jl:90

[7] **cufunction(** f::GPUArrays.var"#broadcast\_kernel#17", tt::Type{Tuple{CUDA.CuKernelContext, CuDeviceVector{Int64, 1}, Base.Broadcast.Broadcasted{CUDA.CuArrayStyle{1}, Tuple{Base.OneTo{Int64}}, typeof(+), Tuple{Base.Broadcast.Extruded{CuDeviceVector{Int64, 1}, Tuple{Bool}, Tuple{Int64}}, Int64}}, Int64}}; name::Nothing, kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}} **)**

@ CUDA ~/.julia/packages/CUDA/5jdFl/src/compiler/execution.jl:297

[8] **cufunction**

@ ~/.julia/packages/CUDA/5jdFl/src/compiler/execution.jl:291 [inlined]

[9] **macro expansion**

@ ~/.julia/packages/CUDA/5jdFl/src/compiler/execution.jl:102 [inlined]

[10] **#launch\_heuristic#282**

@ ~/.julia/packages/CUDA/5jdFl/src/gpuarrays.jl:17 [inlined]

[11] **\_copyto!**

@ ~/.julia/packages/GPUArrays/VNhDf/src/host/broadcast.jl:73 [inlined]

[12] **materialize!**

@ ~/.julia/packages/GPUArrays/VNhDf/src/host/broadcast.jl:51 [inlined]

[13] **materialize!(** dest::CuArray{Int64, 1, CUDA.Mem.DeviceBuffer}, bc::Base.Broadcast.Broadcasted{CUDA.CuArrayStyle{1}, Nothing, typeof(+), Tuple{CuArray{Int64, 1, CUDA.Mem.DeviceBuffer}, Int64}} **)**

@ Base.Broadcast ./broadcast.jl:868

[14] top-level scope

@ REPL[7]:1

[15] top-level scope

@ ~/.julia/packages/CUDA/5jdFl/src/initialization.jl:52

---

<div class="post-metadata">

**Author:** ![maleadt](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/maleadt/32/10097_2.png) [@maleadt](https://discourse.julialang.org/u/maleadt)\
**Post date:** [March 24, 2022, 12:36pm UTC](https://discourse.julialang.org/t/julia-1-9-0-dev-239-with-cuda-cuarray/78350/2 "2022-03-24T12:36:44Z")

</div>

Unreleased versions of Julia are not supported. This specific issue is fixed on GPUCompiler#master, but there may be other problems.

---

<div class="post-metadata">

**Author:** ![sjinwsu](https://avatars.discourse-cdn.com/v4/letter/s/b782af/32.png) [@sjinwsu](https://discourse.julialang.org/u/sjinwsu)\
**Post date:** [March 24, 2022, 1:48pm UTC](https://discourse.julialang.org/t/julia-1-9-0-dev-239-with-cuda-cuarray/78350/3 "2022-03-24T13:48:15Z")

</div>

Thanks, Tim. May I ask what’s the latest version of Julia that support CUDA CuArray then?

---

<div class="post-metadata">

**Author:** ![carstenbauer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/carstenbauer/32/4981_2.png) [@carstenbauer](https://discourse.julialang.org/u/carstenbauer)\
**Post date:** [March 24, 2022, 3:24pm UTC](https://discourse.julialang.org/t/julia-1-9-0-dev-239-with-cuda-cuarray/78350/4 "2022-03-24T15:24:37Z")

</div>

Officially, I’d guess it’s 1.7 (since 1.8 is still in beta).

---

<div class="post-metadata">

**Author:** ![maleadt](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/maleadt/32/10097_2.png) [@maleadt](https://discourse.julialang.org/u/maleadt)\
**Post date:** [March 24, 2022, 3:54pm UTC](https://discourse.julialang.org/t/julia-1-9-0-dev-239-with-cuda-cuarray/78350/5 "2022-03-24T15:54:31Z")

</div>

1.8-beta1 has bugs that break CUDA.jl; beta2 should work once it’s released. Officially, 1.7 indeed.

---

<div class="post-metadata">

**Author:** ![sjinwsu](https://avatars.discourse-cdn.com/v4/letter/s/b782af/32.png) [@sjinwsu](https://discourse.julialang.org/u/sjinwsu)\
**Post date:** [March 25, 2022, 11:58am UTC](https://discourse.julialang.org/t/julia-1-9-0-dev-239-with-cuda-cuarray/78350/6 "2022-03-25T11:58:04Z")

</div>

Thank you both. I git checkout v1.7.2 again, everything seems to work except @atomic macro. Is it a bug?

---

<div class="post-metadata">

**Author:** ![maleadt](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/maleadt/32/10097_2.png) [@maleadt](https://discourse.julialang.org/u/maleadt)\
**Post date:** [March 25, 2022, 12:01pm UTC](https://discourse.julialang.org/t/julia-1-9-0-dev-239-with-cuda-cuarray/78350/7 "2022-03-25T12:01:14Z")

</div>

What do you mean by ‘except’? Does it throws an error? Calculates anything wrong? etc. The `@atomic` macro is tested by CUDA.jl’s CI so I doubt it just broke.

---

<div class="post-metadata">

**Author:** ![jling](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jling/32/212909_2.png) [@jling](https://discourse.julialang.org/u/jling)\
**Post date:** [March 25, 2022, 12:06pm UTC](https://discourse.julialang.org/t/julia-1-9-0-dev-239-with-cuda-cuarray/78350/8 "2022-03-25T12:06:30Z")

</div>

> [@sjinwsu](#):
>
> I git checkout v1.7.2 again

can you use official binary instead of compiling it yourself?

---

<div class="post-metadata">

**Author:** ![sjinwsu](https://avatars.discourse-cdn.com/v4/letter/s/b782af/32.png) [@sjinwsu](https://discourse.julialang.org/u/sjinwsu)\
**Post date:** [March 25, 2022, 12:53pm UTC](https://discourse.julialang.org/t/julia-1-9-0-dev-239-with-cuda-cuarray/78350/9 "2022-03-25T12:53:19Z")

</div>

I got errors as shown in the following picture:

 ![Screen Shot 2022-03-25 at 8.52.00 AM](https://global.discourse-cdn.com/julialang/original/3X/3/1/3171eefb7ecb46dc40d62b2548814bf96b487c64.png)

---

<div class="post-metadata">

**Author:** ![sjinwsu](https://avatars.discourse-cdn.com/v4/letter/s/b782af/32.png) [@sjinwsu](https://discourse.julialang.org/u/sjinwsu)\
**Post date:** [March 25, 2022, 1:00pm UTC](https://discourse.julialang.org/t/julia-1-9-0-dev-239-with-cuda-cuarray/78350/10 "2022-03-25T13:00:49Z")

</div>

Can you please inform me how to get the official binary?  
I was following [https://github.com/JuliaLang/julia/tree/v1.7.2](https://github.com/JuliaLang/julia/tree/v1.7.2) to get source from GitHub and build it.  
Thanks!

---

<div class="post-metadata">

**Author:** ![jling](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jling/32/212909_2.png) [@jling](https://discourse.julialang.org/u/jling)\
**Post date:** [March 25, 2022, 1:15pm UTC](https://discourse.julialang.org/t/julia-1-9-0-dev-239-with-cuda-cuarray/78350/11 "2022-03-25T13:15:00Z")

</div>

[https://julialang.org/downloads/](https://julialang.org/downloads/)

---

<div class="post-metadata">

**Author:** ![maleadt](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/maleadt/32/10097_2.png) [@maleadt](https://discourse.julialang.org/u/maleadt)\
**Post date:** [March 28, 2022, 7:53am UTC](https://discourse.julialang.org/t/julia-1-9-0-dev-239-with-cuda-cuarray/78350/12 "2022-03-28T07:53:10Z")

</div>

You’re using `@atomic` from Base, not from CUDA.jl. Write `CUDA.@atomic`.

---

<div class="post-metadata">

**Author:** ![sjinwsu](https://avatars.discourse-cdn.com/v4/letter/s/b782af/32.png) [@sjinwsu](https://discourse.julialang.org/u/sjinwsu)\
**Post date:** [March 28, 2022, 2:37pm UTC](https://discourse.julialang.org/t/julia-1-9-0-dev-239-with-cuda-cuarray/78350/13 "2022-03-28T14:37:09Z")

</div>

Thanks, adding CUDA. solves the problem!
