GSoC 2026

GPU Programming

JuliaGPU provides a suite of packages for programming GPUs in Julia. We have support for AMD, NVIDIA and Intel GPUs through various backends, unified by high-level array abstractions and a common programming model based on kernel programming.

Difficulty: Medium

Duration: 175 or 350 hours (the scope of functionality to port can be adjusted accordingly)

Description: The Julia GPU stack consists of several layers, from low-level vendor-specific packages like CUDA.jl to high-level abstractions like GPUArrays.jl. While the high-level packages aim to be vendor-agnostic, many optimized operations are still implemented in vendor-specific ways. This project aims to improve portability by moving these implementations to GPUArrays.jl using KernelAbstractions.jl.

The project will involve:

Identifying vendor-specific kernel implementations in packages like CUDA.jl

Porting these kernels to KernelAbstractions.jl in GPUArrays.jl

Improving KernelAbstractions.jl where needed to support these kernels

Ensuring performance remains competitive with vendor-specific implementations

Adding tests to verify correctness across different GPU backends

Required Skills:

Experience with Julia programming

Familiarity with GPU programming concepts

Experience with GPU programming in Julia is a plus

Understanding of performance optimization

Expected Results: A set of optimized GPU kernels in GPUArrays.jl that are vendor-agnostic and performant across different GPU backends. This will improve the portability of the Julia GPU stack and make it easier to support new GPU architectures.

Mentors: Tim Besard, Valentin Churavy

Command Palette

Search for a command to run...