More Related Content
Similar to [Survey] Diesel: DSL for Linear Algebra and Neural Net Computations on GPUs (20)
[Survey] Diesel: DSL for Linear Algebra and Neural Net Computations on GPUs
- 1. Diesel: DSL for Linear Algebra and
Neural Net Computations on GPUs
XX for ML 論文読み会 #1
@no_maddo
注:本文中の図はURLが注記されているものを除き、すべて本論文からのものです
- 3. 論文概要
• MAPL 2018 (PLDIの併設ワークショップ)
• DSLをPolyhedralを用いたコンパイラ最適化で
NVIDIA GPU向け数値計算カーネルを高速化
- 9. Polyhedral Model: 1
• プログラム最適化のフレームワーク
• Static Control Partsに対して最適化可能
– forループに定数ストライド
– if文
– loop-boundがaffine
- 10. Polyhedral Model: 2
• 記法:
– Set: [n] -> {S[i]: 0 <= i < n}
– Map: [n] -> {S1[i] -> S2[i]: 0 <= i, j<n and j=i+1}
定義に必要な
パラメータのリスト 1次元の集合
- 11. Polyhedral Model: 3
for (i=0; i<N; i++)
for (j=0; j<N; j++)
for (k=0; k<N; k++)
S1: C[i][j] += A[i][k] * B[k][j]
• Iteration domain
– 𝐷𝑆1 ≔ 𝑁 → {𝑆1 𝑖, 𝑗, 𝑘 : 0 ≤ 𝑖, 𝑗, 𝑘 < 𝑁}
• Access function
– ≔ 𝑁 → {𝑆1 𝑖, 𝑗, 𝑘 → 𝐴 𝑖, 𝑘 : 0 ≤ 𝑖, 𝑗, 𝑘 < 𝑁}
- 12. Polyhedral Model: 4
for (i=0; i<N; i++)
for (j=0; j<N; j++)
for (k=0; k<N; k++)
S1: C[i][j] += A[i][k] * B[k][j]
• Scheduling Function
– Sのインスタンス𝑠1が𝑠2に先行 𝑖𝑓𝑓 𝜙 𝑆 𝑠1 < 𝜙 𝑆 𝑠2 ;
辞書的で比較
– 𝜙 𝑆1 ≔ 𝑁 → {𝑆1 𝑖, 𝑗, 𝑘 → 𝑖, 𝑗, 𝑘 ∶ 0 ≤ 𝑖, 𝑗, 𝑘 < 𝑁}
• Data dependencies
– ≔ 𝑁 → {𝑆1 𝑖, 𝑗, 𝑘 →
𝑆1 𝑖, 𝑗, 𝑘 + 1 : 0 ≤ 𝑖, 𝑗 < 𝑁 𝑎𝑛𝑑 0 ≤ 𝑘 < 𝑁 − 1 }
- 18. Dieselの処理の流れ
• Diesel言語をパース
• DAGに変換
• Polyhedral IRに変換
– Iteration Domainを計算
• 同じく形状情報を伝搬させて計算
– Access functionを求める
• Iteration Vector[i,j,k]のときにRead/Writeでどこを触るか
– データ依存関係を解析
• 各アーキごとに変換
- 19. Scheduler 1
• PlutoのAlgorithmで最初のスケジュール
– ある種の“距離”を最小化し、Data再利用を促進
• Tiling
– データ局所性改善のため
– threadとthreadblockの分散のため
• Memory Promotion
– global memoryを使っているところを
shared memory, registerに変更
• Software Pipelining
- 20. Scheduler 2
• Software Pipelining
– ループを跨いだスケジューリング
– load_to_shared(); sync(); compute(); sync()
の繰り返しを展開して無駄なsyncをへらす
• Code Generation
– 最後にschedule treeでスケジューリング
– schedule tree:
ASTからコード生成するときに凸多面体解析の
情報を木にして扱う手法
- 26. 読んだ感想
• “堅い”技術で作られたコンパイラ
– Workshop paperだしそんなに新規性はなさそう?
• Tensor Compressionと共通の部分が多い
– Range Inferenceして最後は Schedule Tree
• Kernel fusionの結果は驚き
– bias, ReLUの融合はいかにもメモリ帯域を節約で
きる
- 29. 参考文献
• [1] On Optimizing Operator Fusion Plans for LargeScale
Machine Learning in SystemML
• [2] On Optimizing Machine Learning Workloads via Kernel
Fusion
• 本論文で引用されていたものは省略しました