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を挿入することで
コンパ...
魔導書 Vol.3 出ました!!
• OpenACCに関する詳細は魔導書を参照してく
ださい
• ちょっと微妙なネタ選択だった気もする
– 無料で使える実装がない
– 商用コンパイラの体験版程度
– GCCがサポートする計画がある様子
– 仕様...
---宣伝枠終了---

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

• GPU (Graphics Processing Unit)
– 特に 3D Gr...
汎用?
特化
• 昔のGPU
• NIC
• 動画のエンコーダ
• RAIDカード

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

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

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

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

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

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

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

ある程度自由に
プロ...
イマドキのアクセラレータ
• GPU
–
–
–
–

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

• Intel Xeon Phi
– In...
補足
• AMD GPUの事をあまり知りません
• 今後の説明はNVIDIA GPUを例にしています
• 大枠は変わらないはずです?

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

• 増設カードの形で提供されている...
イマドキのアクセラレータ
CPU

GPU

MIC

メーカー

Intel

NVIDIA

Intel

モデル

Xeon E5-2697v2

K40

7120P

コアクロック

3500MHz
(Turbo)

875MHz
(...
イマドキのアクセラレータ
CPU

GPU

MIC

メーカー

Intel

NVIDIA

Intel

モデル

Xeon E5-2697v2

K40

7120P

コアクロック

3500MHz
(Turbo)

875MHz
(...
イマドキのアクセラレータ
CPU

GPU

MIC

メーカー

Intel

NVIDIA

Intel

モデル

Xeon E5-2697v2

K40

7120P

コアクロック

3500MHz
(Turbo)

875MHz
(...
イマドキのアクセラレータ
CPU

GPU

MIC

メーカー

Intel

NVIDIA

Intel

モデル

Xeon E5-2697v2

K40

7120P

コアクロック

3500MHz
(Turbo)

875MHz
(...
イマドキのアクセラレータ
CPU

GPU

MIC

メーカー

Intel

NVIDIA

Intel

モデル

Xeon E5-2697v2

K40

7120P

コアクロック

3500MHz
(Turbo)

875MHz
(...
イマドキのアクセラレータ
CPU

GPU

MIC

メーカー

Intel

NVIDIA

Intel

モデル

Xeon E5-2697v2

K40

7120P

コアクロック

3500MHz
(Turbo)

875MHz
(...
SIMD
• Single Instruction
Multiple Data
– 1つの命令で複数のデータ
に対して演算を行う
– MMX, SSE, AVX, Altivec,
NEON等
– 各データに対して同じ演
算しか出来ない

10...
SIMT
• K40は2880 CUDA Coreを持つが、2880のコア
が自由自在に動けるわけではない
– 32スレッドが協調動作する
– 32-wayのSIMDのような動作をする

• NVIDIAはこのような動作をSIMT (Singl...
ここまでのまとめ
• 並列処理はすごく速い
– シングルスレッド性能は高くない
– クロックの低さ以上に遅いと考える
– Compare and swapあるのでLock-freeしましょう
• 前世代のNVIDA GPUはAtomic Ops...
イマドキのアクセラレータ
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だけで使える...
プログラミング
• CUDA C, C++ (NVIDIA)
– C/C++ベースに、若干の独自構文の追加

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

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

• ゲーム
– 物理演算
– AI
– エフェクト
26
誰が汎用アクセラレータを使うのか
• ゲームでは重要度が増してきている
• PS4/Xbox Oneの存在
• PS4とXBOX OneはAMDのx86 CPUと、Radeon
ベースのGPUを使用している
– もちろんGPGPUにも対応してい...
現在のアクセラレータの
問題点
• 一部分野を除いて流行っていない
– プログラミングコスト
• 費用対効果が疑問
• ライブラリレベルでの対応はありえる

– 移植性
• 全てのPCにGPGPU対応のGPUがあるとは限らない
• メーカ間・世...
小回りがきかない
• CPU向きの処理はCPUで、
GPU向けの処理はGPUで行
いたい

~60GB/s
CPU1

mem

• 現状のシステムではオー
バーヘッドがあり難しい
– PCI Expressのレイテンシ
– PCI Expre...
小回りがきかない
• I/Oは基本的にできない
– CPUに任せる (1)
– 遅い

Network

• 最近、GPUメモリを直接転送
できるネットワークが登場
– Infiniband (2)
– GPU Direct for RDMA
...
アクセラレータは長生きするのか
• しないと予想
– より広い問題に対応できる方法に移行してい
く
– でも、並列思考はなくならない

• CPUのクロックは頭打ち
– ここ数年動作周波数は向上していない(定格)
– 高々4GHz程度、メインス...
APU
• AMDがAPUという製品を出している
– コードネーム Kaveri, A10-7850K等
– Kaveriは3世代目APU (Triniry, Richland)
– (PS4, XboxもAPUであるが、詳細は非公開)

• ...
APU
• Kaveriは期待できる製品だが…
• 対応ソフトウエアがまだあまりない
• メモリ周辺がCPUのままである
– 演算性能のわりにメモリ帯域が足りない
– コンシューマ向けモデルであるため、メモリが2ch
しかない
– 38.4GB...
Hyper Memory Cube (HMC)
• メモリ周辺が厳しいのは、カード型も同じ
• 次世代のメモリ規格 HMC
– メモリを積み重ねてCPUの近くにおくことで帯域を
確保

• NVIDIA GPUの次の世代 Volta で採用する...
APUまとめ
• 下地が揃っていたのがAMD
– 昔からのx86 CPUとATI由来のGPU
– メモリ力が足りない

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

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

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

36
Upcoming SlideShare
Loading in …5
×

Boost study14

1,484 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,484
On SlideShare
0
From Embeds
0
Number of Embeds
34
Actions
Shares
0
Downloads
3
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Boost study14

  1. 1. Boost.勉強会 #14 魔導書 Vol.3 発売記念 GPGPUの今とこれから 藤田 典久, @fjnli, id:fjnl 1
  2. 2. とりあえず… • 寝坊しましたすいません… • Boostでません • C++? 知りませんね… 2
  3. 3. 魔導書 Vol.3 出ました!! http://longgate.co.jp/books/grimoire-vol3.html
  4. 4. 魔導書 Vol.3 出ました!! 書きました http://longgate.co.jp/books/grimoire-vol3.html
  5. 5. 魔導書 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
  6. 6. 魔導書 Vol.3 出ました!! • OpenACCに関する詳細は魔導書を参照してく ださい • ちょっと微妙なネタ選択だった気もする – 無料で使える実装がない – 商用コンパイラの体験版程度 – GCCがサポートする計画がある様子 – 仕様書は公開されており、誰でも読めます 6
  7. 7. ---宣伝枠終了--- 7
  8. 8. アクセラレータとは • 日本語では「演算加速装置」とも呼ばれる – 演算を支援する装置。速いは正義 – CPUでは性能・効率面で不十分な分野で利用 される • GPU (Graphics Processing Unit) – 特に 3D Graphics • ネットワークインターフェイス (NIC) • 動画のデコーダー ・ エンコーダー 8
  9. 9. 汎用? 特化 • 昔のGPU • NIC • 動画のエンコーダ • RAIDカード 決められた事しか出来ない 汎用 • 最近のGPU • Intel Xeon Phi • (Cell) ある程度自由に プログラミングできる 9
  10. 10. 汎用? 特化 • 昔のGPU • NIC • 動画のエンコーダ • RAIDカード 決められた事しか出来ない 今回のターゲットは こちら側 汎用 • 最近のGPU • Intel Xeon Phi • (Cell) ある程度自由に プログラミングできる 10
  11. 11. イマドキのアクセラレータ • GPU – – – – NVIDIA, AMD, Intel 特にNVIDIA GPU 汎用性を獲得したのは、ここ4、5年の事 画面出力機能のないGPU(?)すらある • Intel Xeon Phi – Intel MIC (マイク, Meny Integrated Core) とも – GPUの対抗馬 – 画面出力機能は元々ない 11
  12. 12. 補足 • AMD GPUの事をあまり知りません • 今後の説明はNVIDIA GPUを例にしています • 大枠は変わらないはずです? 12
  13. 13. イマドキのアクセラレータ • スモールコア ・ メニーコア – (CPUと比べると) 遅くて – (CPUと比べると) 小さくて多数のコアがある – (CPUと比べると) メモリ帯域重視 – データ並列向け • 増設カードの形で提供されている – アクセラレータ単体では動かせない 13
  14. 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: 次ページにて説明 14
  15. 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: 次ページにて説明 15
  16. 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: 次ページにて説明 16
  17. 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: 次ページにて説明 17
  18. 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: 次ページにて説明 18
  19. 19. イマドキのアクセラレータ 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
  20. 20. 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
  21. 21. SIMT • K40は2880 CUDA Coreを持つが、2880のコア が自由自在に動けるわけではない – 32スレッドが協調動作する – 32-wayのSIMDのような動作をする • NVIDIAはこのような動作をSIMT (Single Instruction Multiple Thread) と表現している 21
  22. 22. ここまでのまとめ • 並列処理はすごく速い – シングルスレッド性能は高くない – クロックの低さ以上に遅いと考える – Compare and swapあるのでLock-freeしましょう • 前世代のNVIDA GPUはAtomic Ops遅いですけど… • メモリ容量が少ない – 下位モデルはさらに少ない 22
  23. 23. イマドキのアクセラレータ QPI (Intel) HyperTransport (AMD) Network CPU1 CPU2 HDD PCI Express Gen2 or Gen3 16レーン G P U 1 G P U 2 23
  24. 24. 自立性 • 現在のアクセラレータは子機として動作する • 親機(CPU)がいないと起動できない • GPU – GPUの自立動作はできない – CPUの指示に従って動作する • MIC – MICの自立動作ができる (!= MICだけで使える) – 実はLinuxカーネルが動いている – GPUのような動作も可能 24
  25. 25. プログラミング • CUDA C, C++ (NVIDIA) – C/C++ベースに、若干の独自構文の追加 • Intel C, C++, Fortran (MIC) – MICのための各種サポート • OpenCL – 汎用の仕様, C99ベースの言語で記述する • OpenACC – 汎用の仕様, pragmaの挿入で記述する 25
  26. 26. 誰が汎用アクセラレータを使うのか • 科学技術計算 – 演算性能があればあるだけ使う分野 – (京コンピュータはCPUのみでアクセラレータは 使っていない) • ゲーム – 物理演算 – AI – エフェクト 26
  27. 27. 誰が汎用アクセラレータを使うのか • ゲームでは重要度が増してきている • PS4/Xbox Oneの存在 • PS4とXBOX OneはAMDのx86 CPUと、Radeon ベースのGPUを使用している – もちろんGPGPUにも対応している • NVIDIAのPhysX 27
  28. 28. 現在のアクセラレータの 問題点 • 一部分野を除いて流行っていない – プログラミングコスト • 費用対効果が疑問 • ライブラリレベルでの対応はありえる – 移植性 • 全てのPCにGPGPU対応のGPUがあるとは限らない • メーカ間・世代間の非互換 – 加速しない • 万能な銀の弾丸ではない • 小回りがきかない 28
  29. 29. 小回りがきかない • 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
  30. 30. 小回りがきかない • I/Oは基本的にできない – CPUに任せる (1) – 遅い Network • 最近、GPUメモリを直接転送 できるネットワークが登場 – Infiniband (2) – GPU Direct for RDMA CPU1 HDD (1) (2) G P U 1 30
  31. 31. アクセラレータは長生きするのか • しないと予想 – より広い問題に対応できる方法に移行してい く – でも、並列思考はなくならない • CPUのクロックは頭打ち – ここ数年動作周波数は向上していない(定格) – 高々4GHz程度、メインストリームは3GHz程度 – かわりに、コア数やSIMD幅やGPU等の付加機能 が増えている 31
  32. 32. APU • AMDがAPUという製品を出している – コードネーム Kaveri, A10-7850K等 – Kaveriは3世代目APU (Triniry, Richland) – (PS4, XboxもAPUであるが、詳細は非公開) • AMDのCPUとAMDのGPUを密に結合したもの – ようやく、CPUとGPUのメモリ統合を実現 (hUMA) – CPUで扱っているポインタをそのままGPUに渡して データアクセスが可能 32
  33. 33. APU • Kaveriは期待できる製品だが… • 対応ソフトウエアがまだあまりない • メモリ周辺がCPUのままである – 演算性能のわりにメモリ帯域が足りない – コンシューマ向けモデルであるため、メモリが2ch しかない – 38.4GB/s max. (DDR3-2400, 2ch) 33
  34. 34. Hyper Memory Cube (HMC) • メモリ周辺が厳しいのは、カード型も同じ • 次世代のメモリ規格 HMC – メモリを積み重ねてCPUの近くにおくことで帯域を 確保 • NVIDIA GPUの次の世代 Volta で採用すると NVIDIAが表明 – 2015年っぽい? 34
  35. 35. APUまとめ • 下地が揃っていたのがAMD – 昔からのx86 CPUとATI由来のGPU – メモリ力が足りない • NVIDIAはCPUがなかった – 次世代: ARM + GPU (Denver) • IntelはGPUが弱かった – 次世代: Xeon + Phi (?) 35
  36. 36. まとめ • アクセラレータプログラミングが広く普及する とは思えない – でも、制限の厳しい並列プログラミングは、なくな らないと予想 • 演算性能ではなくメモリが辛い – 圧縮表現 – キャッシュに当ててんのよ プログラミング 36

×