Exocompilation for Productive Programming of Hardware Accelerators

  • yamaguchi1024 (Yuka Ikarashi) · GitHub
    • MIT PhDの人が作っているHA(ハードウェアアクセラレータ)用最適化言語, CPU SIMDops(ex. AVX-512)にも変換してくれる?
      • PythonからCに変換している?
    • 行列積のサンプル, Vectorizeされている?
  • Hecatia に通づる所あるな

paper optimization

2022-07-20

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

User-Schedulable Languages

Instruction Selection

伝統的なinstruction selectionは

Program Analysis