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