Patterns for portable parallelism: porting CliMA to GPUs

07/26/2023, 3:30 PM — 4:00 PM UTC
26-100

Abstract:

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.

Description:

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.

Platinum sponsors

JuliaHub

Gold sponsors

ASML

Silver sponsors

Pumas AIQuEra Computing Inc.Relational AIJeffrey Sarnoff

Bronze sponsors

Jolin.ioBeacon BiosignalsMIT CSAILBoeing

Academic partners

NAWA

Local partners

Postmates

Fiscal Sponsor

NumFOCUS