From c11ac2af6a2aa0be2671bf19c9b6095e52e4c126 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Wed, 4 Feb 2026 17:24:22 -0500 Subject: [PATCH 1/6] Support Julia 1.13 --- .buildkite/pipeline.yml | 5 +++-- .github/workflows/ci.yml | 4 +++- test/test.jl | 6 +++++- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 43999a1df..40e5faba4 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -5,6 +5,8 @@ steps: version: - "1.10" - "1.11" + - "1.12" + - "1.13" plugins: - JuliaCI/julia#v1: version: "{{matrix.version}}" @@ -14,8 +16,7 @@ steps: julia -e 'println("--- :julia: Instantiating project") using Pkg Pkg.develop(; path=pwd()) - Pkg.develop(; name="CUDA")' || exit 3 - + Pkg.add(url="https://github.com/eschnett/CUDA.jl", rev=eschnett/julia-1.13)' || exit 3 julia -e 'println("+++ :julia: Running tests") using Pkg Pkg.test("CUDA"; coverage=true, test_args=["base/kernelabstractions"])' diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f80d0651b..c7df8a00f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,7 +27,9 @@ jobs: - '1.8' - '1.9' - '1.10' - - '~1.11.0-0' + - '1.11' + - '1.12' + - '1.13-nightly' os: - ubuntu-latest - macOS-latest diff --git a/test/test.jl b/test/test.jl index 8e3bd7136..d0d3e1d07 100644 --- a/test/test.jl +++ b/test/test.jl @@ -206,7 +206,11 @@ function unittest_testsuite(Backend, backend_str, backend_mod, BackendArrayT; sk @test occursin("!alias.scope", IR) @test occursin("!noalias", IR) elseif backend_str == "CUDA" - @test occursin("@llvm.nvvm.ldg", IR) + if Base.libllvm_version >= v"20" + @test occursin("addrspace(1)", IR) + else + @test occursin("@llvm.nvvm.ldg", IR) + end elseif backend_str == "ROCM" @test occursin("addrspace(4)", IR) else From b01af40836c57a896dc5b35b2caf1a29e461e99a Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Wed, 4 Feb 2026 17:55:20 -0500 Subject: [PATCH 2/6] CI: Correct CUDA branch --- .buildkite/pipeline.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 40e5faba4..015aebeb0 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -16,7 +16,7 @@ steps: julia -e 'println("--- :julia: Instantiating project") using Pkg Pkg.develop(; path=pwd()) - Pkg.add(url="https://github.com/eschnett/CUDA.jl", rev=eschnett/julia-1.13)' || exit 3 + Pkg.add(url="https://github.com/eschnett/CUDA.jl", rev="eschnett/julia-1.13")' || exit 3 julia -e 'println("+++ :julia: Running tests") using Pkg Pkg.test("CUDA"; coverage=true, test_args=["base/kernelabstractions"])' From 2767d9539447bbda6b1f817114fffd56992a12d5 Mon Sep 17 00:00:00 2001 From: Christian Guinard <28689358+christiangnrd@users.noreply.github.com> Date: Wed, 4 Feb 2026 19:23:35 -0400 Subject: [PATCH 3/6] Awful fix --- test/compiler.jl | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/test/compiler.jl b/test/compiler.jl index 85312262e..fac078ab8 100644 --- a/test/compiler.jl +++ b/test/compiler.jl @@ -24,11 +24,19 @@ end A[1] = Base.Checked.checked_add(a, b) end +@static if VERSION > v"1.12" + const MethodOrCodeInstance = Core.CodeInstance + _getname(mi) = mi.def.def.name +else + const MethodOrCodeInstance = Core.MethodInstance + _getname(mi) = mi.def.name +end + function check_for_overdub(stmt) if stmt isa Expr if stmt.head == :invoke - mi = first(stmt.args)::Core.MethodInstance - if mi.def.name === :overdub + mi = first(stmt.args)::MethodOrCodeInstance + if _getname(mi) === :overdub @show stmt return true end From b09db89f0d6b680dbb340dd7012a65d91ad2c664 Mon Sep 17 00:00:00 2001 From: Christian Guinard <28689358+christiangnrd@users.noreply.github.com> Date: Wed, 4 Feb 2026 19:23:56 -0400 Subject: [PATCH 4/6] Typo (1.13) --- test/runtests.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/runtests.jl b/test/runtests.jl index bf9b445a5..8c1e74639 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -36,7 +36,7 @@ if Base.JLOptions().check_bounds == 0 || Base.JLOptions().check_bounds == 1 end if Base.JLOptions().check_bounds == 0 || Base.JLOptions().check_bounds == 2 - @kernel inbounds = true function my_bounded_kernel(a) + @kernel inbounds = true function my_inbounds_kernel(a) idx = @index(Global, Linear) a[idx] = 0 end From 33ab7ec0a40a983124dae6e816d06276b8efc927 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Wed, 4 Feb 2026 18:56:09 -0500 Subject: [PATCH 5/6] CI: Disable testing Enzyme on Julia 1.13 --- test/runtests.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/runtests.jl b/test/runtests.jl index 8c1e74639..7b4cae6a0 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -73,7 +73,7 @@ struct NewBackend <: KernelAbstractions.GPU end end include("extensions/enzyme.jl") -@static if VERSION >= v"1.7.0" +@static if VERSION >= v"1.7.0" && VERSION < v"1.13-" @testset "Enzyme" begin enzyme_testsuite(CPU, Array) end From 24c0ddd936a897d63cb45ca071d4763a7d3fc132 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Thu, 5 Feb 2026 08:00:53 -0500 Subject: [PATCH 6/6] Disable Julia 1.12 Enzyme tests on Windows --- test/runtests.jl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/runtests.jl b/test/runtests.jl index 7b4cae6a0..f395b70dc 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -73,7 +73,8 @@ struct NewBackend <: KernelAbstractions.GPU end end include("extensions/enzyme.jl") -@static if VERSION >= v"1.7.0" && VERSION < v"1.13-" +# The Enzyme tests fail with Julia 1.13. They also fail with Julia 1.12 on Windows. +@static if VERSION >= v"1.7.0" && VERSION < v"1.13-" && !(Sys.iswindows() && VERSION >= v"1.12-") @testset "Enzyme" begin enzyme_testsuite(CPU, Array) end