arXivDaily arXiv每日学术速递 周一至周五更新
arXiv 2402.08950cs.DCcs.PF
收藏

让GPU编程模型承担性能可移植性的任务

Taking GPU Programming Models to Task for Performance Portability

Joshua H. Davis, Pranav Sivaraman, Joy Kitson, Konstantinos Parasyris, Harshitha Menon, Isaac Minn, Giorgis Georgakoudis, Abhinav Bhatele

AI总结:

针对现有GPU编程模型无法保证性能可移植性的问题,本研究对比评估了7种主流GPU编程模型在NVIDIA和AMD GPU上的性能,提出基于Spack脚本的可复现实验方法,并分析性能差异原因、给出部分优化方案。

摘要:

随着节点内硬件架构的多样性增加,可移植性对于确保科学软件开发与维护的高生产率至关重要。尽管已有多种编程模型可为各类GPU系统提供可移植性,但它们并未对性能可移植性作出任何保证。本研究中,我们探究了CUDA、HIP、Kokkos、RAJA、OpenMP、OpenACC和SYCL这几种编程模型,评估它们在NVIDIA与AMD GPU上的性能一致性。我们采用来自不同科学领域的5个代理应用,在缺失对应实现时自行创建,并以此对这些编程模型的性能可移植性开展全面的对比评估。我们提供了一种基于Spack脚本的方法,以确保本研究中所开展实验的可复现性。最后,我们分析了部分编程模型在特定场景下表现不佳的原因,并在部分案例中给出了针对代理应用的性能优化方案。

英文摘要:

Portability is critical to ensuring high productivity in developing and maintaining scientific software as the diversity in on-node hardware architectures increases. While several programming models provide portability for diverse GPU systems, they don't make any guarantees about performance portability. In this work, we explore several programming models -- CUDA, HIP, Kokkos, RAJA, OpenMP, OpenACC, and SYCL, to assess the consistency of their performance across NVIDIA and AMD GPUs. We use five proxy applications from different scientific domains, create implementations where missing, and use them to present a comprehensive comparative evaluation of the performance portability of these programming models. We provide a Spack scripting-based methodology to ensure reproducibility of experiments conducted in this work. Finally, we analyze the reasons for why some programming models underperform in certain scenarios and in some cases, present performance optimizations to the proxy applications.

机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。

↑