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上で5つの科学的プロキシアプリケーションを用いて、7つの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アーキテクチャにおける7つのGPUプログラミングモデルのパフォーマンスポータビリティを評価すること。
  • 異種システムにおけるポータブル実装におけるパフォーマンスボトルネックおよび不一致を特定すること。
  • 将来のパフォーマンスポータビリティ研究のための再現可能でSpackベースの手法を提供すること。
  • 開発者およびフレームワーク設計者によるクロスアーキテクチャパフォーマンスの向上に向けた実用的知見を提供すること。

提案手法

  • すべての7つのプログラミングモデルにわたって、ドメインを代表する5つのプロキシアプリケーションを開発および実装した。
  • 再現性とシステム間の体系的デプロイメントを保証するため、Spackベースのスクリプトフレームワークを用いた。
  • リーダーシップクラスのHPCシステムを用いて、NVIDIAおよびAMDのGPUを搭載した環境で包括的なベンチマークを実施した。
  • パフォーマンスボトルネックを特定・改善するために、ターゲットとなるカーネル最適化を適用した。
  • パフォーマンスポータビリティを定量化するために、アプリケーション効率の調和平均(PPE)を指標とした。
  • プロファイリングツールを活用して、レジスタスパニングや命令レベルの非効率性などの低レベルのパフォーマンス問題を特定した。

実験結果

リサーチクエスチョン

  • RQ1実際の科学的ワークロードにおいて、異なるGPUプログラミングモデルはNVIDIAおよびAMDのGPUアーキテクチャでどのように性能を発揮するか?
  • RQ2モデルやハードウェアプラットフォーム間でのパフォーマンスの不一致の主な原因は何か?
  • RQ3どのプログラミングモデルが最も強いパフォーランスポータビリティを示し、それはなぜか?
  • RQ4ポータブルコードにおけるパフォーマンスポータビリティを顕著に向上させる最適化は何か?
  • RQ5将来のパフォーランスポータビリティ研究のための再現可能でスケーラブルな実験フレームワークはどのように構築できるか?

主な発見

  • SYCLは最高のパフォーマンスポータビリティを示し、すべてのアプリケーションおよびシステムで調和平均効率が0.99に達した。
  • OpenACCおよびOpenMPはAMD GPUで顕著なパフォーランス低下を示し、特に削減演算で調和平均効率が0.6未満にとどまった。
  • RAJAおよびOpenMPはAMDシステムで劣悪な削減パフォーマンスを示し、並列削減処理を扱うコンパイラまたはランタイムの制限が原因であると判明した。
  • ミニBUDEカーネルは、すべてのモデルおよびシステムで一貫して低性能であり、高レジスタ圧力と計算バウンド特性が原因であった。
  • 削減処理の改善やレジスタ圧力の低減といった最適化は、特にRAJAおよびOpenACCにおいて顕著なパフォーマンス向上をもたらした。
  • プロファイリングツールにおけるラインレベルのスターリングアトリビューションが、ポータブルコードの効果的最適化を妨げる重要な欠落機能であると特定された。

より良い研究を、今すぐ始めましょう

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。