Skip to content

Pin Reactant, Oceananigans, GPUCompiler#799

Merged
giordano merged 6 commits into
mainfrom
mg/pin-reactant
Jun 24, 2026
Merged

Pin Reactant, Oceananigans, GPUCompiler#799
giordano merged 6 commits into
mainfrom
mg/pin-reactant

Conversation

@giordano

Copy link
Copy Markdown
Member

Reactant tests are hanging, as anticipated in #687 (comment).

@giordano giordano added testing 🧪 reactant ☣ towards a differentiable earth labels Jun 23, 2026
@codecov

codecov Bot commented Jun 23, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@dkytezab

Copy link
Copy Markdown
Collaborator

Looks like tests are hanging still.. I think last working version was 0.2.264? I'm hitting some LLVM vectorization issues on 0.2.266 atm, working on MWE

@giordano

Copy link
Copy Markdown
Member Author

Tests on latest commit on main (a97df65) ran fine with Reactant v0.2.266. But Oceananigans version changed (v0.110.2 vs v0.110.4). Uhm....

@dkytezab

Copy link
Copy Markdown
Collaborator

I blame this

Screenshot 2026-06-23 at 4 37 03 PM

@giordano

Copy link
Copy Markdown
Member Author

Ok, doing bisection on Oceananigans now: trying v0.110.3, if that still hangs we can blame that version

@dkytezab

Copy link
Copy Markdown
Collaborator

I think problem was introduced in v0.110.4, looking at the diff.

@giordano

Copy link
Copy Markdown
Member Author

For the record, this is the diff of the manifests, so we know all that changed:

--- Manifest-good.toml	2026-06-19 14:50:14
+++ Manifest-bad.toml	2026-06-23 22:56:56
@@ -2,7 +2,7 @@
 
 julia_version = "1.12.6"
 manifest_format = "2.0"
-project_hash = "760b4cbf97025e9215a9b0673bdfbc9fd2c5d9ff"
+project_hash = "cebdaf893a6205bc049929a93e3bdda1a17a4722"
 
 [[deps.AMDGPU]]
 deps = ["AbstractFFTs", "AcceleratedKernels", "Adapt", "Atomix", "BFloat16s", "CEnum", "ExprTools", "GPUArrays", "GPUCompiler", "GPUToolbox", "KernelAbstractions", "LLD_jll", "LLVM", "LLVM_jll", "Libdl", "LinearAlgebra", "Pkg", "Preferences", "PrettyTables", "Printf", "ROCmDeviceLibs_jll", "Random", "Random123", "RandomNumbers", "SparseArrays", "SpecialFunctions", "StaticArraysCore", "Statistics", "UnsafeAtomics"]
@@ -159,9 +159,9 @@
 version = "1.11.0"
 
 [[deps.BaseDirs]]
-git-tree-sha1 = "bca794632b8a9bbe159d56bf9e31c422671b35e0"
+git-tree-sha1 = "8c290a1b223deaeea9aea44b235d24546da8eb98"
 uuid = "18cc8868-cbac-4acf-b575-c8ff214dc66f"
-version = "1.3.2"
+version = "1.4.0"
 
 [[deps.BibInternal]]
 deps = ["TestItems"]
@@ -360,9 +360,9 @@
 
 [[deps.ClimaParams]]
 deps = ["Dates", "TOML"]
-git-tree-sha1 = "7196fbc2ea333b1966581103ba19b88d376314fb"
+git-tree-sha1 = "52b99aca6f862a739d4d5f41b9a9e4211c22e3d2"
 uuid = "5c42b081-d73a-476f-9059-fd94b934656c"
-version = "1.0.17"
+version = "1.0.18"
 
 [[deps.CloudMicrophysics]]
 deps = ["ClimaParams", "DocStringExtensions", "ForwardDiff", "InteractiveUtils", "LazyArtifacts", "LogExpFunctions", "RootSolvers", "SpecialFunctions", "StaticArrays", "Thermodynamics", "UnrolledUtilities"]
