SlideShare a Scribd company logo
1 of 36
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

What's hot

自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会Hirotaka Kawata
 
本当にわかる Spectre と Meltdown
本当にわかる Spectre と Meltdown本当にわかる Spectre と Meltdown
本当にわかる Spectre と MeltdownHirotaka Kawata
 
できる!trema-switch
できる!trema-switchできる!trema-switch
できる!trema-switchHiroaki Kawai
 
バイナリより低レイヤな話 (プロセッサの心を読み解く) - カーネル/VM探検隊@北陸1
バイナリより低レイヤな話 (プロセッサの心を読み解く) - カーネル/VM探検隊@北陸1バイナリより低レイヤな話 (プロセッサの心を読み解く) - カーネル/VM探検隊@北陸1
バイナリより低レイヤな話 (プロセッサの心を読み解く) - カーネル/VM探検隊@北陸1Hirotaka Kawata
 
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門Hirotaka Kawata
 
最近の身の回りの電力事情
最近の身の回りの電力事情最近の身の回りの電力事情
最近の身の回りの電力事情Kenichiro MATOHARA
 
Lagopus performance
Lagopus performanceLagopus performance
Lagopus performanceMasaru Oki
 
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくばHirotaka Kawata
 

What's hot (10)

Nbug201503
Nbug201503Nbug201503
Nbug201503
 
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
 
本当にわかる Spectre と Meltdown
本当にわかる Spectre と Meltdown本当にわかる Spectre と Meltdown
本当にわかる Spectre と Meltdown
 
できる!trema-switch
できる!trema-switchできる!trema-switch
できる!trema-switch
 
ZynqMP勉強会
ZynqMP勉強会ZynqMP勉強会
ZynqMP勉強会
 
バイナリより低レイヤな話 (プロセッサの心を読み解く) - カーネル/VM探検隊@北陸1
バイナリより低レイヤな話 (プロセッサの心を読み解く) - カーネル/VM探検隊@北陸1バイナリより低レイヤな話 (プロセッサの心を読み解く) - カーネル/VM探検隊@北陸1
バイナリより低レイヤな話 (プロセッサの心を読み解く) - カーネル/VM探検隊@北陸1
 
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門
 
最近の身の回りの電力事情
最近の身の回りの電力事情最近の身の回りの電力事情
最近の身の回りの電力事情
 
Lagopus performance
Lagopus performanceLagopus performance
Lagopus performance
 
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
 

Similar to Boost study14

20apr2012 kernelvm7-main
20apr2012 kernelvm7-main20apr2012 kernelvm7-main
20apr2012 kernelvm7-mainShotaro Uchida
 
CUDAプログラミング入門
CUDAプログラミング入門CUDAプログラミング入門
CUDAプログラミング入門NVIDIA Japan
 
katagaitaictf7_hw_ysk
katagaitaictf7_hw_yskkatagaitaictf7_hw_ysk
katagaitaictf7_hw_yskysk256
 
GPGPUによるパーソナルスーパーコンピュータの可能性
GPGPUによるパーソナルスーパーコンピュータの可能性GPGPUによるパーソナルスーパーコンピュータの可能性
GPGPUによるパーソナルスーパーコンピュータの可能性Yusaku Watanabe
 
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2Computational Materials Science Initiative
 
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテムSmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテムSmartNews, Inc.
 
PSoCまつり「PSoCの美味しい料理法」
PSoCまつり「PSoCの美味しい料理法」PSoCまつり「PSoCの美味しい料理法」
PSoCまつり「PSoCの美味しい料理法」betaEncoder
 
1070: CUDA プログラミング入門
1070: CUDA プログラミング入門1070: CUDA プログラミング入門
1070: CUDA プログラミング入門NVIDIA Japan
 
最近遊んだLinuxボードたち
最近遊んだLinuxボードたち最近遊んだLinuxボードたち
最近遊んだLinuxボードたちt n
 
Maxwell と Java CUDAプログラミング
Maxwell と Java CUDAプログラミングMaxwell と Java CUDAプログラミング
Maxwell と Java CUDAプログラミングNVIDIA Japan
 
