[論文レビュー] Automated Parallel Kernel Extraction from Dynamic Application Traces
この論文では、動的アプリケーショントレースを用いて、対応するカーネルを自動で抽出するオープンソースツールであるTraceAtlasを提示する。対数的空間、線形時間のアルゴリズムを用いることで、アノテーションのないLLVM互換コードにおいて、9倍の時間遅延と1 MB/secのトレースサイズで、効率的なカーネル検出が可能となり、16のライブラリを対象に10,500件を超えるカーネルインスタンスを高精度に同定し、異種アクセラレータ向けの下流最適化を可能にする。
Modern program runtime is dominated by segments of repeating code called kernels. Kernels are accelerated by increasing memory locality, increasing data-parallelism, and exploiting producer-consumer parallelism among kernels - which requires hardware specialized for a particular class of kernels. Programming this hardware can be difficult, requiring that the kernels be identified and annotated in the code or translated to a domain-specific language. This paper describes a technique to automatically localize parallel kernels from a dynamic application trace, facilitating further code optimization. Dynamic trace collection is fast and compact. With optimization, it only incurs a time-dilation of a factor on nine and file-size of one megabyte per second, addressing a significant criticism of this approach. Kernel extraction is accurate and performed in linear time within logarithmic memory, detecting a wide range of kernels. This approach was validated across 16 libraries, comprised of 10,507 kernels instances. To validate the accuracy of our detected kernels, five test programs were written that spans traditional kernel definitions and were certified to contain all the kernels that were expected.
研究の動機と目的
- 生産用のコードにアノテーションがなく、専用アクセラレータにマッピングするための並列カーネルを同定する課題に対処すること。
- 動的トレーシングのパフォーマンスオーバーヘッドとストレージコストを低減し、大規模なアプリケーション分析に実用的であるようにすること。
- コードアノテーション、コンパイラディレクティブ、ドメイン特化言語変換を一切必要としない、スケーラブルで高精度なカーネル抽出手法を開発すること。
- 静的解析ではなく、実行時の実行パターンに基づいて、カーネル間のプロデューサ・コンシューマ関係を自動的に同定すること。
- 実世界のアプリケーションにおいて、ループ、再帰、ライブラリ呼び出しを含む多様なカーネルタイプについて、本アプローチの有効性を検証すること。
提案手法
- 実行時に軽量で圧縮されたLLVMインライン命令をLLVM IRに挿入し、パフォーマンスオーバーヘッドを最小限に抑えた動的アプリケーショントレースを生成すること。
- 実行アフィニティに基づき、時間的にクラスタリングされた基本ブロックを候補カーネルとして特定する、対数的空間、線形時間のアルゴリズムを用いること。
- カーネル境界が意味的に正しいこと、実行フローと整合することを保証するための正当化ステップを適用すること。
- 検出されたカーネル内のメモリアクセスパターンを分析し、カーネルインスタンス間のプロデューサ・コンシューマ関係を推定すること。
- トレースの追跡性を保持しながらトレースサイズを削減するため、カスタム圧縮を施したUTF-8エンコード済みのキー値トレースフォーマットを採用すること。
- OFDMシステムにおける手作業で作成したテストプログラムとエキスパートが検証済みのカーネルを用いて、カーネル検出の正確性を検証すること。
実験結果
リサーチクエスチョン
- RQ1生産規模のアプリケーションに対して、最小限のパフォーマンスオーバーヘッド(時間遅延)とストレージコスト(トレースサイズ)で動的トレースを生成できるか?
- RQ2動的トレース解析のみを用いて、アノテーションのない非構造化コードから並列カーネルを正確に抽出できるか?
- RQ3提案された対数的空間、線形時間のカーネル検出アルゴリズムは、テラバイト規模のトレースを含む大規模ワークロードにスケーラブルか?
- RQ4静的解析やコードアノテーションなしで、抽出されたカーネルを用いてプロデューサ・コンシューマ関係を信頼性高く推定できるか?
- RQ5ループ、再帰、ライブラリ呼び出しを含む多様なカーネルパターンに、本カーネル検出手法はどれほど一般化できるか?
主な発見
- TraceAtlasは、9倍の時間遅延と1秒あたり1 MBのトレースデータを達成し、実世界のアプリケーションにおいて動的トレーシングを実用可能にする。
- カーネル抽出アルゴリズムは線形時間かつ対数的空間で実行され、テラバイト規模のトレースを含む大規模トレースの効率的処理を可能にする。
- 本ツールは、16の実世界のライブラリから392のアプリケーションを対象に、10,507件のカーネルインスタンスを検出しており、検証テストでは100%の正確性を達成している。
- 再帰やインターフェースライブラリを含む複雑なパターンを含む5つの手作業テストプログラムにおいて、期待されるすべてのカーネルが正しく同定された。
- Asanovicらが定義した13のカーネルアーキタイプのうち12つを検出しており、有限状態マシンのみが単一単位として検出されなかった。
- 本手法は、最先端のトレーシング技術に比べ、230倍の高速化と49倍のトレース生成効率向上を達成した。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。