Evaluation of Juliana Tool: A translator for Julia’s CUDA.jl code into KernelAbstraction.jl
Enrique de la Calle, Carlos García · Future Generation Computer Systems · 2025
Julia is a high-level language that supports the execution of parallel code through various packages. CUDA.jl is widely used for developing GPU-accelerated code in Julia and is integrated into many libraries and programs. In this paper, we present Juliana, a novel tool that automatically translates Julia code utilizing the CUDA.jl package into an abstract, multi-backend representation powered by the KernelAbstractions.jl package. To evaluate the tool’s viability and performance, we analyzed four Julia projects: Rodinia, miniBUDE, BabelStream, and Oceananigans.jl. The performance overhead of this approach was found to be relatively low (under 7% for the Rodinia suite), with performance portability metrics showing results nearly identical to the native implementations. By running the same code across multiple KernelAbstractions’ backends, we successfully executed these translated projects on GPUs from vendors such as NVIDIA, Intel, AMD, and Apple. This ensured compatibility across these platforms and enabled first-time execution on some devices. • The paper proposes Juliana ( Julia unification la yer for Intel, AMD, Nvidia and Apple) tool. • Juliana translates Julia code based on CUDA.jl to KernelAbstractions to use GPUs. • Demonstration of Juliana’s low performance overhead across multiple hardware platforms. • Juliana tested on Rodinia, miniBUDE, BabelStream, and Oceananigans for applicability. • Introduction of new features makes Juliana versatile for real-world applications.