NVIDIA Japan Seminar 2012
NVIDIA Japan Seminar 2012NVIDIA Japan Seminar 2012
NVIDIA Japan Seminar 2012Takuro Iizuka
 
GPGPU deいろんな問題解いてみた
GPGPU deいろんな問題解いてみたGPGPU deいろんな問題解いてみた
GPGPU deいろんな問題解いてみたRyo Sakamoto
 
Movidius Neral Compute Stickを使ってみた
Movidius Neral Compute Stickを使ってみたMovidius Neral Compute Stickを使ってみた
Movidius Neral Compute Stickを使ってみたNISHIMOTO Keisuke
 
SDN Japan: ovs-hw
SDN Japan: ovs-hwSDN Japan: ovs-hw
SDN Japan: ovs-hwykuga
 

Similar to Boost study14 (20)

20apr2012 kernelvm7-main
20apr2012 kernelvm7-main20apr2012 kernelvm7-main
20apr2012 kernelvm7-main
 
CUDAプログラミング入門
CUDAプログラミング入門CUDAプログラミング入門
CUDAプログラミング入門
 
retrobsd-2012-JUL-07 at JNUG BSD BoF
retrobsd-2012-JUL-07 at JNUG BSD BoFretrobsd-2012-JUL-07 at JNUG BSD BoF
retrobsd-2012-JUL-07 at JNUG BSD BoF
 
20140310 fpgax
20140310 fpgax20140310 fpgax
20140310 fpgax
 
POWER8サーバでMariaDBベンチマーク
POWER8サーバでMariaDBベンチマークPOWER8サーバでMariaDBベンチマーク
POWER8サーバでMariaDBベンチマーク
 
katagaitaictf7_hw_ysk
katagaitaictf7_hw_yskkatagaitaictf7_hw_ysk
katagaitaictf7_hw_ysk
 
GPGPUによるパーソナルスーパーコンピュータの可能性
GPGPUによるパーソナルスーパーコンピュータの可能性GPGPUによるパーソナルスーパーコンピュータの可能性
GPGPUによるパーソナルスーパーコンピュータの可能性
 
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
 
不揮発WALバッファ
不揮発WALバッファ不揮発WALバッファ
不揮発WALバッファ
 
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテムSmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
 
PSoCまつり「PSoCの美味しい料理法」
PSoCまつり「PSoCの美味しい料理法」PSoCまつり「PSoCの美味しい料理法」
PSoCまつり「PSoCの美味しい料理法」
 
1070: CUDA プログラミング入門
1070: CUDA プログラミング入門1070: CUDA プログラミング入門
1070: CUDA プログラミング入門
 
最近遊んだLinuxボードたち
最近遊んだLinuxボードたち最近遊んだLinuxボードたち
最近遊んだLinuxボードたち
 
Maxwell と Java CUDAプログラミング
Maxwell と Java CUDAプログラミングMaxwell と Java CUDAプログラミング
Maxwell と Java CUDAプログラミング
 
NVIDIA Japan Seminar 2012
NVIDIA Japan Seminar 2012NVIDIA Japan Seminar 2012
NVIDIA Japan Seminar 2012
 
Kernel vm-2014-05-25
Kernel vm-2014-05-25Kernel vm-2014-05-25
Kernel vm-2014-05-25
 
GPGPU deいろんな問題解いてみた
GPGPU deいろんな問題解いてみたGPGPU deいろんな問題解いてみた
GPGPU deいろんな問題解いてみた
 
Movidius Neral Compute Stickを使ってみた
Movidius Neral Compute Stickを使ってみたMovidius Neral Compute Stickを使ってみた
Movidius Neral Compute Stickを使ってみた
 
[DL Hacks]FPGA入門
[DL Hacks]FPGA入門[DL Hacks]FPGA入門
[DL Hacks]FPGA入門
 
SDN Japan: ovs-hw
SDN Japan: ovs-hwSDN Japan: ovs-hw
SDN Japan: ovs-hw
 

Boost study14