狠狠撸

狠狠撸Share a Scribd company logo
Boost.勉強会 #14

魔導書 Vol.3 発売記念
GPGPUの今とこれから
藤田 典久, @fjnli, id:fjnl

1
とりあえず…
? 寝坊しましたすいません…
? Boostでません
? C++? 知りませんね…

2
魔導書 Vol.3 出ました!!

http://longgate.co.jp/books/grimoire-vol3.html
魔導書 Vol.3 出ました!!

書きました

http://longgate.co.jp/books/grimoire-vol3.html
魔導書 Vol.3 出ました!!
? OpenACCの話を書きました
– あまり込み入った話はありません

? OpenACC とは
– アクセラレータ向けの言語仕様
– C/C++/Fortranのコードにpragmaを挿入することで
コンパイラに指示をする
– GPUだけに限定される仕様ではない
– CPU向けコードも作れる
#pragma acc kernels
for (int i = 0; i < 100; ++i) {
a[i] = a[i] + b[i];
}

5
魔導書 Vol.3 出ました!!
? OpenACCに関する詳細は魔導書を参照してく
ださい
? ちょっと微妙なネタ選択だった気もする
– 無料で使える実装がない
– 商用コンパイラの体験版程度
– GCCがサポートする計画がある様子
– 仕様書は公開されており、誰でも読めます
6
---宣伝枠終了---

7
アクセラレータとは
? 日本語では「演算加速装置」とも呼ばれる
– 演算を支援する装置。速いは正義
– CPUでは性能?効率面で不十分な分野で利用
される

? GPU (Graphics Processing Unit)
– 特に 3D Graphics

? ネットワークインターフェイス (NIC)
? 動画のデコーダー ? エンコーダー
8
汎用?
特化
? 昔のGPU
? NIC
? 動画のエンコーダ
? RAIDカード

決められた事しか出来ない

汎用
? 最近のGPU
? Intel Xeon Phi
? (Cell)

ある程度自由に
プログラミングできる

9
汎用?
特化
? 昔のGPU
? NIC
? 動画のエンコーダ
? RAIDカード

決められた事しか出来ない

今回のターゲットは
こちら側

汎用
? 最近のGPU
? Intel Xeon Phi
? (Cell)

ある程度自由に
プログラミングできる

10
イマドキのアクセラレータ
? GPU
–
–
–
–

NVIDIA, AMD, Intel
特にNVIDIA GPU
汎用性を獲得したのは、ここ4、5年の事
画面出力機能のないGPU(?)すらある

? Intel Xeon Phi
– Intel MIC (マイク, Meny Integrated Core) とも
– GPUの対抗馬
– 画面出力機能は元々ない
11
補足
? AMD GPUの事をあまり知りません
? 今後の説明はNVIDIA GPUを例にしています
? 大枠は変わらないはずです?

12
イマドキのアクセラレータ
? スモールコア ? メニーコア
– (CPUと比べると) 遅くて
– (CPUと比べると) 小さくて多数のコアがある
– (CPUと比べると) メモリ帯域重視
– データ並列向け

? 増設カードの形で提供されている
– アクセラレータ単体では動かせない
13
イマドキのアクセラレータ
CPU

GPU

MIC

メーカー

Intel

NVIDIA

Intel

モデル

Xeon E5-2697v2

K40

7120P

コアクロック

3500MHz
(Turbo)

875MHz
(Turbo)

1330MHz
(Turbo)

物理コア数

12

2880

61

