Skip to main content
QUICK REVIEW

[論文レビュー] Toward Performance-Portable PETSc for GPU-based Exascale Systems

Richard T. Mills, Mark F. Adams|arXiv (Cornell University)|Nov 2, 2020
Parallel Computing and Optimization Techniques参考文献 16被引用数 5
ひとこと要約

本論文は、PETSc用のパフォーマンスポータブルGPUプログラミングモデルを提示し、科学的アプリケーションがCUDA、Kokkos、HIP、SYCLなどの多様なGPUプログラミングモデルを、パフォーマンスの損失やポータビリティの低下を伴わずに活用できるようにする。アプリケーションのプログラミングモデルをPETScの内部バックエンドから分離することで、本フレームワークは現在のGPUシステムでも高いパフォーマンスを達成し、エクサスケールコンピューティングにおけるシームレスな相互運用性と最小限のデータ移動を実現する。

ABSTRACT

The Portable Extensible Toolkit for Scientific computation (PETSc) library delivers scalable solvers for nonlinear time-dependent differential and algebraic equations and for numerical optimization.The PETSc design for performance portability addresses fundamental GPU accelerator challenges and stresses flexibility and extensibility by separating the programming model used by the application from that used by the library, and it enables application developers to use their preferred programming model, such as Kokkos, RAJA, SYCL, HIP, CUDA, or OpenCL, on upcoming exascale systems. A blueprint for using GPUs from PETSc-based codes is provided, and case studies emphasize the flexibility and high performance achieved on current GPU-based systems.

研究の動機と目的

  • GPUベースのエクサスケールシステムにおいて、多様なプログラミングモデルをカバーするPETScのパフォーマンスポータビリティを実現すること。
  • メモリ帯域幅の制限や異種ハードウェアといったGPUライブラリ開発における根本的課題に取り組むこと。
  • アプリケーション開発者が好みのGPUプログラミングモデル(例:Kokkos、RAJA、SYCL)を使用しつつ、PETScのスケーラブルなソルバーや時間積分機能に依存できることを可能にすること。
  • 実世界のPDEおよびプラズマ物理学ソルバーにおける事例研究を通じて、高いパフォーマンスと柔軟性を示すこと。
  • パフォーマンスの損失を最小限に抑え、データの重複を一切行わずにPETScベースのアプリケーションにGPU加速を統合するためのブループrintを提供すること。

提案手法

  • アプリケーションのプログラミングモデルをPETScの内部バックエンドプログラミングモデルから分離し、GPUモデルの独立した選択を可能にする。
  • データのコピーオーバーヘッドを回避し、パフォーマンスを保持するため、アプリケーションとPETScのプログラミングモデル間でデータを共有する。
  • CUDA、Kokkos、HIP、SYCLの複数のバックエンドを用いてGPUカーネルを実装するとともに、最適化されたベンダーライブラリ(例:cuBLAS、cuSPARSE、rocBLAS)とインターフェースを提供する。
  • GPU上で完全に実行される階層的かつ合成可能なソルバーや時間積分ルーチンを採用し、陰的時間刻みとアドジョイント法のサポートを含む。
  • 適応メッシュ生成(p4est)とデータ並列抽象化(例:Kokkos parallel_for、RAJA、DPC++)を用いて、ポータブルで高性能なカーネルを表現する。
  • メモリアクセスパターンとカーネル起動を最適化し、高い帯域幅利用率を維持するとともに、遅延を最小限に抑える。

実験結果

リサーチクエスチョン

  • RQ1エクサスケールシステム上で、CUDA、Kokkos、HIP、SYCLなどの複数のGPUプログラミングモデルにわたるPETScのパフォーマンスポータビリティをどのように達成できるか?
  • RQ2アプリケーションレベルのプログラミングモデルをPETScの内部GPUカーネルから分離しつつ、高いパフォーマンスを実現するためのアーキテクチャ設計パターンは何か?
  • RQ3PETScのバックエンドサポートが、柔軟性を損なわず、アプリケーションレベルの再実装を要せず、現在のGPUシステムで高いパフォーマンスを達成できる範囲はどの程度か?
  • RQ4CUDAとKokkosなどの異なるプログラミングモデルが、PETScのGPUバックエンドにおけるカーネルパフォーマンスと保守性に与える影響は何か?
  • RQ5GPUアクセceleratedなPETScソルバーにおける主なパフォーマンスボトルネックは何か、そしてカーネル設計とデータ構造設計によってどのように緩和できるか?

主な発見

  • PETScのバックエンドGPUサポートは、現在のシステムで高いパフォーマンスを発揮しており、複数のGPUプログラミングモデルにわたるソルバーや行列アセンブリの実行時間が効率的にスケーリングされている。
  • CUDAおよびKokkosで実装されたLandau衝突演算子カーネルは、種の数に比例して線形スケーリングを示しており、計算制限ではなくメモリ制限の動作であることが示された。
  • Kokkos版のLandauカーネルは、可変長配列と並列還元の抽象化オーバーヘッドによりCUDA版よりわずかに遅延しているが、コードの保守性が優れている。
  • プログラミングモデル間でのデータ共有により、高コストなデータコピーを回避し、アプリケーションコード(例:Kokkos)とPETScのGPUカーネル(例:CUDA)の間でシームレスな相互運用性を実現した。
  • 混合モデル実行が可能であり、1つのワークフロー内で複数のプログラミングモデル(例:OpenMPオフロードとHIP、KokkosとCUDA)を併用できる。
  • 本設計により、代数的ソルバーの完全なGPU実行が可能となり、オンデバイスでの行列アセンブリの継続的開発が可能となり、PDEシミュレーションの完全なGPU加速に向けた重要な一歩が踏み出された。

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

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

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

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