isca13 study
TRANSCRIPT
ISCA’13 勉強会: Orchestrated Scheduling and Prefetching for GPGPUs 中村研究室 D3 薦田 登志矢
2013年 8月 22日 木曜日 ISCA'13 勉強会 1
紹介論文の概要
2013年 8月 22日 木曜日 ISCA'13 勉強会 2
• GPGPUと言えば, 涙ぐましいSW最適化の話ばかりなイメージ • 特にメモリ周り
à こういうSW最適化をしなくて済むように, HW屋さん側でも様々な研究がなされ始めている.
で, 今回の紹介論文. • 「Orchestrated Scheduling and Prefetching for GPGPUs」
Adwait Jog et al. ISCA’13 HW プリフェッチを用いて, GPGPUプログラムのメモリアクセス レイテンシ隠蔽を目指す.
(GP)GPUのアーキテクチャ • インオーダーSIMDコアが大量に詰まれており, 数千〜数万の スレッドを並列実行.
• 各コアは数十KBのL1Dキャッシュを持つ. • 今回の話は, 各コア上で並列スレッドの実行順序をHW側で工夫するとL1D
キャッシュへのプリフェッチが良く効くようになるという話.
2013年 8月 22日 木曜日 ISCA'13 勉強会 3
NVIDIA Kepler Architecture
SIMDとSIMT(GPGPU)の実行方式の違い • SIMD
• 一つの命令を複数のデータに対して, 並列実行. • ベクタ長を大きくすることは難しい
• PCが一つしかないため, メモリアクセスが発生すると全体が止まってしまうため.
Data
0 32 64 96 127
PC
Inst1 Inst2 Inst3
2013年 8月 22日 木曜日 ISCA'13 勉強会 4
128 way SIMD の模式図
SIMDとSIMT(GPGPU)の実行方式の違い
Data
0 32 64 96 127
PC warp1
Inst1 Inst2 Inst3
32 way SIMD
PC warp2
PC warp3
PC warp4
2013年 8月 22日 木曜日
• SIMT • 並列スレッド全体を固定長のwarpに分割. それぞれが, 独立のPCを持つ. • 並列スレッド数 (SIMDではベクタ長に相当) を大きくしても問題ない.
• PCが複数(warp ごとに)あるので, メモリアクセスによるストールは当該のwarp がストールするだけで良い.
• 複数のWarpの実行順序に任意性が存在する • Warp Scheduling Problem
Warp 1 Warp 2 Warp 3 Warp 4
ISCA'13 勉強会 5
単純な Warp Scheduling
Data
0 32 64 96 127
Inst1 Inst2 Inst3
1 2 3 4
5 6 7 8
12 11 10 9
…
memi 404 403 402 401
2013年 8月 22日 木曜日
Warp 1 Warp 2 Warp 3 Warp 4
実行順序
メモリアクセス (Long Latency)
ISCA'13 勉強会 6
• RR: Round Robin (商用GPUで良く使われる) • 全ての Warp が同時にメモリストールし, 計算可能な warp が
なくなることが多い. 従って, 実行性能が低い.
Warp Schedulingによるオーバーラップ実行
Data
0 32 64 96 127
Inst1 Inst2 Inst3
1 2
3 4
6 5
…
mem 202 201
Group 1
2013年 8月 22日 木曜日
Group 2
Warp 1 Warp 2 Warp 3 Warp 4
メモリアクセス (Long Latency)
ISCA'13 勉強会 7
実行順序
• Two-Level Warp Scheduling (Micro’11) • warp を グループ化し, グループ間でメモリアクセスが同時に発生しない
ように実行タイミングを調整することで, 性能向上.
Warp Schedulingによるオーバーラップ実行
Data
0 32 64 96 127
Inst1 Inst2 Inst3
1 2
3 4
6 5
…
mem 202 201
メモリアクセス (Long Latency)
Group 1
2013年 8月 22日 木曜日
Group 2
Warp 1 Warp 2 Warp 3 Warp 4
203 204
205 206
208 207
404 403
Group1のメモリ アクセスとオーバー ラップ実行することで 性能向上
ISCA'13 勉強会 8
実行順序
• Two-Level Warp Scheduling (Micro’11) • warp を グループ化し, グループ間でメモリアクセスが同時に発生しない
ように実行タイミングを調整することで, 性能向上.
0 1 2 3 4 5 6 7
SS
C
PV
C
KM
N
SP
MV
BFS
R
FFT
SC
P
BLK
FWT
JPE
G
GM
EA
N
Round-robin (RR) Two-level (TL) 理想的にプリフェッチが成功した場合のIPC向上率
2.20X 1.88X
2013年 8月 22日 木曜日
予備評価: GPGPUでプリフェッチを考えることにどれくらい意味があるのか?
ISCA'13 勉強会 9
• RR, TL ともにプリフェッチによって性能を向上できる余地は 大きい.
想定するプリフェッチアルゴリズム
• 様々なプリフェッチアルゴリズムが考えられるが, HWの実装 コストが小さい以下のアルゴリズムを想定.
• Spatial Locality Detection Based Prefetching 1. 連続するアドレスに対応するCache Lineをグループ化する.
• e.g. Cache Block 128B, 2つのCache Blockを一つのGroupにする
2. 各Group内に存在するCache Blockの半分がミスしたら, 残りのCache Blockをプリフェッチ
2013年 8月 22日 木曜日 ISCA'13 勉強会 10
Line1 Line2
Miss
Prefetch
Group of Cache Lines
TL Scheduling時のプリフェッチ動作とその問題点
• 同一グループ内のwarp が利用するデータしかプリフェッチされず, 性能が向上しない • 異なるWarp group は, 異なるCache Group内のデータを利用するた
め, プリフェッチ対象にならない.
2013年 8月 22日 木曜日 ISCA'13 勉強会 11
Data
0 32 64 96 127 …
mem 202 201
Group 1 Group 2
Warp 1 Warp 2 Warp 3 Warp 4
メモリアクセス (Long Latency)
Miss Prefetch
Prefetch が間に合わないので, 結局ミス. 性能向上効果はない à Schedulingの工夫で, 何とかならないか?
Cache Group
提案手法: Prefetch-aware warp (PA) scheduling
2013年 8月 22日 木曜日
Data
0 32 64 96 127
Inst1 Inst2 Inst3
1 2
3 4
6 5
…
mem 202 201
Group 1 Group 2
Warp 1 Warp 2 Warp 3 Warp 4
メモリアクセス (Long Latency)
メモリアクセス (Long Latency)
ISCA'13 勉強会 12
実行順序
• TL Scheduling における warp grouping の仕方を, ストライド方式に 変更
提案手法: Prefetch-aware warp (PA) scheduling
2013年 8月 22日 木曜日
Data
0 32 64 96 127
Inst1 Inst2 Inst3
1 2
3 4
6 5
…
mem 202 201
Group 1 Group 2
Warp 1 Warp 2 Warp 3 Warp 4
メモリアクセス (Long Latency)
メモリアクセス (Long Latency)
203
205
207
403
204
206
208
404
Group1のメモリ アクセスとオーバー ラップ実行することで 性能向上
ISCA'13 勉強会 13
実行順序
• TL Scheduling における warp grouping の仕方を, ストライド方式に 変更
PA Scheduling 時のプリフェッチ動作
• 異なるグループの warp が利用するデータをプリフェッチできる • 異なる warp group は, 異なる Cache Group内のデータを
利用しやすい.
2013年 8月 22日 木曜日 ISCA'13 勉強会 14
Data
0 32 64 96 127 …
mem 202 201
Warp 1 Warp 2 Warp 3 Warp 4
メモリアクセス (Long Latency)
Miss Prefetch
Cache Group
Group 1 Group 2
Miss Prefetch
PA Scheduling 時のプリフェッチ動作
• 異なるグループの warp が利用するデータをプリフェッチできる • 異なる warp group は, 異なる Cache Group内のデータを
利用しやすい.
2013年 8月 22日 木曜日 ISCA'13 勉強会 15
Data
0 32 64 96 127 …
mem 202 201
Warp 1 Warp 2 Warp 3 Warp 4
メモリアクセス (Long Latency)
Miss Prefetch
Cache Group
Group 1 Group 2
Miss Prefetch
403 404
Group2 のメモリ命令以前の命令実行中に プリフェッチが終了. L1D にヒットするため, 性能が向上する!
Hit Hit
評価環境 • GPGPU-Sim: GPUのサイクルレベルシミュレータ
• ハードウェア構成 • 30 SMs, 8 memory controllers, crossbar connected • 1300MHz, SIMT Width = 8, Max. 1024 threads/core • 32 KB L1 データキャッシュ, 8 KB Texture and Constant Caches • L1 Prefetcher : Locality Detector based Prefetcher • GDDR3@1100MHz
• ベンチマークアプリ • Mapreduce Applications • Rodinia • Parboil • NVIDIA CUDA SDK – GPGPU Applications
2013年 8月 22日 木曜日 ISCA'13 勉強会 16
プリフェッチの正確さの評価
85% 89% 90%
0%
20%
40%
60%
80%
100% 89% 86% 69%
0%
20%
40%
60%
80%
100%
Fraction of Late Prefetches Prefetch Accuracy
RR+Prefetching TL+Prefetching PA+Prefetching
2013年 8月 22日 木曜日
• PA Scheduling によって, 間に合わないプリフェッチリクエストの数が減少.
ISCA'13 勉強会 17
プリフェッチによるミス率の減少幅
• 間に合うプリフェッチが増えたことで, L1 D キャッシュのミス率削減率が, 大幅に増加.
2013年 8月 22日 木曜日
2% 4%
16%
0%
5%
10%
15%
20%
Reduction in L1D Miss Rates
RR+Prefetching TL+Prefetching PA+Prefetching
ISCA'13 勉強会 18
性能評価 (IPC向上率) • Round Robin+ Prefetching に対して 25% 性能向上 • Two Level Scheduling + Prefetching に対して 7% 性能向上
2013年 8月 22日 木曜日
0.5
1
1.5
2
2.5
3
SS
C
PV
C
KM
N
SP
MV
BFS
R
FFT
SC
P
BLK
FWT
JPE
G
GM
EA
N
RR+Prefetching TL TL+Prefetching Prefetch-aware (PA) PA+Prefetching
1.01 1.16 1.19 1.20 1.26
ISCA'13 勉強会 19