Skip to content

Add blog post on GPU ecosystem#59

Draft
gdalle wants to merge 18 commits into
JuliaGPU:masterfrom
gdalle:gd/gpu
Draft

Add blog post on GPU ecosystem#59
gdalle wants to merge 18 commits into
JuliaGPU:masterfrom
gdalle:gd/gpu

Conversation

@gdalle

@gdalle gdalle commented Jun 23, 2026

Copy link
Copy Markdown

This idea was discussed a while ago on Slack with @rayegun, so I got it started. Right now I'm just curious whether I forgot any relevant packages. Once we agree on the list, I'll add a small blurb on each item.

Ping @simeonschaub @kshyatt @maleadt

@SimonDanisch

Copy link
Copy Markdown
Member

If you want to mention the new experimental vulkan backend, it's pretty far in terms of functionality:
https://github.com/SimonDanisch/Lava.jl
I will release it properly in the coming months, but it already compiles pretty complex code to pretty fast GPU binaries :)

@ejmeitz

ejmeitz commented Jun 23, 2026

Copy link
Copy Markdown

@krasow and I have been working on cuNumeric.jl which wraps and extends NVIDIA's cupynumeric library. The high-level goal is match the CUDA.jl array programming interface, but execute across distributed systems.

We already have feature parity with cupynumeric, and are well on our way to automatic kernel fusion which increases performance beyond what was possible in Python. We are hoping to announce the first stable release of the package this summer. Whether the lack of a release/maturity prevents cuNumeric.jl from being on this list I will leave to others to decide. Just wanted to self-promote :).

gdalle and others added 3 commits June 24, 2026 11:34
@gdalle

gdalle commented Jun 25, 2026

Copy link
Copy Markdown
Author

I wrote the text with Claude and checked it manually for the packages I knew well. However, I'd love some proper feedback from the package authors on their respective paragraphs, so I'm allowing myself a bit of savage tagging here (sorry):

Comment thread post/2026-06-23-gpu_ecosystem.md Outdated
Comment thread post/2026-06-23-gpu_ecosystem.md Outdated
Co-authored-by: Simeon David Schaub <simeon@schaub.rocks>

@serenity4 serenity4 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe Vulkan.jl and OpenCL.jl should be moved to the Hardware-agnostic -> Low-level kernels section, and Lava.jl to the Hardware-agnostic -> High-level kernels section.

In particular, Vulkan.jl and OpenCL.jl are both meant to be hardware- and platform-agnostic, it's just that they have extensive concepts of optional feature/capabilities that specific hardware may decide to support or not. But for users of these two APIs should not really care about the specific GPU vendor (NVIDIA, AMD...).

On Lava.jl, AFAIU it is the high-level KernelAbstractions.jl interface implementation for Vulkan, sitting on top of Vulkan.jl with good old GPUCompiler magic.

Comment thread post/2026-06-23-gpu_ecosystem.md Outdated
Comment thread post/2026-06-23-gpu_ecosystem.md Outdated

@williamfgc williamfgc left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for taking the initiative, nice job! I added some notes regarding JACC.jl as requested.

Comment thread post/2026-06-23-gpu_ecosystem.md Outdated
Comment thread post/2026-06-23-gpu_ecosystem.md Outdated
Comment thread post/2026-06-23-gpu_ecosystem.md Outdated
Comment thread post/2026-06-23-gpu_ecosystem.md Outdated
Comment thread post/2026-06-23-gpu_ecosystem.md Outdated
@gdalle gdalle changed the title Add blog post skeleton on GPU ecosystem Add blog post on GPU ecosystem Jun 25, 2026
Comment thread post/2026-06-23-gpu_ecosystem.md Outdated
Comment thread post/2026-06-23-gpu_ecosystem.md Outdated
Co-authored-by: Cédric Belmant <cedric.bel@hotmail.fr>
Co-authored-by: Lukas Devos <ldevos98@gmail.com>
Co-authored-by: William F Godoy <williamfgc@yahoo.com>
Co-authored-by: Ethan Meitz <54505069+ejmeitz@users.noreply.github.com>
Comment thread post/2026-06-23-gpu_ecosystem.md Outdated
Comment thread post/2026-06-23-gpu_ecosystem.md Outdated
Comment thread post/2026-06-23-gpu_ecosystem.md Outdated
Comment thread post/2026-06-23-gpu_ecosystem.md Outdated
Comment thread post/2026-06-23-gpu_ecosystem.md Outdated
Comment thread post/2026-06-23-gpu_ecosystem.md Outdated
Comment thread post/2026-06-23-gpu_ecosystem.md Outdated
Comment thread post/2026-06-23-gpu_ecosystem.md Outdated
Comment thread post/2026-06-23-gpu_ecosystem.md Outdated
Comment thread post/2026-06-23-gpu_ecosystem.md Outdated
Co-authored-by: Guillaume Dalle <22795598+gdalle@users.noreply.github.com>
@gdalle

gdalle commented Jun 26, 2026

Copy link
Copy Markdown
Author