@@ -435,9 +435,9 @@
 
 [[deps.CommonDataModel]]
 deps = ["CFTime", "DataStructures", "Dates", "DiskArrays", "Preferences", "Printf", "Statistics"]
-git-tree-sha1 = "bf07704e843daabd2cb2bb1404571656f80bce16"
+git-tree-sha1 = "54d50f8a0a68ff4160564dfa09fc5de32465cfca"
 uuid = "1fbeeb36-5f17-413c-809b-666fb144f157"
-version = "0.4.3"
+version = "0.4.4"
 
 [[deps.CommonSubexpressions]]
 deps = ["MacroTools"]
@@ -619,9 +619,9 @@
 
 [[deps.Enzyme]]
 deps = ["CEnum", "EnzymeCore", "Enzyme_jll", "GPUCompiler", "InteractiveUtils", "LLVM", "Libdl", "LinearAlgebra", "ObjectFile", "PrecompileTools", "Preferences", "Printf", "Random", "SparseArrays"]
-git-tree-sha1 = "e0d8b2d79c6d83aa447face1323ba3d842991ddb"
+git-tree-sha1 = "ba6232aa103f20f387750a466321f77ae85ce044"
 uuid = "7da242da-08ed-463a-9acd-ee780be4f1d9"
-version = "0.13.163"
+version = "0.13.164"
 
     [deps.Enzyme.extensions]
     EnzymeBFloat16sExt = "BFloat16s"
@@ -652,9 +652,9 @@
 
 [[deps.Enzyme_jll]]
 deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"]
-git-tree-sha1 = "7ca6e6ac7e98eefdc7e4b62878232ed1e20f3180"
+git-tree-sha1 = "4c91dbf98aba4e1a4c317393d5573c3b2ccc9cd7"
 uuid = "7cc45869-7501-5eee-bdea-0790c847d4ef"
-version = "0.0.270+0"
+version = "0.0.273+0"
 
 [[deps.ExactPredicates]]
 deps = ["IntervalArithmetic", "Random", "StaticArrays"]
@@ -843,10 +843,10 @@
 version = "0.2.0"
 
 [[deps.GPUCompiler]]
-deps = ["ExprTools", "InteractiveUtils", "LLVM", "Libdl", "Logging", "PrecompileTools", "Preferences", "Scratch", "Serialization", "TOML", "Tracy", "UUIDs"]
-git-tree-sha1 = "6b6ce66ddab7cdb87d83b07098a626085d4b0d50"
+deps = ["ExprTools", "InteractiveUtils", "LLVM", "Libdl", "Logging", "PrecompileTools", "Preferences", "REPL", "Scratch", "Serialization", "TOML", "Tracy", "UUIDs"]
+git-tree-sha1 = "00a4f68b6142befb17ed899b44b18ff8f9959066"
 uuid = "61eb1bfa-7361-4325-ad38-22787b887f55"
-version = "1.22.1"
+version = "1.22.5"
 weakdeps = ["LLVMDowngrader_jll", "NVPTX_LLVM_Backend_jll"]
 
 [[deps.GPUToolbox]]
@@ -1522,9 +1522,10 @@
 version = "2025.11.4"
 
 [[deps.MuladdMacro]]
-git-tree-sha1 = "cac9cc5499c25554cba55cd3c30543cff5ca4fab"
+deps = ["PrecompileTools"]
+git-tree-sha1 = "21f3ab73a0bc592a809713fd97cfd3cb5669153e"
 uuid = "46d2c3a1-f734-5fdb-9937-b9b9aeba4221"
-version = "0.2.4"
+version = "0.2.5"
 
 [[deps.NCDatasets]]
 deps = ["CFTime", "CommonDataModel", "DataStructures", "Dates", "DiskArrays", "NetCDF_jll", "NetworkOptions", "Printf"]
