[論文レビュー] Transformations of High-Level Synthesis Codes for High-Performance Computing
本論文は、FPGA などの空間アーキテクチャを対象とした高性能コンピューティング向けの高レベル合成(HLS)コードにおける最適化変換の包括的セットを提示する。パイプライン処理、メモリ、拡張性の変換を分類し、体系的なコード最適化とオープンソースのリファレンスカーネルを用いて、ナードなHLS実装と比較して最大29,950倍の高速化を実証した。
Spatial computing architectures promise a major stride in performance and energy efficiency over the traditional load/store devices currently employed in large scale computing systems. The adoption of high-level synthesis (HLS) from languages such as C++ and OpenCL has greatly increased programmer productivity when designing for such platforms. While this has enabled a wider audience to target spatial computing architectures, the optimization principles known from traditional software design are no longer sufficient to implement high-performance codes, due to fundamentally distinct aspects of hardware design, such as programming for deep pipelines, distributed memory resources, and scalable routing. To alleviate this, we present a collection of optimizing transformations for HLS, targeting scalable and efficient architectures for high-performance computing (HPC) applications. We systematically identify classes of transformations (pipelining, scalability, and memory), the characteristics of their effect on the HLS code and the resulting hardware (e.g., increasing data reuse or resource consumption), and the objectives that each transformation can target (e.g., resolve interface contention, or increase parallelism). We show how these can be used to efficiently exploit pipelining, on-chip distributed fast memory, and on-chip dataflow, allowing for massively parallel architectures. To quantify the effect of various transformations, we cover the optimization process of a sample set of HPC kernels, provided as open source reference codes. We aim to establish a common toolbox to guide both performance engineers and compiler engineers in tapping into the performance potential offered by spatial computing architectures using HLS.
研究の動機と目的
- ナードなHLSコードと高性能な空間アーキテクチャの間のパフォーマンスギャップを埋めるために、ハードウェアに配慮した最適化を同定すること。
- HPCワークロードに適用可能なHLSの変換を体系的に分類し、パイプライン処理、メモリ階層、スケーラビリティに焦点を当てる。
- HLSによって生成されたハードウェアを最適化するための実用的で再利用可能な変換ツールボックスを提供し、パフォーマンスエンジニアおよびコンパイラエンジニアを支援すること。
- ステンシル、行列乗算、N体問題を含むHPCカーネルのエンドツーエンド最適化を通じて、これらの変換の有効性を実証すること。
提案手法
- ハードウェアリソース使用量とパフォーマンスへの影響に基づき、パイプライン処理、メモリ最適化、スケーラビリティの3つのカテゴリに、主要なHLS変換を同定・分類する。
- 従来のCPU/GPUコンパイラ最適化をHLSにおける関連性に照らし、直接適用可能なもの、適応を要するもの、ハードウェアの違いにより無関係となるものを区別する。
- ループパイプライン処理、アレイパーティショニング、データ再利用の向上、インターフェース競合の解消などの変換を適用し、カーネルパフォーマンスを最適化する。
- PragmaベースのHLSツールフロー(Intel OpenCLおよびXilinx Vivado HLS)を用いて、実際のHPCカーネルにおける変換の実装と評価を行う。
- GitHubに最適化済みのリファレンスコードを公開し、パフォーマンス工学のベンチマークおよび教育的リソースとして活用する。
- 複数のHPCカーネルにおいて、ナードなHLS実装との相対的な速度向上を測定する指標を用いて、パフォーマンス向上を定量的に評価する。
実験結果
リサーチクエスチョン
- RQ1空間アーキテクチャ向けの高レベル合成をターゲットにした場合、従来のコンパイラ最適化のうち、どの程度が直接適用可能であり、どの程度が適応を要するのか?
- RQ2パイプライン処理、メモリ階層管理、データフロー最適化をHLSコードに体系的かつ効果的に適用する方法は何か?FPGA上で高性能を達成するために。
- RQ3HPCカーネルにハードウェアに配慮した変換のスイートを適用した場合、その累積的なパフォーマンスへの影響は何か?
- RQ4既存のHLSコンパイラは、これらの最適化をどの程度自動的に適用しているのか?また、ピークパフォーマンスを達成するために手動による変換が果たす役割は何か?
- RQ5パフォーマンスエンジニアおよびコンパイラ開発者を支援するための統一された変換ツールボックスを確立できるか?
主な発見
- ハードウェアに配慮した変換の適用により、HPCカーネルにおいてナードなHLS実装と比較して最大29,950倍の累積的高速化が達成された。
- ループ不変コード移動、ループ正規化、ループスケーリングなどの従来のソフトウェア最適化は、HLSの文脈でも依然として関連性があり、有益である。
- パイプライン処理、メモリパーティショニング、データ再利用の変換は、FPGAベースの空間アーキテクチャにおいて、スループットの向上とレイテンシの低減に顕著に寄与する。
- 関数メモ化、スカラーリプレースメントなどの多くの標準的なCPU/GPUコンパイラ最適化は、最小限の適応でHLSに直接適用可能である。
- スーパーコンパイル、グラフ分割、VLIWなどの多くの従来のコンパイラ変換は、合成時間の長さと命令レベル並列性の欠如のため、HLSでは実行不可能または無関係である。
- オープンソースのリファレンスコードは、HLSコンパイラが自動的にパフォーマンス向上を達成するわけではないことを示しており、意図的かつ的を絞った最適化が不可欠であることを裏付けている。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。