Skip to main content
QUICK REVIEW

[論文レビュー] Accelerating QDP++/Chroma on GPUs

Frank Winter|arXiv (Cornell University)|Nov 23, 2011
Parallel Computing and Optimization Techniques参考文献 7被引用数 5
ひとこと要約

本論文は、Just-in-Time (JIT) コンパイルによるユーザー定義式のコンパイルと、GPU メモリ用のソフトウェア管理 LRU キャッシュを用いて、NVIDIA GPU 上での格子 QCD 式評価を高速化する QDP++/Chroma を拡張する。非カーネルルーチンを従来の最適化対象外としていたが、GPU 実行に移譲することで、合計で 10× を超えるスピードアップを達成し、Chroma ワークフローにおける Amdahl の法則による制限を顕著に軽減する。

ABSTRACT

Extensions to the C++ implementation of the QCD Data Parallel Interface are provided enabling acceleration of expression evaluation on NVIDIA GPUs. Single expressions are off-loaded to the device memory and execution domain leveraging the Portable Expression Template Engine and using Just-in-Time compilation techniques. Memory management is automated by a software implementation of a cache controlling the GPU's memory. Interoperability with existing Krylov space solvers is demonstrated and special attention is paid on 'Chroma readiness'. Non-kernel routines in lattice QCD calculations typically not subject of hand-tuned optimisations are accelerated which can reduce the effects otherwise suffered from Amdahl's Law.

研究の動機と目的

  • 非カーネルルーチンが実行時間の大部分を占めるにもかかわらず、高度に最適化されたソルバーがあるにもかかわらず、Amdahl の法則に起因する格子 QCD の性能ボトルネックを解消すること。
  • ユーザー定義式の GPU 実行を QDP++ に拡張し、スメアリング や コントラクション などの非カーネル操作の加速を可能にすること。
  • フェルミオン行列の逆行列計算に QUDA を使用する際の完全な相互運用性を確保するとともに、統一されたソフトウェア キャッシュを介して GPU メモリを共有すること。
  • 拡張された QDP++ スタック上で Chroma のコンパイルと実行が成功することを確認し、「Chroma の準備完了」を実証すること。
  • ランタイムにおけるソフトウェア キャッシュを用いて、CPU-GPU データ転送のオーバーヘッドを低減し、格子オブジェクトのデバイスメモリアフィニティを管理すること。

提案手法

  • Just-in-Time (JIT) コンパイルによる動的 CUDA カーネル生成を用いて、ユーザー定義式を GPU にオフロードする。
  • 抽象構文木として式を表現できるように、Portable Expression Template Engine (PETE) を使用し、実行時における GPU コード生成を可能にする。
  • ソフトウェアベースの LRU キャッシュを実装し、オブジェクトの在庫状態を追跡することで、冗長なホストからデバイスへの転送を最小限に抑える GPU メモリ管理を実現する。
  • LRU キャッシュが管理する共有デバイスメモリプールにメモリ割り当てをリダイレクトするコールラッパーを介して QUDA と統合する。
  • 式の AST を走査するためのツリー・パーサーを用い、GPU コードを生成し、JIT コンパイルやデバイス実行を開始する前にキャッシュを照会する。
  • 必要な GPU リソースが利用できない場合のフォールバックとしてホスト実行をサポートし、堅牢性と後方互換性を確保する。

実験結果

リサーチクエスチョン

  • RQ1非カーネル格子 QCD ルーチンは、従来最適化対象外であったが、高レベルの C++ 抽象により、GPU 上で効果的に高速化可能か?
  • RQ2Amdahl の法則の制約のもとで、非カーネル操作の GPU 加速が Chroma における全体の実行時間にどの程度短縮できるか?
  • RQ3QDP++ と QUDA 間で、既存のワークフローを損なわずに、GPU メモリ管理を自動化し、共有可能にする方法は何か?
  • RQ4フェルミオン行列の逆行列計算(QUDA による)と非カーネルルーチン(JIT コンパイルされた QDP++ 式による)を、同じ GPU 上で両方高速化した場合、得られるパフォーマンス向上はどの程度か?
  • RQ5QDP++ のようなポータブルで高レベルの C++ インターフェースは、ポータビリティや保守性を損なわずに、異種処理装置での実行を拡張可能か?

主な発見

  • 非カーネルルーチンを含むすべての Chroma コンponent を GPU で加速した場合、GTX 480 で CPU 僅での実行と比較して、合計で 10× を超えるスピードアップを達成した。
  • QUDA を用いた行列の逆行列計算で 30× のスピードアップが得られたにもかかわらず、ソルバーのみを GPU 加速した場合の合計スピードアップは約 2× にとどまり、非カーネルルーチンの実行時間の優位性を示している。
  • ソフトウェア LRU キャッシュにより、冗長な GPU メモリ転送が削減され、効率が向上するとともに、QDP++ と QUDA 間での共有メモリ管理が可能になった。
  • QDP++ 式の JIT コンパイルにより、低レベルのカーネルの手動チューニングを必要とせず、ユーザー定義式の GPU 実行が可能になった。
  • コalesced メモリアクセスを用いた初期テストでは、継続的メモリ帯域幅が 6–10× 向上し、さらなる最適化の大きな可能性を示している。
  • 実装は Chroma のコンパイルと実行を正常にサポートしており、'Chroma の準備完了' が確認され、格子 QCD ワークフローのエンドツーエンド GPU 加速が可能になった。

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

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

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

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