@@ -1605,9 +1606,9 @@
 
 [[deps.Oceananigans]]
 deps = ["Adapt", "Crayons", "CubedSphere", "Dates", "Distances", "DocStringExtensions", "FFTW", "GPUArraysCore", "Glob", "InteractiveUtils", "JLD2", "KernelAbstractions", "Krylov", "LinearAlgebra", "Logging", "MPI", "MuladdMacro", "OffsetArrays", "OrderedCollections", "Pkg", "Printf", "ReactantCore", "Rotations", "SeawaterPolynomials", "SparseArrays", "StaticArrays", "Statistics", "StructArrays"]
-git-tree-sha1 = "15084a56213e6c3efdf878cfdabfb61e45cf20a1"
+git-tree-sha1 = "7e63c56617cb7b32e9f307614f6b2381803eb240"
 uuid = "9e8cae18-63c1-5223-a75c-80ca9d6e9a09"
-version = "0.110.2"
+version = "0.110.4"
 
     [deps.Oceananigans.extensions]
     OceananigansAMDGPUExt = ["AMDGPU", "AbstractFFTs"]
@@ -1615,6 +1616,7 @@
     OceananigansEnzymeExt = "Enzyme"
     OceananigansMakieExt = "Makie"
     OceananigansMetalExt = "Metal"
+    OceananigansNCCLExt = ["NCCL", "CUDA"]
     OceananigansNCDatasetsExt = "NCDatasets"
     OceananigansOneAPIExt = "oneAPI"
     OceananigansReactantExt = ["Reactant", "KernelAbstractions", "ConstructionBase", "AbstractFFTs"]
@@ -1629,6 +1631,7 @@
     GPUArrays = "0c68f7d7-f131-5f86-a1c3-88cf8149b2d7"
     Makie = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a"
     Metal = "dde4c033-4e86-420c-a63e-0dd931031962"
+    NCCL = "3fe64909-d7a1-4096-9b7d-7a0f12cf0f6b"
     NCDatasets = "85f8d34a-cbdd-5861-8df4-14fed0d494ab"
     Reactant = "3c362404-f566-11ee-1572-e11a4b42c853"
     Zarr = "0a941bbe-ad1d-11e8-39d9-ab76183a1d99"
@@ -1668,9 +1671,9 @@
 
 [[deps.OpenEXR_jll]]
 deps = ["Artifacts", "Imath_jll", "JLLWrappers", "Libdl", "Zlib_jll"]
-git-tree-sha1 = "4a33fd64a77949468187339d8b10c44a422082f1"
+git-tree-sha1 = "0d621a4beb5e48d195f907c3c5b0bea285d9ff9d"
 uuid = "18a262bb-aa17-5467-a713-aee519bc75cb"
-version = "3.4.12+0"
+version = "3.4.13+0"
 
 [[deps.OpenLibm_jll]]
 deps = ["Artifacts", "Libdl"]
@@ -2137,9 +2140,9 @@
 
 [[deps.SortingAlgorithms]]
 deps = ["DataStructures"]
-git-tree-sha1 = "64d974c2e6fdf07f8155b5b2ca2ffa9069b608d9"
+git-tree-sha1 = "13cd91cc9be159e3f4d95b857fa2aa383b53772a"
 uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c"
-version = "1.2.2"
+version = "1.2.3"
 
 [[deps.SparseArrays]]
 deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"]

Also GPUCompiler changed, that's another potential candidate.

@dkytezab

dkytezab commented Jun 24, 2026

Copy link
Copy Markdown
Collaborator
using Reactant, KernelAbstractions, CUDA   # CUDA must be loaded to raise KA kernels (even on CPU)

Reactant.set_default_backend("cpu")

@kernel function weno_weights_kernel!(out, @Const(c))
    i = @index(Global)
    @inbounds begin
        α1 = (2/3) / c[i] 
        α2 = (1/3) / c[i+1]  

        out[i] = α1 + α2   # bare sum of the two lanes
    end
end

function run_weno!(out, c)
    backend = KernelAbstractions.get_backend(out)
    weno_weights_kernel!(backend)(out, c; ndrange = length(out))
    return KernelAbstractions.synchronize(backend)
end

N   = 64
c   = Reactant.to_rarray(sin.((1:N+2) ./ 3.0))   # length N+2: stencil reaches c[i+2]
out = Reactant.to_rarray(zeros(N))

