Presentation
Productive, Vendor-Neutral GPU Programming Using Chapel
DescriptionHPC programming ecosystem is mostly based on sequential C/C++/Fortran languages. These fundamental languages are then augmented with other frameworks such as MPI and OpenMP to enable different types of parallelism. Increased prevalence of GPUs in HPC and AI further complicates the landscape with the addition of other frameworks like CUDA, HIP, SYCL, OpenACC, Kokkos in the landscape. The combination of one programming model for GPU parallelism and others like MPI for other forms of parallelism can make programming clusters and supercomputers difficult.
Chapel is a programming language, where parallelism and locality are first-class concepts. In this paper, we introduce Chapel's support for GPU programming. We demonstrate that Chapel's language features for expressing parallelism and locality can make programming GPUs significantly easier. We share our experience with porting an image analysis application for coral reef biodiversity analysis, and show our initial experimental results on Frontier.
Chapel is a programming language, where parallelism and locality are first-class concepts. In this paper, we introduce Chapel's support for GPU programming. We demonstrate that Chapel's language features for expressing parallelism and locality can make programming GPUs significantly easier. We share our experience with porting an image analysis application for coral reef biodiversity analysis, and show our initial experimental results on Frontier.