Skip to main content
QUICK REVIEW

[论文解读] An Evaluative Comparison of Performance Portability across GPU Programming Models

Joshua Hoke Davis|arXiv (Cornell University)|Feb 14, 2024
Distributed and Parallel Computing Systems被引用 1
一句话总结

本文使用五个科学类比应用程序,在NVIDIA和AMD GPU上评估了七种GPU编程模型——CUDA、HIP、Kokkos、RAJA、OpenMP、OpenACC和SYCL——的性能可移植性。结果表明,SYCL在不同架构间表现出最一致的性能,而OpenACC和OpenMP在AMD系统上,特别是在归约操作中,表现出显著的性能差距,并识别出可提升可移植性的关键优化策略。

ABSTRACT

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.

研究动机与目标

  • 评估七种GPU编程模型在多样化GPU架构上的性能可移植性。
  • 识别在异构系统中可移植实现的性能瓶颈与不一致性。
  • 为未来性能可移植性研究提供可复现的、基于Spack的方法论。
  • 为开发者和框架设计者提供可操作的见解,以提升跨架构性能。

提出的方法

  • 在所有七种编程模型中开发并实现了五个具有代表性的领域类比应用程序。
  • 使用基于Spack的脚本框架,确保在不同系统上可复现且系统化的部署。
  • 在配备NVIDIA和AMD GPU的领导级HPC系统上进行了全面基准测试。
  • 应用针对性的内核优化,以隔离并改善性能瓶颈。
  • 采用应用效率的调和平均值(PPE)作为量化性能可移植性的指标。
  • 利用性能分析工具识别底层性能问题,如寄存器溢出和指令级效率低下。

实验结果

研究问题

  • RQ1在真实科学工作负载中,不同GPU编程模型在NVIDIA和AMD GPU架构上的表现如何?
  • RQ2性能不一致的主要原因是什么,尤其是在不同模型和硬件平台之间?
  • RQ3哪些编程模型展现出最强的性能可移植性,原因是什么?
  • RQ4哪些优化可显著提升可移植代码的性能可移植性?
  • RQ5如何构建可复现、可扩展的实验框架,以支持未来性能可移植性研究?

主要发现

  • SYCL在所有应用程序和系统上均表现出最高的性能可移植性,调和平均效率达到0.99。
  • OpenACC和OpenMP在AMD GPU上表现出显著的性能下降,特别是在归约操作中,调和平均效率低于0.6。
  • RAJA和OpenMP在AMD系统上的归约性能表现较差,表明编译器或运行时在处理并行归约方面存在局限。
  • miniBUDE内核在所有模型和系统中持续表现不佳,原因在于高寄存器压力和计算密集特性。
  • 优化措施如改进归约处理和减少寄存器压力显著提升了性能,尤其对RAJA和OpenACC效果明显。
  • 性能分析工具中缺乏行级停顿归因功能被识别为关键缺失能力,限制了对可移植代码的有效优化。

更好的研究,从现在开始

从论文设计到论文写作,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。