isca13 study

20
ISCA’13 勉強会: Orchestrated Scheduling and Prefetching for GPGPUs 中村研究室 D3 薦田 登志矢 2013822木曜日 ISCA'13 勉強会 1

Upload: toshiya-komoda

Post on 04-Aug-2015

292 views

Category:

Documents


0 download

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

まとめ

• GPGPU アーキテクチャのHW最適化のお話

• やはり, GPGPUはメモリがボトルネック. コア内での並列 スレッドの実行順序を工夫することで, 既存プリフェッチ手法の 効果を高めることに成功. •  Round Robin+ Prefetching に対して 25% 性能向上 •  Two Level Scheduling + Prefetching に対して 7% 性能向上

• プリフェッチの効果を高めるための, スレッドスケジューリング という発想が面白い.

2013年 8月 22日 木曜日 ISCA'13 勉強会 20