SIMD幅(4

256bit

N/A

512bit

倍精度FLOPS(1

336GFLOPS

1430GFLOPS

1298GFLOPS

メモリ容量

768GB max.(3

12GB(2

16GB

メモリ帯域

59.7GB/s(3

288GB/s(2

352GB/s

TDP

130W

235W

300W

1: FLoating Operations Per Second, 1秒間に何回演算できる性能があるか
京コンピュータは11,280TFLOPSあります(Peak)
2: ECC ONにすると12.5%減少
3: 使用するメモリモジュールに依存
4: 次ページにて説明
14
イマドキのアクセラレータ
CPU

GPU

MIC

メーカー

Intel

NVIDIA

Intel

モデル

Xeon E5-2697v2

K40

7120P

コアクロック

3500MHz
(Turbo)

875MHz
(Turbo)

1330MHz
(Turbo)

物理コア数

12

2880

61

SIMD幅(4

256bit

N/A

512bit

倍精度FLOPS(1

336GFLOPS

1430GFLOPS

1298GFLOPS

メモリ容量

768GB max.(3

12GB(2

16GB

メモリ帯域

59.7GB/s(3

288GB/s(2

352GB/s

TDP

130W

235W

300W

1: FLoating Operations Per Second, 1秒間に何回演算できる性能があるか
京コンピュータは11,280TFLOPSあります(Peak)
2: ECC ONにすると12.5%減少
3: 使用するメモリモジュールに依存
4: 次ページにて説明
15
イマドキのアクセラレータ
CPU

GPU

MIC

メーカー

Intel

NVIDIA

Intel

モデル

Xeon E5-2697v2

K40

7120P

コアクロック

3500MHz
(Turbo)

875MHz
(Turbo)

1330MHz
(Turbo)

物理コア数

12

2880

61

SIMD幅(4

256bit

N/A

512bit

倍精度FLOPS(1

336GFLOPS

1430GFLOPS

1298GFLOPS

メモリ容量

768GB max.(3

12GB(2

16GB

メモリ帯域

59.7GB/s(3

288GB/s(2

352GB/s

TDP

130W

235W

300W

1: FLoating Operations Per Second, 1秒間に何回演算できる性能があるか
京コンピュータは11,280TFLOPSあります(Peak)
2: ECC ONにすると12.5%減少
3: 使用するメモリモジュールに依存
4: 次ページにて説明
16
イマドキのアクセラレータ
CPU

GPU

MIC

メーカー

Intel

NVIDIA

Intel

モデル

Xeon E5-2697v2

K40

7120P

コアクロック

3500MHz
(Turbo)

875MHz
(Turbo)

1330MHz
(Turbo)

物理コア数

12

2880

61

SIMD幅(4

256bit

N/A

512bit

倍精度FLOPS(1

336GFLOPS

1430GFLOPS

1298GFLOPS

メモリ容量

768GB max.(3

12GB(2

16GB

メモリ帯域

59.7GB/s(3

288GB/s(2

352GB/s

TDP

130W

235W

300W

1: FLoating Operations Per Second, 1秒間に何回演算できる性能があるか
京コンピュータは11,280TFLOPSあります(Peak)
2: ECC ONにすると12.5%減少
3: 使用するメモリモジュールに依存
4: 次ページにて説明
17
イマドキのアクセラレータ
CPU

GPU

MIC

メーカー

Intel

NVIDIA

Intel

モデル

Xeon E5-2697v2

K40

7120P

コアクロック

3500MHz
(Turbo)

875MHz
(Turbo)

1330MHz
(Turbo)

物理コア数

12

2880

61

SIMD幅(4

256bit

N/A

512bit

倍精度FLOPS(1

336GFLOPS

1430GFLOPS

1298GFLOPS

メモリ容量

768GB max.(3

12GB(2

16GB

メモリ帯域

59.7GB/s(3

288GB/s(2

352GB/s

TDP

130W

235W

300W

1: FLoating Operations Per Second, 1秒間に何回演算できる性能があるか
京コンピュータは11,280TFLOPSあります(Peak)
2: ECC ONにすると12.5%減少
3: 使用するメモリモジュールに依存
4: 次ページにて説明
18
イマドキのアクセラレータ
CPU

GPU

MIC

メーカー

Intel

NVIDIA

Intel

モデル

Xeon E5-2697v2

K40

7120P

コアクロック

3500MHz
(Turbo)

875MHz
(Turbo)

1330MHz
(Turbo)

物理コア数

12

2880

61

SIMD幅(4

256bit

N/A

512bit

倍精度FLOPS(1

336GFLOPS

1430GFLOPS

1298GFLOPS

メモリ容量

768GB max.(3

12GB(2

16GB

メモリ帯域

59.7GB/s(3

288GB/s(2

352GB/s

TDP

130W

235W

300W

1: FLoating Operations Per Second, 1秒間に何回演算できる性能があるか
京コンピュータは11,280TFLOPSあります(Peak)
2: ECC ONにすると12.5%減少
3: 使用するメモリモジュールに依存
4: 次ページにて説明
19
SIMD
? Single Instruction
Multiple Data
– 1つの命令で複数のデータ
に対して演算を行う
– MMX, SSE, AVX, Altivec,
NEON等
– 各データに対して同じ演
算しか出来ない

10

20

30

40

1

2

3

4

11

22

33

44

? 性能とのトレードオフ

– 256bit=8float, 4double
– 512bit=16float, 8double
20
SIMT
? K40は2880 CUDA Coreを持つが、2880のコア
が自由自在に動けるわけではない
– 32スレッドが協調動作する
– 32-wayのSIMDのような動作をする

? NVIDIAはこのような動作をSIMT (Single
Instruction Multiple Thread) と表現している

21
ここまでのまとめ
? 並列処理はすごく速い
– シングルスレッド性能は高くない
– クロックの低さ以上に遅いと考える
– Compare and swapあるのでLock-freeしましょう
? 前世代のNVIDA GPUはAtomic Ops遅いですけど…

? メモリ容量が少ない
– 下位モデルはさらに少ない
22
イマドキのアクセラレータ
QPI (Intel)
HyperTransport (AMD)

Network
CPU1

CPU2

HDD
PCI Express
Gen2 or Gen3 16レーン
G
P
U
1

G
P
U
2

23
自立性
? 現在のアクセラレータは子機として動作する
? 親機(CPU)がいないと起動できない
? GPU
– GPUの自立動作はできない
– CPUの指示に従って動作する

? MIC
– MICの自立動作ができる (!= MICだけで使える)
– 実はLinuxカーネルが動いている
– GPUのような動作も可能
24
プログラミング
? CUDA C, C++ (NVIDIA)
– C/C++ベースに、若干の独自構文の追加

? Intel C, C++, Fortran (MIC)
– MICのための各種サポート

? OpenCL
– 汎用の仕様, C99ベースの言語で記述する

? OpenACC
– 汎用の仕様, pragmaの挿入で記述する
25
誰が汎用アクセラレータを使うのか
? 科学技術計算
– 演算性能があればあるだけ使う分野
– (京コンピュータはCPUのみでアクセラレータは
使っていない)

? ゲーム
– 物理演算
– AI
– エフェクト
26
誰が汎用アクセラレータを使うのか
? ゲームでは重要度が増してきている
? PS4/Xbox Oneの存在
? PS4とXBOX OneはAMDのx86 CPUと、Radeon
ベースのGPUを使用している
– もちろんGPGPUにも対応している

? NVIDIAのPhysX

27
現在のアクセラレータの
問題点
? 一部分野を除いて流行っていない
– プログラミングコスト
? 費用対効果が疑問
? ライブラリレベルでの対応はありえる

– 移植性
? 全てのPCにGPGPU対応のGPUがあるとは限らない
? メーカ間?世代間の非互換

– 加速しない
? 万能な銀の弾丸ではない
? 小回りがきかない
28
小回りがきかない
? CPU向きの処理はCPUで、
GPU向けの処理はGPUで行
いたい

~60GB/s
CPU1

mem

? 現状のシステムではオー
バーヘッドがあり難しい
– PCI Expressのレイテンシ
– PCI Expressの帯域
– メモリが断絶している事

16GB/s (片)
(PCIe Gen3 x16)
G
P
U
1

mem
200~300GB/s

29
小回りがきかない
? I/Oは基本的にできない
– CPUに任せる (1)
– 遅い

Network

? 最近、GPUメモリを直接転送
できるネットワークが登場
– Infiniband (2)
– GPU Direct for RDMA

CPU1
HDD

(1)
(2)

G
P
U
1

30
アクセラレータは長生きするのか
? しないと予想
– より広い問題に対応できる方法に移行してい
く
– でも、並列思考はなくならない

? CPUのクロックは頭打ち
– ここ数年動作周波数は向上していない(定格)
– 高々4GHz程度、メインストリームは3GHz程度
– かわりに、コア数やSIMD幅やGPU等の付加機能
が増えている
31
APU
? AMDがAPUという製品を出している
– コードネーム Kaveri, A10-7850K等
– Kaveriは3世代目APU (Triniry, Richland)
– (PS4, XboxもAPUであるが、詳細は非公開)

? AMDのCPUとAMDのGPUを密に結合したもの
– ようやく、CPUとGPUのメモリ統合を実現 (hUMA)
– CPUで扱っているポインタをそのままGPUに渡して
データアクセスが可能
32
APU
? Kaveriは期待できる製品だが…
? 対応ソフトウエアがまだあまりない
? メモリ周辺がCPUのままである
– 演算性能のわりにメモリ帯域が足りない
– コンシューマ向けモデルであるため、メモリが2ch
しかない
– 38.4GB/s max. (DDR3-2400, 2ch)

33
Hyper Memory Cube (HMC)
? メモリ周辺が厳しいのは、カード型も同じ
? 次世代のメモリ規格 HMC
– メモリを積み重ねてCPUの近くにおくことで帯域を
確保

? NVIDIA GPUの次の世代 Volta で採用すると
NVIDIAが表明
– 2015年っぽい?

34
APUまとめ
? 下地が揃っていたのがAMD
– 昔からのx86 CPUとATI由来のGPU
– メモリ力が足りない

? NVIDIAはCPUがなかった
– 次世代: ARM + GPU (Denver)

? IntelはGPUが弱かった
– 次世代: Xeon + Phi (?)

35
まとめ
? アクセラレータプログラミングが広く普及する
とは思えない
– でも、制限の厳しい並列プログラミングは、なくな
らないと予想

? 演算性能ではなくメモリが辛い
– 圧縮表現
– キャッシュに当ててんのよ プログラミング

36

More Related Content

Boost study14