GPU Support Roadmap#

PETSc algebraic solvers run on GPU systems from NVIDIA using CUDA, and AMD and Intel using OpenCL/ViennaCL and HIP. Effective GPU implementations of low-level linear algebra operations provide a highly performant alternative solution strategy for users, and is therefore a high priority for PETSc developers.

See FAQ topic which shows how to enable GPU backends.

Note

PETSc uses a single source programming model where solver back-ends are selected as runtime options and configuration options with no changes to the API.

Users should (ideally) never have to change their source code to take advantage of new backend implementations.

PETSc code will include full implementations of vector and matrix operations (as well as other select operations) using each of:

Programming Model

Supporting Package

Vec Status

Mat Status

Supported GPU types

CUDA

cuBLAS/cuSparse

SUPPORTED

SUPPORTED

NVIDIA GPUs

HIP

Rocm

SUPPORTED

IN DEVELOPMENT

AMD GPUs

SYCL

MKL

NOT YET SUPPORTED

NOT YET SUPPORTED

NOT YET SUPPORTED

OpenCL

ViennaCL

SUPPORTED

SUPPORTED

NVIDIA, AMD, INTEL GPUs

Kokkos

Kokkos and Kokkos-Kernels

SUPPORTED

SUPPORTED

NVIDIA, AMD, INTEL GPUs


Basic linear algebra GPU implementations enable many solvers, including GAMG and BDDC, to run entirely on the GPU. PETSc is currently adding GPU support for residual and Jacobian creation and for matrix assembly extensions to MATAIJCUSPARSE and MATAIJKOKKOS. This is work in progress.

Important

We could use your help in further developing PETSc for GPUs; see PETSc Developers documentation. The label GPU is used on our Gitlab repository for all activity involving GPUs.

You should use petsc main (git branch) for GPUs, do not install the current release.