Add blog post on GPU ecosystem#59
Conversation
|
If you want to mention the new experimental vulkan backend, it's pretty far in terms of functionality: |
|
@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 :). |
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
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):
|
Co-authored-by: Simeon David Schaub <simeon@schaub.rocks>
serenity4
left a comment
There was a problem hiding this comment.
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.
williamfgc
left a comment
There was a problem hiding this comment.
Thanks for taking the initiative, nice job! I added some notes regarding JACC.jl as requested.
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>
Co-authored-by: Guillaume Dalle <22795598+gdalle@users.noreply.github.com>
|
Thanks @serenity4, i'll wait for @SimonDanisch to confirm and then move stuff around |
|
Ah yes, @serenity4 points it out correctly ;) |
hakkelt
left a comment
There was a problem hiding this comment.
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.
|
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. |
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>
| [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. |
There was a problem hiding this comment.
| 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. |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
I think it's interesting to point out the possible integration without heavy deps
There was a problem hiding this comment.
Okay, but then I would fix the phrasing because ReactantCore.jl is not about the type-hierarchy but about the @trace macro.
| 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
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>
Co-authored-by: William F Godoy <williamfgc@yahoo.com>
Co-authored-by: Paul Berg <naydex.mc+github@gmail.com>
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