Thanks @serenity4, i'll wait for @SimonDanisch to confirm and then move stuff around

@SimonDanisch

Copy link
Copy Markdown
Member

Ah yes, @serenity4 points it out correctly ;)
Vulkan.jl to Lava.jl is almost like CUDACore.jl to CUDA.jl (although its really hard to compare those).
The cool thing about Lava.jl compared to AMDGPU.jl/CUDA.jl is, that on top of the normal KernelAbstraction interface, it also supports accessing the hardware raytracing acceleration primitives as well as compiling real graphics kernel from julia functions for the GPU, which is pretty unique!

@hakkelt hakkelt left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for including my package in the post! I made some suggestions to make the description a bit more informative, but I was okay with the original as well.

Comment thread post/2026-06-23-gpu_ecosystem.md Outdated
Comment thread post/2026-06-23-gpu_ecosystem.md Outdated
@rayegun

rayegun commented Jun 26, 2026

Copy link
Copy Markdown

I think perhaps the environment switching like GPUEnv.jl / autodetection should go below KA.jl and the performance portability packages since they (or at least a few of them) reference and rely on KA.jl.

Comment thread post/2026-06-23-gpu_ecosystem.md Outdated
Comment thread post/2026-06-23-gpu_ecosystem.md Outdated
Comment thread post/2026-06-23-gpu_ecosystem.md Outdated
gdalle and others added 2 commits July 6, 2026 15:20
Co-authored-by: Tamás Hakkel <hakkelt@users.noreply.github.com>
Co-authored-by: Lukas Devos <ldevos98@gmail.com>
Co-authored-by: Christian Guinard <28689358+christiangnrd@users.noreply.github.com>
Co-authored-by: Lukas Devos <ldevos98@gmail.com>
@gdalle gdalle marked this pull request as draft July 6, 2026 13:28
Comment thread post/2026-06-23-gpu_ecosystem.md Outdated
Comment thread post/2026-06-23-gpu_ecosystem.md Outdated
Comment thread post/2026-06-23-gpu_ecosystem.md

@mofeing mofeing left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also mentioning @Pangoraw @jumerckx @glou-nes for comments.

Comment thread post/2026-06-23-gpu_ecosystem.md Outdated
[Reactant.jl](https://github.com/EnzymeAD/Reactant.jl) takes a different approach to GPU execution: rather than offering array types or kernel abstractions, it compiles entire Julia functions to MLIR and optimizes them for execution on CPUs, GPUs, and TPUs via XLA.
It works by tracing the program to remove control flow and type instabilities, then handing the resulting computation graph to XLA for whole-program optimization and device dispatch.
Starting from you code written with existing packages, like CUDA.jl or KernelAbstractions.jl, Reactant will automatically perform optimizations like kernel fusion, and offload to your chosen architecture.
A companion sub-package, ReactantCore.jl, exposes the minimal type hierarchy needed by other packages to be Reactant-aware, allowing the broader Julia ecosystem to interoperate with Reactant's compilation pipeline.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
A companion sub-package, ReactantCore.jl, exposes the minimal type hierarchy needed by other packages to be Reactant-aware, allowing the broader Julia ecosystem to interoperate with Reactant's compilation pipeline.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would remove this because ReactantCore.jl is more like an implementation detail that is required for extension by other packages, just like what ChainRulesCore.jl is for ChainRules.jl. But I'm leaving it up to the writers.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it's interesting to point out the possible integration without heavy deps

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay, but then I would fix the phrasing because ReactantCore.jl is not about the type-hierarchy but about the @trace macro.

Suggested change
A companion sub-package, ReactantCore.jl, exposes the minimal type hierarchy needed by other packages to be Reactant-aware, allowing the broader Julia ecosystem to interoperate with Reactant's compilation pipeline.
Reactant.jl tries to be as least intrusive as possible, but operator tracing may run into problems with control-flow constructs.
A companion sub-package, ReactantCore.jl, exposes the `@trace` macro, which correctly marks control-flow constructs during tracing. The `@trace` translates to a noop if evaluated outside of the Reactant compilation context, allowing Reactant integration of the broader Julia ecosystem without fully depending on Reactant.

opinions @Pangoraw @jumerckx @glou-nes? since you guys have worked more with this

Comment thread post/2026-06-23-gpu_ecosystem.md
gdalle and others added 2 commits July 6, 2026 18:24
Co-authored-by: Ludovic Räss <61313342+luraess@users.noreply.github.com>
Co-authored-by: Sergio Sánchez Ramírez <mofeing+github@gmail.com>
Co-authored-by: Julian Samaroo <jpsamaroo@gmail.com>
Comment thread post/2026-06-23-gpu_ecosystem.md Outdated
Comment thread post/2026-06-23-gpu_ecosystem.md
Comment thread post/2026-06-23-gpu_ecosystem.md Outdated
gdalle and others added 2 commits July 8, 2026 09:10
Co-authored-by: William F Godoy <williamfgc@yahoo.com>
Co-authored-by: Paul Berg <naydex.mc+github@gmail.com>
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.