[論文レビュー] Toward Transparent Heterogeneous Systems
本論文では、実行時プロファイリングとJITコンパイルを用いて、動的にパフォーマンスが重要なコードブロックを特定し、それを透明に特殊処理装置にオフロードすることで、異種コンピューティングを自動的に最適化する、透明で自動化されたシステムを提示する。プロトタイプは開発者の関与なしに組み込みシステムで最大32倍の高速化を達成し、ワークロードの変化やハードウェア状態の変化にリアルタイムで適応することを示した。
Heterogeneous parallel systems are widely spread nowadays. Despite their availability, their usage and adoption are still limited, and even more rarely they are used to full power. Indeed, compelling new technologies are constantly developed and keep changing the technological landscape, but each of them targets a limited sub-set of supported devices, and nearly all of them require new programming paradigms and specific toolsets. Software, however, can hardly keep the pace with the growing number of computational capabilities, and developers are less and less motivated in learning skills that could quickly become obsolete. In this paper we present our effort in the direction of a transparent system optimization based on automatic code profiling and Just-In-Time compilation, that resulted in a fully-working embedded prototype capable of dynamically detect computing-intensive code blocks and automatically dispatch them to different computation units. Experimental results show that our system allows gains up to 32x in performance --- after an initial warm-up phase --- without requiring any human intervention.
研究の動機と目的
- 異種コンピューティングプラットフォームの複雑化と断片化が進む中で、開発者が高い学習曲線とツールチェーンの非互換性に直面する問題に対処すること。
- 急速に進化するハードウェアと、遅々として進むソフトウェア開発サイクルとの不一致を克服すること。
- アプリケーションコードの変更や開発者の専門知識を必要とせず、自動的かつ透明にパフォーマンス最適化を実現すること。
- 実行時に計算集約的な関数を検出し、専用プロセッサにオフロードできるプロトタイプシステムを構築すること。
- ワークロードパターンやハードウェア利用状況の変化にリアルタイムで動的に適応できることを示すこと。
提案手法
- 本システムは、異種組み込みプラットフォーム上で実行時、アプリケーションコードを実行・プロファイリングするためにLLVM JITフレームワークを利用している。
- 低レベルのパフォーマンス監視を通じて計算集約的な関数を特定するために、Linuxのperf_eventツールを活用している。
- プロファイリング結果に基づき、システムは自動的にDM3730チップのC64x+ DSPにホットなコードセグメントをディスpatchし、ARM Cortex-A8 CPUからオフロードしている。
- このアプローチはアプリケーションに対して完全に透明であり、ソースコードの変更や手動最適化を一切必要としない。
- システムはパフォーマンスを継続的に監視でき、ターゲットユニットでの実行が最適でなくなった場合にはオフロード決定を逆転させることも可能である。
- プロトタイプはREPTARプラットフォーム上で実装され、動的計算オフロード統合のためのVPEを統合し、OpenCVを用いて動画処理を実行している。
実験結果
リサーチクエスチョン
- RQ1開発者の入力なしに、実行中のアプリケーション内で計算集約的なコードセグメントを自動的に検出できるか?
- RQ2このようなシステムが、これらのセグメントを動的に専用プロセッサにオフロードすることでパフォーマンスを向上させられるか?
- RQ3自動オフロードは、手動最適化されたコードと同等のパフォーマンス向上をどの程度達成できるか?
- RQ4ワークロードパターンやハードウェア状態の変化に、システムはどのように対応するか?
- RQ5多様な計算ワークロードにわたり、顕著なパフォーマンス向上を達成しながらも、システムが透明性を維持できるか?
主な発見
- MatrixMultベンチマークでは最大31.9倍の高速化を達成し、ウォームアップ段階では32倍の向上が観察された。
- 画像処理プロトタイプでは、2次元畳み込みをDSPにオフロードした後、フレームレートが1.5 fpsから6 fpsに向上(4倍向上)。
- システムは自動的に最もコストの高い関数(畳み込み)を検出し、オフロードすることでARM CPU負荷を約50%削減した。
- 7.4倍(Complement)、6.3倍(DotProduct)、22.7倍(PatternMatch)など、複数のベンチマークで一貫したパフォーマンス向上を示した。
- FFTケースではDSPでの実行が最適でなくなったため、オフロードを逆転させる動的適応性を示し、0.7倍の高速化が観察された。
- 継続的なパフォーマンス監視と動的リソース割り当てにより、リアルタイム動画処理を成功裏に処理した。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。