GPU Porting¶
High performance software with FLOP heavy but parallelization workloads can benefit from using GPU hardware. It is easier to develop a project with GPU support from the beginning; however it can be impractical to restart an existing project from scratch, especially a large project with hundreds of thousands or millions of lines of code representing years or decades of development effort.
In this post, we explore different approaches to extending existing software to run on GPU hardware. There are two general families of approaches under consideration here - native support via the hardware specific language, such as CUDA, ROCm, or SYCL, and performance portability libraries, such as Kokkos or Raja.
Note: ROCm and SYCL have the ability to target different hardware rather than just AMD devices (ROCm) or Intel devices (SYCL) so in some sense they can be thought of having some capabilities in common with a performance portability library. However, that capability will not be the full focus of our discussion here, as the ability to target different hardware is not the only distinction under consideration.
We will outline some pros and cons to consider when deciding what approach to take when extending existing software to run on GPU hardware.
Native GPU Support¶
Hardware specific languages include CUDA, ROCm, or SYCL <https://www.khronos.org/sycl>, or SYCL.
Performance Portability Libraries¶
Metadata¶
Started: 11 Mar 2026
Last edited: 11 Mar 2026