JuliaGPU

High-performance GPU programming in a high-level language.

JuliaGPU is a Github organization created to unify the many packages for programming GPUs in Julia. With its high-level syntax and flexible compiler, Julia is well positioned to productively program hardware accelerators without sacrificing performance.

Many applications and libraries in the Julia ecosystem rely on GPU support, and the number is growing rapidly. Head over to the showcases page if you want to see some examples of how Julia's GPU support is used in practice.

Supported platforms

The best supported GPU platform in Julia is NVIDIA CUDA through CUDA.jl. It provides kernel programming support comparable to CUDA C, along with comprehensive integration with vendor libraries including cuBLAS, cuFFT, cuSOLVER, cuSPARSE, cuDNN, cuTENSOR, and more. CUDA.jl also features seamless integration with development tools like Nsight and CUPTI, and supports a wide range of CUDA toolkit versions with automatic installation through JLLs. It works reliably on both Linux and Windows across all Julia versions and enjoys widespread adoption throughout the ecosystem.

AMDGPU.jl offers similar capabilities for AMD GPUs running on the ROCm stack. While somewhat less developed than CUDA.jl, it provides solid integration with key vendor libraries such as rocBLAS, rocFFT, rocSOLVER, and rocSPARSE. The package can be slightly more challenging to install and configure due to how ROCm is distributed, but it has been successfully used in various applications and libraries.

For Intel hardware, oneAPI.jl delivers newer but growing support for Intel GPUs with oneAPI. The package offers robust kernel programming capabilities but currently has limited high-level array operations and only integrates partially with oneMKL. For developers working with Intel GPUs, it provides the core functionality needed while the ecosystem continues to mature.

Metal.jl provides similar support for Apple Silicon GPUs with capabilities for both kernel programming and array operations. While offering more limited vendor library integration compared to other back-ends, Metal.jl has evolved beyond its previous experimental status to become a stable solution for Apple GPU programming in Julia.

Finally, work is under way to revive the OpenCL back-end for use on other platforms, as well as to support executing GPU code on CPUs. The OpenCL.jl package is currently in a pre-release state and is not yet recommended for production use.

Publications

Much of Julia's GPU support was developed as part of academic research. If you would like to help support it, please star the relevant repositories as such metrics may help us secure funding in the future. If you use our software as part of your research, teaching, or other activities, we would be grateful if you could cite our work:

Community

If you need help, or have questions about GPU programming in Julia, you can find members of the community at: