Skip to main content
QUICK REVIEW

[論文レビュー] A Tale of Three Runtimes

Nicolas Vasilache, Muthu Manikandan Baskaran|arXiv (Cornell University)|Sep 5, 2014
Parallel Computing and Optimization Techniques参考文献 36被引用数 5
ひとこと要約

本稿では、階層的マッピング戦略とランタイム非依存のC++抽象化レイヤーを用いて、IntelのCnC、ETIのSWARM、OCRの3つの異なるランタイム向けに、逐次Cコードからイベント駆動型、タプルスペースベースのプログラムを自動的に生成するコンパイラ駆動のアプローチを提示する。この手法はループ可換型を活用して、効率的で保守的な同期を実現し、最小限のオーバーヘッドで高い性能を達成しており、特に最適なタスク粒度において顕著である。

ABSTRACT

This contribution discusses the automatic generation of event-driven, tuple-space based programs for task-oriented execution models from a sequential C specification. We developed a hierarchical mapping solution using auto-parallelizing compiler technology to target three different runtimes relying on event-driven tasks (EDTs). Our solution benefits from the important observation that loop types encode short, transitive relations among EDTs that are compact and efficiently evaluated at runtime. In this context, permutable loops are of particular importance as they translate immediately into conservative point-to-point synchronizations of distance 1. Our solution generates calls into a runtime-agnostic C++ layer, which we have retargeted to Intel's Concurrent Collections (CnC), ETI's SWARM, and the Open Community Runtime (OCR). Experience with other runtime systems motivates our introduction of support for hierarchical async-finishes in CnC. Experimental data is provided to show the benefit of automatically generated code for EDT-based runtimes as well as comparisons across runtimes.

研究の動機と目的

  • 複数のランタイム向けに、逐次C仕様から自動的でポータブルなイベント駆動型、タプルスペースベースのプログラムを生成すること。
  • 深いメモリ階層上でスケーラブルで細粒度のタスクベース実行モデルに逐次コードをマッピングする課題に対処すること。
  • ループ型解析を通じてタスク生成と依存管理の最適化により、細粒度タスクングのランタイムオーバーヘッドを低減すること。
  • 統一的で再ターゲティング可能な抽象化レイヤーを用いて、ハイパフォーマンスカーネルの異なるランタイム間での比較と移行を可能にすること。
  • ポータブルで再利用可能なコード生成を通じて、将来のアーキテクチャの進化、特に深いメモリ階層を持つエクサスケールシステムに対応すること。

提案手法

  • 自動並列化コンパイラ技術を用いてループネストを論理的ツリー表現に再構造化し、階層的タスク分解を可能にする。
  • 特に可換性を持つループ(特に可換ループ)を特定することで、イベント駆動型タスク(EDT)間の保守的で距離1のポイントツーポイント同期を推定する。
  • ランタイム非依存のC++レイヤー(RAL)を用いて、共通のEDTプログラミングモデルパターンを抽象化し、CnC、SWARM、OCRへの再ターゲティングを可能にする。
  • フレームワークは階層的async-finishをサポートし、大規模実行における負荷分散の向上と同期ボトルネックの低減を実現する。
  • 再構造化されたループから依存関係を抽出し、コンパイル時にタプルスペースベースのタスク依存関係を生成する。
  • 式テンプレートを用いて多次元依存空間を表現し、実行時に効率的でスケーラブルな依存関係解決を実現する。

実験結果

リサーチクエスチョン

  • RQ1単一のコンパイラベースのフレームワークは、複数のEDTベースのランタイム向けに、効率的でポータブルなイベント駆動型コードを自動生成可能か?
  • RQ2可換ループ型の使用は、イベント駆動型タスクグラフにおける効率的で保守的な同期をどのように実現するか?
  • RQ3異なるランタイムにおける細粒度タスク管理のオーバーヘッドはどの程度で、タスクサイズに伴いどのようにスケーリングするか?
  • RQ4統一的で再ターゲティング可能な抽象化レイヤーは、多様なランタイムシステム間でのハイパフォーマンスカーネルの移行作業をどの程度軽減できるか?
  • RQ5タスク粒度がイベント駆動型実行モデルにおける有効作業比と全体的なパフォーマンスに与える影響は何か?

主な発見

  • フレームワークはIntelのCnC、ETIのSWARM、およびオープンコミュニティランタイム(OCR)への再ターゲティングに成功し、ランタイム間のポータビリティを実証した。
  • 最適なタスク粒度(例:16-16-16タイル)において、SORカーネルでOCR上で最大14.39 Gflop/sの性能を達成し、強力なスケーラビリティを示した。
  • 粒度が4の場合、OCRでは非アイドル時間の85%以上が有効作業に費やされており、中程度のタスクサイズにおいて低オーバーヘッドを示した。
  • より細粒度の粒度(例:10-10-100)では、有効作業比が10%に低下し、最大80%の時間がタスクスティーリングとキュー管理に費やされるなど、性能の急激な低下が観察された。これは重要なパフォーマンスの閾値を示している。
  • 細粒度EDTの管理オーバーヘッドは依然として高く、特にあるタスクサイズ未満では顕著であり、ランタイムシステムにおけるさらなる最適化の必要性を示唆している。
  • 可換ループの使用により、距離1の即時の保守的同期が可能となり、依存関係管理の簡素化とパフォーマンスの向上が達成された。

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

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

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

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