1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
(doc_gpu_roadmap)=
# 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 {ref}`topic <doc_faq_gpuhowto>` 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:
```{eval-rst}
.. list-table::
:widths: auto
:header-rows: 1
* - 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}
:class: yellow
We could use your help in further developing PETSc for GPUs; see PETSc Developers
{ref}`documentation <ind_developers>`. The label `GPU` is used on our [GitLab](https://gitlab.com/petsc/petsc) repository for all activity involving GPUs.
**You should use PETSc main (Git branch) for GPUs, do not install the current release.**
:::
|