# Sm90 (H100) support for cuda.jl

**URL:** <https://discourse.julialang.org/t/sm90-h100-support-for-cuda-jl/96809>\
**Category:** GPU\
**Created:** [March 29, 2023, 9:58pm UTC](https://discourse.julialang.org/t/sm90-h100-support-for-cuda-jl/96809 "2023-03-29T21:58:41Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![smartalecH](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/smartalech/32/32379_2.png) [@smartalecH](https://discourse.julialang.org/u/smartalecH)\
**Post date:** [March 29, 2023, 9:58pm UTC](https://discourse.julialang.org/t/sm90-h100-support-for-cuda-jl/96809/1 "2023-03-29T21:58:41Z")

</div>

Does CUDA.jl not yet support Hopper gpus (sm90)?

I get the following error when trying to execute any kernels:

```julia
ERROR: LoadError: CUDA error: device kernel image is invalid (code 300, ERROR_INVALID_SOURCE)

```

Here’s my env:

```julia
julia> CUDA.versioninfo()
CUDA runtime 12.0, local installation
CUDA driver 12.1
NVIDIA driver 525.85.12, originally for CUDA 12.0

Libraries: 
- CUBLAS: 12.0.0
- CURAND: 10.3.1
- CUFFT: 11.0.0
- CUSOLVER: 11.4.2
- CUSPARSE: 12.0.0
- CUPTI: 18.0.0
- NVML: 12.0.0+525.85.12

Toolchain:
- Julia: 1.8.5
- 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, 7.1, 7.2
- Device capability support: sm_37, sm_50, sm_52, sm_53, sm_60, sm_61, sm_62, sm_70, sm_72, sm_75, sm_80, sm_86

Environment:
- JULIA_CUDA_MEMORY_POOL: none

8 devices:
  0: NVIDIA H100 (sm_90, 95.076 GiB / 95.577 GiB available)
  1: NVIDIA H100 (sm_90, 95.076 GiB / 95.577 GiB available)
  2: NVIDIA H100 (sm_90, 95.076 GiB / 95.577 GiB available)
  3: NVIDIA H100 (sm_90, 95.076 GiB / 95.577 GiB available)
  4: NVIDIA H100 (sm_90, 95.076 GiB / 95.577 GiB available)
  5: NVIDIA H100 (sm_90, 95.076 GiB / 95.577 GiB available)
  6: NVIDIA H100 (sm_90, 95.076 GiB / 95.577 GiB available)
  7: NVIDIA H100 (sm_90, 95.076 GiB / 95.577 GiB available)

```

I can see that `sm90` is not listed in `Device capability support`… what needs to be done to support it?

---

<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 30, 2023, 5:02am UTC](https://discourse.julialang.org/t/sm90-h100-support-for-cuda-jl/96809/2 "2023-03-30T05:02:23Z")

</div>

First thing I would do is try everything on Julia 1.9 (which comes with a newer LLVM) and with the latest CUDA.jl.

---

<div class="post-metadata">

**Author:** ![smartalecH](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/smartalech/32/32379_2.png) [@smartalecH](https://discourse.julialang.org/u/smartalecH)\
**Post date:** [March 30, 2023, 5:33pm UTC](https://discourse.julialang.org/t/sm90-h100-support-for-cuda-jl/96809/3 "2023-03-30T17:33:32Z")

</div>

Thanks @carstenbauer. Unfortunately, even with Julia 1.9 and using `CUDA.jl` from it’s `main` branch on Github, I still have the same issue (no support for `sm_90`).

---

<div class="post-metadata">

**Author:** ![smartalecH](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/smartalech/32/32379_2.png) [@smartalecH](https://discourse.julialang.org/u/smartalecH)\
**Post date:** [March 30, 2023, 5:43pm UTC](https://discourse.julialang.org/t/sm90-h100-support-for-cuda-jl/96809/4 "2023-03-30T17:43:55Z")

</div>

Hmm it looks like it requires LLVM v16 (the most recent julia 1.9 binaries ship with 14):

> <https://github.com/JuliaGPU/CUDA.jl/blob/aca936bc546ff07b851e0d3b803e96c7da46a585/src/compatibility.jl#L141-L143>

I suppose I could build Julia using a newer version of LLVM (and apply the patches):

> <https://github.com/JuliaLang/julia/blob/ceafd6cad9a66e290aece75a62ba7733e03ba58d/doc/src/devdocs/build/build.md?plain=1#L245>

Before I do so, are there any other alternative options out there?
