# \[ANN\] JACC.jl v1.0 now available for 100% portable CPU/GPU code

**URL:** <https://discourse.julialang.org/t/ann-jacc-jl-v1-0-now-available-for-100-portable-cpu-gpu-code/136231>\
**Category:** Package Announcements\
**Tags:** package, gpu, performance, hpc, vendor-neutral\
**Created:** [March 17, 2026, 5:12am UTC](https://discourse.julialang.org/t/ann-jacc-jl-v1-0-now-available-for-100-portable-cpu-gpu-code/136231 "2026-03-17T05:12:41Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![williamfgc](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/williamfgc/32/15445_2.png) [@williamfgc](https://discourse.julialang.org/u/williamfgc)\
**Post date:** [March 17, 2026, 5:12am UTC](https://discourse.julialang.org/t/ann-jacc-jl-v1-0-now-available-for-100-portable-cpu-gpu-code/136231/1 "2026-03-17T05:12:41Z")

</div>

We are pleased to announce the first stable release of JACC.jl v1.0 - Julia for ACCelerators [https://github.com/JuliaGPU/JACC.jl](https://github.com/JuliaGPU/JACC.jl) - feel free to star the repo.

## What’s different?

✅ Single-source Julia code using array, parallel\_for/parallel\_reduce (hence no GPU programming required) for vendor-neutral computing  
✅ High performance on NVIDIA, AMD, Intel, Apple + CPUs  
✅ No vendor-specific code or function annotations. Backend is set outside to keep code 100% portable.  
✅ Enable interactive parallel code development (see below)  
✅ Work closely with the community of users and contributors as in our [v1.0 API specs discussion](https://github.com/JuliaGPU/JACC.jl/discussions/283)  
✅ High-level APIs: JACC.jl will make the best guess separating computational (science code) from computer (low-level knobs) science  
✅ Low-level optional APIs: blocks, threads, sync, streams, etc.  
✅ MultiGPU, Async GPU execution, and shared memory support  
✅ Repo follows the OpenSSF best practices [badge](https://www.bestpractices.dev/en/projects/12117/passing)

![jacc-metal](https://global.discourse-cdn.com/julialang/original/3X/6/7/67c17f239c2e5743da422ed5555279451bd7d793.gif)

JACC.jl is a registered Julia package, follows standard installation.

Set backend (if needed):

`julia -e 'using JACC; JACC.set_backend("CUDA")'`  
Supported backends: CUDA, AMDGPU, Metal, oneAPI, Threads (default)

Portable CPU/GPU code example:

```julia
import JACC
JACC.@init_backend

function axpy(i, alpha, x, y)
  @inbounds x[i] += alpha * y[i]
end

N = 100_000
alpha = Float32(2.0)
x = JACC.zeros(Float32, N)
y = JACC.array(fill(Float32(5), N))
JACC.@parallel_for range=N axpy(alpha, x, y)
sum_x = JACC.@parallel_reduce range=N ((i,x)->x[i])(x)
println("Result: ", sum_x)

```

Our team at Oak Ridge National Laboratory is working hard to close gaps in Julia for HPC programming. We thank the contributions of the Julia community, in particular the JuliaGPU vendor-specific backends and our US Department of Energy sponsors hoping JACC.jl helps people adopting Julia for productive science using parallel computing. Feedback is welcome and we’d like to hear on performance gaps, issues, use-cases, etc.

Papers:

- [SC24-WACCPD JACC.jl](https://doi.org/10.1109/SCW63240.2024.00245)
- [IEEE eScience’25 JACC.Multi](https://doi.org/10.1109/eScience65000.2025.00036)
- [IEEE HPEC’24 JACC.shared](https://doi.org/10.1109/HPEC62836.2024.10938453)

Preliminary work:

- [SC23-WORKS Julia on Frontier](https://doi.org/10.1145/3624062.3624278)
- [IPDPS23-HIPS Julia, Numba, Kokkos](https://doi.org/10.1109/IPDPSW59300.2023.00068)

More information in the [JACC.jl repo](https://github.com/JuliaGPU/JACC.jl) and the [documentation](https://juliagpu.github.io/JACC.jl/).

---

<div class="post-metadata">

**Author:** ![oschulz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oschulz/32/2998_2.png) [@oschulz](https://discourse.julialang.org/u/oschulz)\
**Post date:** [March 17, 2026, 11:15am UTC](https://discourse.julialang.org/t/ann-jacc-jl-v1-0-now-available-for-100-portable-cpu-gpu-code/136231/2 "2026-03-17T11:15:16Z")

</div>

Oh, very nice!

---

<div class="post-metadata">

**Author:** ![oschulz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oschulz/32/2998_2.png) [@oschulz](https://discourse.julialang.org/u/oschulz)\
**Post date:** [March 17, 2026, 11:16am UTC](https://discourse.julialang.org/t/ann-jacc-jl-v1-0-now-available-for-100-portable-cpu-gpu-code/136231/3 "2026-03-17T11:16:37Z")

</div>

Could there be a Reactant backend as well?

---

<div class="post-metadata">

**Author:** ![williamfgc](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/williamfgc/32/15445_2.png) [@williamfgc](https://discourse.julialang.org/u/williamfgc)\
**Post date:** [March 17, 2026, 3:56pm UTC](https://discourse.julialang.org/t/ann-jacc-jl-v1-0-now-available-for-100-portable-cpu-gpu-code/136231/4 "2026-03-17T15:56:38Z")

</div>

Thanks @oschulz, good point ! We don’t have immediate plans, but we’d love to collaborate with anyone interested in the integration as Reactant is a very interesting approach and can lead to a nice paper.

---

<div class="post-metadata">

**Author:** ![oschulz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oschulz/32/2998_2.png) [@oschulz](https://discourse.julialang.org/u/oschulz)\
**Post date:** [March 17, 2026, 4:31pm UTC](https://discourse.julialang.org/t/ann-jacc-jl-v1-0-now-available-for-100-portable-cpu-gpu-code/136231/5 "2026-03-17T16:31:21Z")

</div>

I guess for Reactant one would want to ensure (via specializations, etc.) that the operations in JACC are Reactant-tracing friendly - Reactant would then compile a whole program full of them, not each JACC operation separately, to enable kernel-fusion and so on. Correct, @wsmoses ?
