JuliaCon 2023

Patterns for portable parallelism: porting CliMA to GPUs
07-26, 11:30–12:00 (US/Eastern), 26-100

Despite many efforts, it can be difficult to find good abstractions that are efficient on both CPU and GPU code. In our effort to add GPU support to ClimaCore.jl, we have established with several useful patterns for describing common spatial operations at a high-level, which can then be specialized in different ways to different computational backends.


ClimaCore.jl is a high-level framework for constructing spatial discretizations for earth system models, and is currently being used by the CliMA project for atmosphere and land modeling. It makes use of many features of the Julia language, such as broadcast operator fusion, code specialization and aggressive inlining.

We have recently undertaken an effort to add GPU support, with the aim to maintain the ability for users to describe the operations at a high level, while allowing for the CPU and GPU backends to make use of very different threading and memory access patterns for optimal performance. This talk will describe the context, and how we have made use of Julia syntax and implementation of Julia’s broadcasting operations, as well as features of the GPU support libraries, to design a flexible yet powerful mechanism for describing climate models.

Simon Byrne is the lead software engineer on the CliMA project, which aims to build a next-generation climate model in Julia.

This speaker also appears in: