GPU Portability Solutions
Steve Lantz
Cornell Center for Advanced Computing
6/2025 (original)
We survey the software tools or systems that are available to enable portability across different types of GPUs. All of these solutions are targeted toward common computing languages like C/C++, Fortran, and Python. However, they take varying approaches in how they extend a language or its standard interfaces to allow you to write code that will run on heterogeneous platforms.
Content in this Virtual Workshop topic is largely based on the article, "Exploring code portability solutions for HEP with a particle tracking test code" by Ather et al. (Front. Big Data, 2024). The author wishes to acknowledge and thank his coauthors.
Objectives
After you complete this topic, you should be able to:
- Explain the challenges posed by heterogeneous CPU and GPU computing environments
- Compare different code portability solutions (e.g., CUDA, OpenMP, HIP, SYCL, Kokkos, Alpaka) in terms of performance and ease of implementation
- Understand the impact of memory layout and compiler choice on the performance of portable code
- Identify language features in C++ and Fortran that support portability across heterogeneous platforms
- Name several strategies that aid Python developers in writing code for execution on GPUs
- Evaluate the trade-offs between performance portability and development complexity in research applications
Prerequisites
- Familiarity with High Performance Computing (HPC) concepts could be helpful, but most terms are explained in context.
- Roadmaps on Parallel Programming Concepts and High-Performance Computing and Understanding GPU Architecture are possible companions to this topic, for those who seek to expand their knowledge of parallel computing and GPUs, respectively.
CVW material development is supported by NSF OAC awards 1854828, 2321040, 2323116 (UT Austin) and 2005506 (Indiana University)