Skip to main content
`Ctrl`+`K`

# 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.