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