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
 
©  |   Cornell University    |   Center for Advanced Computing    |   Copyright Statement    |   Access Statement
CVW material development is supported by NSF OAC awards 1854828, 2321040, 2323116 (UT Austin) and 2005506 (Indiana University)