xref: /petsc/doc/overview/gpu_roadmap.md (revision ccfb0f9f40a0131988d7995ed9679700dae2a75a)
1(doc_gpu_roadmap)=
2
3# GPU Support Roadmap
4
5PETSc algebraic solvers run on GPU systems from NVIDIA using CUDA, and AMD and Intel using
6OpenCL/ViennaCL and HIP. Effective GPU implementations of low-level linear algebra
7operations provide a highly performant alternative solution strategy for users, and is
8therefore a high priority for PETSc developers.
9
10See FAQ {ref}`topic <doc_faq_gpuhowto>` which shows how to enable GPU backends.
11
12:::{note}
13PETSc uses a single source programming model where solver back-ends are selected as
14**runtime** options and configuration options with no changes to the API.
15
16Users should (ideally) never have to change their source code to take advantage of new
17backend implementations.
18:::
19
20PETSc code will include full implementations of vector and matrix operations (as well as
21other select operations) using each of:
22
23```{eval-rst}
24.. list-table::
25   :widths: auto
26   :header-rows: 1
27
28   * - Programming Model
29     - Supporting Package
30     - ``Vec`` Status
31     - ``Mat`` Status
32     - Supported GPU types
33   * - CUDA
34     - cuBLAS/cuSparse
35     - SUPPORTED
36     - SUPPORTED
37     - NVIDIA GPUs
38   * - HIP
39     - Rocm
40     - SUPPORTED
41     - IN DEVELOPMENT
42     - AMD GPUs
43   * - SYCL
44     - MKL
45     - NOT YET SUPPORTED
46     - NOT YET SUPPORTED
47     - NOT YET SUPPORTED
48   * - OpenCL
49     - ViennaCL
50     - SUPPORTED
51     - SUPPORTED
52     - NVIDIA, AMD, Intel GPUs
53   * - Kokkos
54     - Kokkos and Kokkos-Kernels
55     - SUPPORTED
56     - SUPPORTED
57     - NVIDIA, AMD, Intel GPUs
58```
59
60______________________________________________________________________
61
62Basic linear algebra GPU implementations enable many solvers, including `GAMG` and
63`BDDC`, to run entirely on the GPU. PETSc is currently adding GPU support for residual
64and Jacobian creation and for matrix assembly extensions to `MATAIJCUSPARSE` and
65`MATAIJKOKKOS`. **This is work in progress**.
66
67:::{important}
68:class: yellow
69
70We could use your help in further developing PETSc for GPUs; see PETSc Developers
71{ref}`documentation <ind_developers>`. The label `GPU` is used on our [GitLab](https://gitlab.com/petsc/petsc) repository for all activity involving GPUs.
72
73**You should use PETSc main (Git branch) for GPUs, do not install the current release.**
74:::
75