compiled! = Reactant.@compile raise=true run_weno!(out, c)   # errors during raise
failed to raise func: func.func private @"##call__Z24gpu_weno_weights_kernel_16CompilerMetadataI11DynamicSize12DynamicCheckv16CartesianIndicesILi1E5TupleI5OneToI5Int64EEE7NDRangeILi1ES0_S0_S8_S8_EE13CuTracedArrayI7Float64Li1ELi1E5_64__ESC_ISD_Li1ELi1E5_66__E#291$par12"(%arg0: memref<64xf64, 1>, %arg1: memref<66xf64, 1>) attributes {enzymexla.memory_effects = ["read", "write", "allocate", "free"]} {
  %c1_i32 = arith.constant 1 : i32
  %0 = llvm.mlir.poison : vector<2xf64>
  %c0_i32 = arith.constant 0 : i32
  %1 = llvm.mlir.constant(dense<[0.66666666666666663, 0.33333333333333331]> : vector<2xf64>) : vector<2xf64>
  affine.parallel (%arg2) = (0) to (64) {
    %2 = affine.load %arg1[%arg2] {alignment = 8 : i64, invariant, ordering = 0 : i64} : memref<66xf64, 1>
    %3 = affine.load %arg1[%arg2 + 1] {alignment = 8 : i64, invariant, ordering = 0 : i64} : memref<66xf64, 1>
    %4 = llvm.insertelement %2, %0[%c0_i32 : i32] : vector<2xf64>
    %5 = llvm.insertelement %3, %4[%c1_i32 : i32] : vector<2xf64>
    %6 = llvm.fdiv %1, %5 : vector<2xf64>
    %7 = llvm.shufflevector %6, %0 [1, -1] : vector<2xf64>
    %8 = llvm.fadd %6, %7 : vector<2xf64>
    %9 = llvm.extractelement %8[%c0_i32 : i32] : vector<2xf64>
    affine.store %9, %arg0[%arg2] {alignment = 8 : i64, ordering = 0 : i64, tbaa = [#llvm.tbaa_tag<base_type = <id = "custom_tbaa_addrspace(1)", members = {<#llvm.tbaa_root<id = "custom_tbaa">, 0>}>, access_type = <id = "custom_tbaa_addrspace(1)", members = {<#llvm.tbaa_root<id = "custom_tbaa">, 0>}>, offset = 0>]} : memref<64xf64, 1>
  }
  return

@giordano

Copy link
Copy Markdown
Member Author

Ok, now I'm pinning all of Oceananigans, Reactant and GPUCompiler to the versions in #799 (comment). It's a very blunt solution, but I want to get working CI back first, and then we look into what's going on.

Please merge this if green, I may go to sleep before it finishes.

@giordano giordano changed the title Pin Reactant to v0.2.266 Pin Reactant, Oceananigans, GPUCompiler Jun 24, 2026
@giordano giordano merged commit 8136241 into main Jun 24, 2026
8 checks passed
@giordano giordano deleted the mg/pin-reactant branch June 24, 2026 01:33
giordano added a commit that referenced this pull request Jun 24, 2026
giordano added a commit that referenced this pull request Jun 24, 2026
giordano added a commit that referenced this pull request Jun 24, 2026
* Unpin Oceananigans and Reactant

* Revert "Unpin Oceananigans and Reactant"

This reverts commit 18ce402.

* Revert "Pin Reactant, Oceananigans, GPUCompiler (#799)"

This reverts commit 8136241.

* Revert "Revert "Pin Reactant, Oceananigans, GPUCompiler (#799)""

This reverts commit 992aa87.

* Pin GPUCompiler to v1.22.2

* DROP ME: run only one GPU job

* Pin GPUCompiler to v1.22.3

* Pin GPUCompiler to v1.22.4

* Free Oceananigans and Reactant and use good range for GPUCompiler

* Pin again Reactant

* Revert "DROP ME: run only one GPU job"

This reverts commit cb41201.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

reactant ☣ towards a differentiable earth testing 🧪

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants