AdaptiveCpp integration?

Oblomov
Fri, 16 May 2025 16:12:00 +0000
GPU

Hi all,

I’ve recently started looking at AdaptiveCpp for some of my C++ work, and‌ I’m starting to get a feeling that this would be an excellent fit for Julia’s GPGPU.

For those who don’t know, AdaptiveCpp, formerly known as hipSYCL, is a SYCL single-pass compiler and runtime with support for several backends, including OpenMP (for native execution on CPU), CUDA, HIP/ROCm, OpenCL and Level Zero/OneAPI. It even supports building CUDA and HIP code directly. Even though its primary modus operandi is as a single-pass compilers, for kernels this generally produces only an IR that is finalized (and cached) at runtime depending on the specific backend and execution environment.

Although I don’t have in-depth knowledge of the Julia (or acpp) internals, I was inevitably led to draw a parallel (eh) with the Julia AOT compilation, and suspect that the two would fit each other rather well. My understanding is that at the moment SYCL support in Julia is mainly via OneAPI.jl, and there are separate packages to interface with CUDA, HSA, AMD ROCm. The new version of the OpenCL.jl package featuring support for Native Julia kernels is also at adds with the primary proprietary OpenCL platforms (NVIDIA and AMD) due to their lack of support for SPIR-V —something that acpp works around by transpiling the IR of its kernels to something that can be fed to the respective platforms.

I was wondering: is perchance anybody working on interfacing Julia with AdaptiveCpp? I feel like this could help bring the GPGPU support in Julia towards a more homogeneous interface.

(P.S. I wanted to tag this as sycl but apparently there isn’t a tag for that yet?)

10 posts - 4 participants