Exocompilation for Productive Programming of Hardware Accelerators
- yamaguchi1024 (Yuka Ikarashi) · GitHub
- MIT PhDの人が作っているHA(ハードウェアアクセラレータ)用最適化言語, CPU SIMDops(ex. AVX-512)にも変換してくれる?
- PythonからCに変換している?
- 行列積のサンプル, Vectorizeされている?
- MIT PhDの人が作っているHA(ハードウェアアクセラレータ)用最適化言語, CPU SIMDops(ex. AVX-512)にも変換してくれる?
- Hecatia に通づる所あるな
- コード最適化をコンパイラではなくパフォーマンスエンジニアにさせるためのDSL言語
- https://dl.acm.org/doi/pdf/10.1145/3519939.3523446
Abstract
- 高性能なカーネルライブラリは不可欠です
- だが, HWの進化に伴いコンパイラの拡張が難しい
- 自動最適化では十分な性能が得られないため、低レベルのC言語やアセンブリ言語で、手作業で最適化されているのが現状です。
- Exoは
- ターゲットに特化したコード生成のサポートと最適化ポリシーをユーザレベルのコードに外部化する、エキソコンパイルの原則に基づく新しいプログラミング言語
- カスタムハードウェア命令、専用メモリ、およびアクセラレータの設定状態をユーザライブラリで定義することが可能
- ユーザスケジューリングという考え方をベースに、ハードウェアのマッピングや最適化の決定を外部化するもの
- スケジュールは言語内で書き換え可能なものとして定義され、これらの変換を通じてプログラムの等価性とメモリ安全性を保証する一連の効果分析を開発
- ユーザスケジューリングという考え方をベースに、ハードウェアのマッピングや最適化の決定を外部化するもの
- 組込みニューラルアクセラレータとAVX-512拡張を備えたx86の両方において、それぞれ数十行のコードで、最先端の行列乗算およびCNNカーネルを迅速に開発できることを示す
3. The exo language system
3.3 scheduring rewrites
todo 2023-01-18 見る
4. Formal Core Language
5. Effect Analysis & Transformation of Programs
5.8 Loop Rewrites
- Loop reordering
- Loop fusion & fission
- Loop removal
6. Contextual Analyses
7. Case Studies
8. Related Work
User-Schedulable Languages
Instruction Selection
伝統的なinstruction selectionは
- 局所的なパターンマッチで置き換えること
- TVM: tensorization
Program Analysis
- loop transformations: The program dependence graph and its use in optimization
- Polyhedral Model に対照して, effect typesに基づく
- 両者は対立しない