Skip to content

Allow UnsafeAtomics 0.4 - #146

Merged
maleadt merged 3 commits into
mainfrom
tb/unsafeatomics-0.4
Oct 6, 2026
Merged

maleadt merged 3 commits into
mainfrom
tb/unsafeatomics-0.4

Conversation

@maleadt

@maleadt maleadt commented Oct 5, 2026 •

Copy link
Copy Markdown
Member

UnsafeAtomics 0.4 is out, and Atomix 1.3 and the GPU back-ends (starting with AMDGPU.jl) move to it. Every AcceleratedKernels release since 0.4.3 caps UnsafeAtomics at 0.3, so environments that need 0.4 either fail to resolve or fall back to AcceleratedKernels 0.4.2.

AcceleratedKernels only uses UnsafeAtomics' load, store! and fence, which 0.4 keeps, so this widens the bound to 0.3, 0.4 and bumps the version to 0.5.1. The default scope is still system in 0.4. The AMDGPU extension keeps its AMDGPU.syncscope_agent fence, which AMDGPU.jl continues to define under UnsafeAtomics 0.4 (as the canonical device scope, which GPUCompiler 2.12 emits as agent). With UnsafeAtomics 0.4 and GPUCompiler 2.12, UnsafeAtomics.fence(seq_cst, UnsafeAtomics.device) would be the portable device-scope fence on every back-end. That cleanup is left for later, since it would drop UnsafeAtomics 0.3.

The same change for the 0.4 series, as 0.4.4, is in #147; AMDGPU.jl currently allows AcceleratedKernels 0.3.1 and 0.4.

Tested with UnsafeAtomics 0.4.0 and Atomix 1.3.0: the CPU test suite passes (--cpu, Julia 1.13).

AcceleratedKernels only uses its loads, stores and fences, which 0.4 keeps.
KernelAbstractions main depends on the unregistered KernelInterface 0.4,
which it provides through `[sources]`. Julia 1.10 ignores that, so the
KA 0.10 job could not resolve its environment there.
@maleadt
maleadt merged commit 2aa6214 into main Oct 6, 2026
38 of 39 checks passed
@maleadt
maleadt deleted the tb/unsafeatomics-0.4 branch October 6, 2026 06:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant