36
魔魔魔 Vol.3 魔魔魔魔 GPGPU 魔魔魔魔魔魔魔 魔魔 魔魔 , @fjnli, id:fjnl Boost. 魔魔魔 #14 1

Boost study14

  • Upload
    fjnl

  • View
    812

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Boost study14

魔導書 Vol.3 発売記念GPGPU の今とこれから

藤田 典久 , @fjnli, id:fjnl

Boost. 勉強会 #14

1

Page 2: Boost study14

とりあえず…• 寝坊しましたすいません…

• Boost でません• C++? 知りませんね…

2

Page 3: Boost study14

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

http://longgate.co.jp/books/grimoire-vol3.html

Page 4: Boost study14

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

http://longgate.co.jp/books/grimoire-vol3.html

書きました

Page 5: Boost study14

#pragma acc kernels for (int i = 0; i < 100; ++i) { a[i] = a[i] + b[i]; }

魔導書 Vol.3 出ました !!• OpenACC の話を書きました– あまり込み入った話はありません

• OpenACC とは– アクセラレータ向けの言語仕様– C/C++/Fortran のコードに pragma を挿入する

ことでコンパイラに指示をする– GPU だけに限定される仕様ではない– CPU 向けコードも作れる

5

Page 6: Boost study14

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

• OpenACC に関する詳細は魔導書を参照してください

• ちょっと微妙なネタ選択だった気もする– 無料で使える実装がない– 商用コンパイラの体験版程度– GCC がサポートする計画がある様子– 仕様書は公開されており、誰でも読めます

6

Page 7: Boost study14

--- 宣伝枠終了 ---

7

Page 8: Boost study14

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

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

• ネットワークインターフェイス (NIC)• 動画のデコーダー ・ エンコーダー

8

Page 9: Boost study14

汎用 ?

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

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

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

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

9

Page 10: Boost study14

汎用 ?

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

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

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

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

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

10

Page 11: Boost study14

イマドキのアクセラレータ• GPU– NVIDIA, AMD, Intel– 特に NVIDIA GPU– 汎用性を獲得したのは、ここ 4 、 5 年の事– 画面出力機能のない GPU(?) すらある

• Intel Xeon Phi– Intel MIC ( マイク , Meny Integrated Core) とも– GPU の対抗馬– 画面出力機能は元々ない

11

Page 12: Boost study14

補足• AMD GPU の事をあまり知りません• 今後の説明は NVIDIA GPU を例にしていま

す• 大枠は変わらないはずです ?

12

Page 13: Boost study14

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

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

13

Page 14: Boost study14

イマドキのアクセラレータ

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

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

14

Page 15: Boost study14

イマドキのアクセラレータ

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

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

15

Page 16: Boost study14

イマドキのアクセラレータ

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

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

16

Page 17: Boost study14

イマドキのアクセラレータ

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

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

17

Page 18: Boost study14

イマドキのアクセラレータ

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

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

18

Page 19: Boost study14

イマドキのアクセラレータ

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

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

19

Page 20: Boost study14

SIMD

• Single Instruction Multiple Data– 1 つの命令で複数のデー

タに対して演算を行う– MMX, SSE, AVX, Altivec,

NEON 等– 各データに対して同じ演

算しか出来ない• 性能とのトレードオフ

– 256bit=8float, 4double– 512bit=16float, 8double

10 20 30 40

1 2 3 4

11 22 33 44

20

Page 21: Boost study14

SIMT

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

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

21

Page 22: Boost study14

ここまでのまとめ• 並列処理はすごく速い–シングルスレッド性能は高くない– クロックの低さ以上に遅いと考える– Compare and swap あるので Lock-free しましょ

う• 前世代の NVIDA GPU は Atomic Ops 遅いですけど…

• メモリ容量が少ない–下位モデルはさらに少ない

22

Page 23: Boost study14

イマドキのアクセラレータ

CPU1 CPU2

GPU1

GPU2

Network

HDD

QPI (Intel)HyperTransport (AMD)

PCI ExpressGen2 or Gen3 16 レーン

23

Page 24: Boost study14

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

• MIC– MIC の自立動作ができる (!= MIC だけで使える )– 実は Linux カーネルが動いている– GPU のような動作も可能

24

Page 25: Boost study14

プログラミング• CUDA C, C++ (NVIDIA)– C/C++ベースに、若干の独自構文の追加

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

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

• OpenACC– 汎用の仕様 , pragma の挿入で記述する

25

Page 26: Boost study14

誰が汎用アクセラレータを使うのか

• 科学技術計算– 演算性能があればあるだけ使う分野– ( 京コンピュータは CPU のみでアクセラレー

タは使っていない )

• ゲーム– 物理演算– AI– エフェクト

26

Page 27: Boost study14

誰が汎用アクセラレータを使うのか

• ゲームでは重要度が増してきている• PS4/Xbox One の存在• PS4 と XBOX One は AMD の x86 CPU

と、 Radeonベースの GPU を使用している– もちろん GPGPU にも対応している

• NVIDIA の PhysX

27

Page 28: Boost study14

現在のアクセラレータの問題点

• 一部分野を除いて流行っていない– プログラミングコスト

• 費用対効果が疑問• ライブラリレベルでの対応はありえる

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

– 加速しない• 万能な銀の弾丸ではない• 小回りがきかない

28

Page 29: Boost study14

小回りがきかない• CPU 向きの処理は CPU で、

GPU 向けの処理は GPU で行いたい

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

CPU1

GPU1

mem

mem

16GB/s (片 )(PCIe Gen3 x16)

200~300GB/s

~60GB/s

29

Page 30: Boost study14

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

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

CPU1

GPU1

Network

HDD

(1)

(2)

30

Page 31: Boost study14

アクセラレータは長生きするのか

• しないと予想–より広い問題に対応できる方法に移行してい

く– でも、並列思考はなくならない

• CPU のクロックは頭打ち– ここ数年動作周波数は向上していない ( 定格 )–高々 4GHz 程度、メインストリームは 3GHz 程

度– かわりに、コア数や SIMD 幅や GPU 等の付加

機能が増えている31

Page 32: Boost study14

APU

• AMD が APU という製品を出している– コードネーム Kaveri, A10-7850K 等– Kaveri は 3世代目 APU (Triniry, Richland)– (PS4, Xbox も APU であるが、詳細は非公開 )

• AMD の CPU と AMD の GPU を密に結合したもの–ようやく、 CPU と GPU のメモリ統合を実現

(hUMA)– CPU で扱っているポインタをそのまま GPU に渡し

てデータアクセスが可能32

Page 33: Boost study14

APU

• Kaveri は期待できる製品だが…• 対応ソフトウエアがまだあまりない• メモリ周辺が CPU のままである– 演算性能のわりにメモリ帯域が足りない– コンシューマ向けモデルであるため、メモリ

が 2ch しかない– 38.4GB/s max. (DDR3-2400, 2ch)

33

Page 34: Boost study14

Hyper Memory Cube (HMC)

• メモリ周辺が厳しいのは、カード型も同じ

• 次世代のメモリ規格 HMC– メモリを積み重ねて CPU の近くにおくことで

帯域を確保• NVIDIA GPU の次の世代 Volta で採用する

と NVIDIA が表明– 2015 年っぽい ?

34

Page 35: Boost study14

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

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

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

35

Page 36: Boost study14

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

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

36