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