Boost study14
- 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. 魔導書 Vol.3 出ました!!
? OpenACCに関する詳細は魔導書を参照してく
ださい
? ちょっと微妙なネタ選択だった気もする
– 無料で使える実装がない
– 商用コンパイラの体験版程度
– GCCがサポートする計画がある様子
– 仕様書は公開されており、誰でも読めます
6
- 9. 汎用?
特化
? 昔のGPU
? NIC
? 動画のエンコーダ
? RAIDカード
決められた事しか出来ない
汎用
? 最近のGPU
? Intel Xeon Phi
? (Cell)
ある程度自由に
プログラミングできる
9
- 10. 汎用?
特化
? 昔のGPU
? NIC
? 動画のエンコーダ
? RAIDカード
決められた事しか出来ない
今回のターゲットは
こちら側
汎用
? 最近のGPU
? Intel Xeon Phi
? (Cell)
ある程度自由に
プログラミングできる
10
- 13. イマドキのアクセラレータ
? スモールコア ? メニーコア
– (CPUと比べると) 遅くて
– (CPUと比べると) 小さくて多数のコアがある
– (CPUと比べると) メモリ帯域重視
– データ並列向け
? 増設カードの形で提供されている
– アクセラレータ単体では動かせない
13
- 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. SIMT
? K40は2880 CUDA Coreを持つが、2880のコア
が自由自在に動けるわけではない
– 32スレッドが協調動作する
– 32-wayのSIMDのような動作をする
? NVIDIAはこのような動作をSIMT (Single
Instruction Multiple Thread) と表現している
21
- 25. プログラミング
? CUDA C, C++ (NVIDIA)
– C/C++ベースに、若干の独自構文の追加
? Intel C, C++, Fortran (MIC)
– MICのための各種サポート
? OpenCL
– 汎用の仕様, C99ベースの言語で記述する
? OpenACC
– 汎用の仕様, pragmaの挿入で記述する
25
- 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
- 34. Hyper Memory Cube (HMC)
? メモリ周辺が厳しいのは、カード型も同じ
? 次世代のメモリ規格 HMC
– メモリを積み重ねてCPUの近くにおくことで帯域を
確保
? NVIDIA GPUの次の世代 Volta で採用すると
NVIDIAが表明
– 2015年っぽい?
34