Mais conteúdo relacionado Semelhante a 【旧版】2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来 (20) Mais de Preferred Networks (20) 【旧版】2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来2. 自己紹介
• 京都大学 物理学第二教室 天体核研究室
• 専門は宇宙物理学
「地球より大きいもの全てが対象」
• しかし、宇宙の現象は直接実験ができないの
で、シミュレーションの利用がさかんです
• ひょんなことからGPGPUの存在を知ったので
最近勉強しています
2
3. 宇宙物理学のシミュレーションテーマ
ニュートン重力 一般相対性理論
磁気流体力学 (時空・座標)
流体力学
(プラズマ)
(気体・液体)
高温・高密度物質・
素粒子論etc ・・・
輻射輸送
運動論(荷電粒子の
(光の放出・反射・
加速やビームなど)
吸収・伝搬)
3
4. 宇宙の研究とぼくらの生活
一般相対性理論
(時空・座標)
磁気流体力学
流体力学
(プラズマ)
(気体・液体)
重力は時間を、空間を曲げる
プラズマが吹き荒れる宇宙!
太陽風・宇宙天気は 「どんなにゆがんだ
人工衛星の死活問題 座標でも怖くない」
人工衛星の時計は
地上より速く進む!
核融合も実用化?! 乗り物の設計・気流
シミュレーション
気象&海洋シミュレーション
一般相対論を使わないと・・・
GPSは1日20kmも狂っていく 4
5. おことわり
• 宇宙物理学には特にGPUに向いている課題
が結構あるので、僕はけっこう楽観的です。
そうでない人が聞いたら鼻につくことをお詫びしますm(_ _)m
• 他の分野の事情もぜひ知りたいのです
• 宇宙物理学にもGPU的なものに適さない課題は
いっぱいあるので、ぜひ「GPUの次」をいっしょに
考えたいと思っています
• しか勉強してません。 関
係の人ごめんなさい。 にも期待して
ます!
• 本日お話する内容は私の知識の範囲内での私的所感でして、PFI、京都大学そ
の他組織の公的意見とは関係ございません
5
6. もくじ
1. GPGPUとは?なぜGPUを使うのか
2. ハードウェア
演算機としてのGPU
HPC部品としてのGPU
GPUコンピュータを作ろう
3. GPUプログラミング言語と開発環境
4. GPUプログラミングの勉強のしかた
5. GPUコンピューティングの現状
6. GPUでペタコンを作ったら?
7. GPU(メニイコア)の将来、GPUの次
6
8. と の違い
GPUはコア(計算する人)の数が多い!
周波数(ひとりの計算する速度)は1/3程度
4コア+hyper-threading 480コア
(SSEを使うと16コア)
8
9. The difference between and .
米国Roadrunner 長崎大学
DEGIMAクラスタ
1億3300ドル 予算 3800万円
1,457Tflop/s ピーク性能 700Tflop/s
安い! 9
10. GPUとは?なぜGPUを使うのか?
=>安価な超メニーコア計算機
• GPU(Graphics Processing Unit)とは
• もともとコンピュータグラフィック(CG)描画専用の装置
• CG技術の発展にともない、GPUの仕事が多様化。
2006年後半から汎用GPU(GPGPU)へと進化
• 並列演算性能が高い
• 500個程度の演算ユニット
• 非常に安価
• パソコンの部品として量産されているため。
• 1T flops ~ 3万円程度 (Crayの相場は600万円/TFlops)
• 価格性能は一般的なスパコンに比べ100倍ぐらい良い
GPUコンピューティングが現実的に
10
12. GPUとCPUを比べる(例)
Core 2 Quad Q9550 NVIDIA 295GTX
演算器 4 (16) 480
演算性能 90.56Gflops 1788Gflops
Parts Price $219 $499
Machine Price $900; 100Mflops/$ $1400; 1.3Gflops/$
Power 400W;230Mflops/W 700W;2.6Gflops/W
flops = 一秒間に実数の四則計算を1回行える性能
• GPU は 1台あたりCPU の10 倍,20倍速い
• 設備投資・消費電力あたりの計算能力も~10倍
• アプリケーションによっては100倍以上高速化したとの報告も多数
12
• 性能だけでみるとそこまで差はないように見えるが
• 計算チップとしての設計思想がある点で決定的に違っている
13. ダイイメージ
• Streaming Processor
(SP)がint/floatの演算
をおこなうユニット
• Streaming Processor
×8 = Streaming
Multiprocessor (SM)
• SM内のSPは常に同じ
命令を実行
• SP×8 = SM
• SM×3 = TPC
• TPC×10 = G200
• 240コアというより
30コア×8要素SIMD
13
14. アーキテクチャ模式図
命令キャッシュ • 1SPが1スレッドを担当
ワープスケジューラ
• 命令は4クロックに一度
命令発行ユニット
レジスタ 4096本×4バイト • 16スレッドが半ワープ
SP SP 倍精度ユニット • メモリアクセスは半ワー
倍精度ユニット プごとにまとめられる
SP SP
特殊関数ユニット • 32スレッドが1ワープ
SP SP
特殊関数ユニット
• 同じ命令を実行
SP SP ロード・ストア
Shared Memory 16KB
14
15. 演算機構造 論理構造 メモリ構造
----RWともに速い----
レジスタ
4096本×4バイト×30
Shared Memory
16KB ×30
----Rはキャッシュ/Wは遅い----
Const Memory 64KB
Texture Memory ~GB
----RWともに遅い----
Global Memory ~GB
×30 ----PCI Expressの壁----
Host Memory
スレッドブロックグリッド
SMはいくつかのブロックを並列に実行、ブロックの実行順は未定義
同一ブロック内ではShared Memoryを介した通信が可能
ブロック間の通信手段はGlobal Memoryのみ
Const Memoryはホストからのみ書き換え可
Texture MemoryはデバイスからもW可能だがキャッシュに反映されない
スレッド数は32の倍数、ブロック数は30の倍数がよい 15
16. 決定的に違う設計思想
Neharem G200 Fermi
(GTX285) (2010Q1予定)
ベクトル長 4 8 32
コア数 4 30 16
レジスタ数 40×4 4096×30 4096×16?
スレッド数 2×4 1024×30 ?
GPUの設計:レジスタが圧倒的に多い
レジスタを退避させることなく膨大な数のスレッドを駆動
様々なレイテンシを隠蔽
16
17. 最適化に対するCPUとGPUの回答
• メモリが遅いキャッシュヒエ
ラルキーをつくって、小さい • 一方GPUでは
キャッシュにうまいこと当てる
• ただの四則演算が終わるまで
スレッドをたくさ
にも、数クロックが浪費されて
しまうパイプラインをつかい
ん立てた
結果をまたずに命令を投入
• 分岐してる時間がもたいない
分岐する方向をあらかじめ
予測してそっちの計算を進め
ておく投機的実行
• スカラーの限界がみえてきた
んでマルチコアにしてみた
• SIMDユニットも積んでみた
17
20. 計算機全体としての性能は?
多くの場合通信性能がボトルネック
典型的パソコンの模式図
1000BASE-T
ホストメモリ
0.125GB/s
DDR3 1600
12.8GB/s
CPU演算:
90.56GFlops=362GB/s CPU 12GB
計算を
L2キャッシュ⇔CPU 行う マザーボード
転送: 150GB/s キャッシュ コンピュータの
基盤
0.012GB
CPUプログラムからGPU
ライブラリを呼ぶ等の
GPU演算: 場合で、ホストメモリか
GPU PCI Express 2.0x16
1788GFlops=7152GB/s らの転送がボトルネッ
8GB/s
デバイスメモリ⇔GPU 計算を行う
■■■■■■■■ クになってしまうとせっ
転送: 223.8GB/s デバイスメモリ かくのGPUの性能が生
2GB かせない!!
20
21. 「GPUクラスタ」とCPUクラスタを比べる
CPU演算: GPU演算:
計算速度 CPU 90.56GFlops 1788GFlops=7152GB/s
=362GB/s
キャッシュ
GPU GPU
主記憶 DDR3 1600 GDDR3 ■■■■■■■■ ■■■■■■■■
転送速度 12.8GB/s 223.8GB/s デバイスメモリ デバイスメモリ
2GB
主記憶 ホストメモリ
容量 12GB
「ノード」間 1000BASE-T PCI Express 2.0x16
通信速度 0.125GB/s 8GB/s
全面的にGPU計算に移行すれば、秋葉原で
買える部品で1~2桁上の性能が手に入る。
21
22. 「パソコン内蔵型」GPUクラスタ
ディスク
主電源
CPU 副電源
メモリ
GPU0 GPU1
GPU2 GPU3
GPU4 GPU5
GPU6 GPU7 温度計
¥383,806 22
23. 「パソコン内蔵型」GPUクラスタ
1台で単精度7.1TFlop/s
の性能、40万円
パソコンを100台ならべて
Infinibandでつないだ程度
Cray 600万/TFlops
1.6TFlop/s 1億円→
※通信性能が高い
23
24. • 「GPUへのデータの転送がボトルネックなんで
しょ?」
• 「これからはGPUのようなアクセラレータを積んだ
HPCが主流となる」
GPUをアクセラレータ(演算機)だと思うと転送が
ボトルネックで応用は限られる。GPUはそれ自身
計算機(演算機+主記憶+通信)だと思ったほう
がいいかも?
データはホストメモリではなくなるべくグラフィック
メモリに置くことがGPUコンピュータでは常識
24
32. マザーボード • GPUとの通信を司るチップを
2枚搭載、通常の2倍の速
「SuperComputer」 度で通信
• 規格上7つある汎用スロット
枠が全部大型GPU用
• 旧式のディスクやキーボー
ドはバッサリ非対応
• Ultimate Supercomputing
Solution for CUDA Parallel
Programming (メーカー)
39. GPU選び
赤いGPU AMD メーカー NVIDIA 緑のGPU
RADEON R5870 GPU GeForce GTX 295
39
40. 重要なのは・・・
AMD メーカー NVIDIA
RADEON R5870 最高級GPU GeForce GTX 295
2700GFlops (単精度) 演算速度 1788GFlops (単精度)
544GFlops (倍精度) 149GFlops (倍精度)
153.6GB/s 転送速度 223.8GB/s
ATI Stream SDK 開発環境 CUDA C
Brook+ コンパイラ nvcc
開発環境、
だと私は思います
40
41. ハードウェア選び
• http://en.wikipedia.org/wiki/Comparison_of_
Nvidia_graphics_processing_units が充実
• AMD版もあります。
• おすすめの NVIDIA GPU
GeForce GTX 285 GeForce GTX 295 Fermi (予定)
2GBモデル
演算速度 1063GFlops 2x 894GFlops 1500GFlops?
デバイスメ 2048MB 2x 896MB 6GB?
モリ容量
転送速度 159.0 GB/s 2x 111.9 GB/s ?
市価(万円) 4.5 ~ 5.5 5~6 15-20?
41
43. CUDA --- NVIDIAのGPU向け開発環境
• CUDA C : ほぼC++互換の言語。GPU上でクラス
も演算子オーバーロードもテンプレートも使える
• ptx : GPU上の機械語に近い中間言語
• nvcc : CUDA Cのコンパイラ。
• cuda-gdb : Linux向けGPUデバッガ。
• 実行中のGPUプログラムを止めてデバッグできる
• thrust : CUDA版STL
• サードパーティ製, Apache License 2.0
• FFTやBLAS、その他多数のライブラリも
43
44. 例)C++で自然数1..500の平方根を求
めるプログラム
const int N = 500;
void calculate(float* x,float* y){
for (int i = 0; i < N; ++i) {
y[i] = sqrt(x[i]);
}
}
• これをCUDAで書き
int main () {
vector<float> x(N), y(N); なおしてみる
for (int i = 0; i < N; ++i) {
x[i] = i+1;
}
calculate(&x[0], &y[0]);
for (int i = 0; i < N; ++i) {
cout << y[i] << endl;
}
}
44
45. 例)自然数1..500の平方根を求めるプ
ログラム,CUDA C版
#include <iostream>
#include <thrust/thrust_vector.h>
__global__ void calculate(float* x, float* y) {
int i = threadIdx.x;
y[i] = sqrt(x[i]);
}
int main () {
const int N = 500;
thrust_vector<float> x(N), y(N);
for (int i = 0; i < 500; ++i) {
x[i] = i+1;
}
calculate <<<1,N>>> (x.ptr(), y.ptr());
for (int i = 0; i < 500; ++i) {
cout << y[i] << endl;
}
}
45
46. 1..500の平方根を求めるプログラム,比較
C++ CUDA
const int N = 500; const int N = 500;
void calculate(float* x,float* y){ __global__ void calculate(float* x,
for (int i = 0; i < N; ++i) { float* y) {
y[i] = sqrt(x[i]); int i = threadIdx.x;
} y[i] = sqrt(x[i]);
} }
int main () { int main () {
vector<float> x(N), y(N); thrust_vector<float> x(N), y(N);
for (int i = 0; i < N; ++i) { for (int i = 0; i < N; ++i) {
x[i] = i+1; x[i] = i+1;
} }
calculate(&x[0], &y[0]); calculate <<<1,N>>>
for (int i = 0; i < N; ++i) { (x.ptr(), y.ptr());
cout << y[i] << endl; for (int i = 0; i < N; ++i) {
} cout << y[i] << endl;
} }
}
CUDAではループのかわりに、カーネル関数を並列的に実行
スレッドごとにthreadIdxというのが受け取れる(MPIっぽい) 46
47. 実行してみる
thrust> cat thrust_vector.cu ys = dev_ys;
#include <thrust/device_vector.h> for (int i = 0 ; i < N; ++i) {
#include <thrust/host_vector.h> cout << "sqrt " << xs[i] << " is " << ys[i] <<
#include <iostream> endl;
using namespace std; }
}
const int N = 500;
thrust> nvcc thrust_vector.cu
__global__ thrust> ./a.out
void calculate (float *px, float *py) { sqrt 0 is 0
int tid = threadIdx.x; sqrt 1 is 1
float x = px[tid]; sqrt 2 is 1.41421
float y = sqrtf(x); sqrt 3 is 1.73205
py[tid] = y; sqrt 4 is 2
} sqrt 5 is 2.23607
sqrt 6 is 2.44949
int main () { sqrt 7 is 2.64575
thrust::host_vector<float> xs(N),ys(N); sqrt 8 is 2.82843
thrust::device_vector<float> dev_xs(N),dev_ys(N); sqrt 9 is 3
for (int i = 0 ; i < N; ++i) { sqrt 10 is 3.16228
xs[i] = i; ・・・・・
} thrust>
dev_xs = xs;
calculate <<< 1 , N >>>
(thrust::raw_pointer_cast(&*dev_xs.begin()),
thrust::raw_pointer_cast(&*dev_ys.begin()));
47
48. ptxを生成しGPU機械語に迫る
thrust> nvcc thrust_vector.cu --ptx ・・・ .entry _Z9calculatePfS_ (
thrust> less thrust_vector.ptx .param .u32 __cudaparm__Z9calculatePfS__px,
.param .u32
__cudaparm__Z9calculatePfS__py)
{
.reg .u16 %rh<3>;
thrust> less thrust_vector.cu .reg .u32 %r<8>;
・・・ .reg .f32 %f<4>;
__global__ .loc 26 8 0
$LBB1__Z9calculatePfS_:
void calculate (float *px, float *py) {
.loc 26 10 0
int tid = threadIdx.x;//A
cvt.s32.u16 %r1, %tid.x; //A
float x = px[tid]; //B
cvt.u16.u32 %rh1, %r1; //A
float y = sqrtf(x); //C mul.wide.u16 %r2, %rh1, 4; //r2 = 4*tid.x
py[tid] = y; //D ld.param.u32 %r3,
} [__cudaparm__Z9calculatePfS__px]; //B
・・・ add.u32 %r4, %r3, %r2; //B
ld.global.f32 %f1, [%r4+0]; //B
.loc 26 12 0
sqrt.approx.f32 %f2, %f1; //C
ld.param.u32 %r5,
[__cudaparm__Z9calculatePfS__py]; //D
add.u32 %r6, %r5, %r2; //D
st.global.f32 [%r6+0], %f2; //D
.loc 26 13 0
exit;
$LDWend__Z9calculatePfS_:
} // _Z9calculatePfS_ ・・・
48
49. CUDA Cの利点
• C(C++)を知っていれば覚えることはわずか
• GPU上で並列に実行したい関数(カーネル)には
__global__などの印をつける
• そして関数名<<<ブロック数,スレッド数>>>(引数,
引数,…) でカーネル呼び出し
• C++言語の強力な機能がGPU上で使える。第3
者がthrustなるSTLを作れるのが何よりの証拠。
• テンプレート魔術によりホスト⇔デバイスの自動転送
はむろん、GPUの最適なスレッド数を調べてアルゴリ
ズムを並列実行します
• 機械語も見れて中を覗かないと落ち着かない変
態ハッカーも安心
49
51. CUDAでGPUプログラミングを勉強する
• GPUコンピュータを用意
• CUDA ZONE からCUDA3点セットをダウンロードしてイ
ンストール
• gpgpu.org や CUDA ZONE をみて最新の成果を確認
• わからないことはNVIDIA Forum で検索&質問
• thrust (データ管理), CUFFT(), CUDPP(ソート等)
• google-testでテストしながらコードを成長させる
• google code で自分のコードのサイトを作って公開
• gpgpu.org や CUDA ZONEに投稿!
51
53. ドキュメント
CUDA Programming Guide
CUDAの説明が書いてあるからまず必ず読むべき
CUDA Best Practices Guide
最適化に重要なことが書いてあるからぜひ読むべき
CUDA Reference Manual
APIのリファレンスなので印刷して手元に
CUDA GDB User Manual
すごいデバッガなのでぜひ使うべき
CUDA PTX ISA document
GPU機械語解読の手掛かり、マニアになりたい方に
http://www.nvidia.com/object/tesla_software.html
53
59. 使える。
使われている。速くなっている!
コンピューター視覚 量子化学 たんぱく質 金融市場の予測
シミュレーション シミュレーション
雷のシミュレーション 疎行列の積 ロボット手術 遺伝子解析
59
60. • 宇宙物理学でも・・・
• N体計算(Hamada&Nitadori, Gordon Bell Prize!)
• 流体
• Adaptive Mesh流体 (台湾国立大学)
• 磁気流体(マカオ、北京)
• Godunov Method (京大)
• 最近GPU+AMR+MHDが出た(Peng Wang, Tom Abel)
• データ解析
など
60
64. 複数のコンピュータが
協力して数値計算する
nHD (by 村主)
こと 衝撃波のない所では、
精度を上げてシミュ
解析解をあてはめて、
レートする手法
衝撃波をきちんとシ
ミュレートできる手法
• MPI GPU Full Godunov 2nd order MUSCL 3次元
一様メッシュ Euler方程式ソルバー
AMRとかはとくになし 圧縮性流体の基礎方程式、粘性なし
• GPUが複数装備されたマシンを複数台連結したクラスタ上
で流体計算が実行できます
• Full Godunovなので、強い衝撃波、真空、何でも来いです
• テスト駆動開発なのでさまざまなテストが済んでいます
• BSDライセンスで公開開発中:
http://code.google.com/p/astro-attic/wiki/NHDIntroduction
64
65. 計算速度
あのパソコン1台で
CPU GPU
ハード Core i7 920, シングルスレッド GTX 295 , 1チップ,通信なし
問題設定 128 x 128 x 128, 斜め衝撃波問題, 0.12 sound crossing time
所要時間 8分 46.887 秒 7.509 秒
速度比
1 70
ハード Core i7 920, シングルスレッド GTX 295 , 4チップMPI
問題設定 128 x 128 x 512, Blast 問題, 1.6 sound crossing time (長辺)
所要時間 1日 2時間 39分 46秒 9分 13.437 秒
速度比
1 173
PRELIMINARY (CPU/GPUいずれも未最適化コードです)
65
68. 日本最強のスパコン
• 10PFlop/s
• 1230億円
• のはずだったが・・・
68
70. 日本のGPUスパコン
158TFlop/s
Gordon Bell Prize
Awarded!
東工大TSUBAME 長崎大学DEGIMA 名古屋大学
?? 予算 3800万円 1億7000万円
170Tflop/s ピーク性能 700Tflop/s 建設中
(単精度) ???
?? 消費電力 150kW ???
70
71. 京速 v.s. Cray v.s. GPU
計算力 10PFlop/s ~1PFlop/s 158TFlop/s
価格
1230億円 ??? 3800万円
P/C 1230万円/TFlops 600万円/TFlops 24万円/TFlops
71
72. 「真珠湾攻撃」
• 濱田・横田・似鳥さんはTree-N体コード(並列化
は困難)を190ノード760GPUで動かし、SCに出発
する直前に10倍の高速化に成功
• 長崎大学のGPUクラスタは今年度のSCでゴード
ンベル賞が受賞確実視されていた。それを受け
ての濱田氏の言葉(その後受賞)
• 今年の受賞により日本はGPUスパコンの有効性
を世界に示すことになるだろう。だがこのままで
は米国の国力に敗北する。
• 現在米国・中国で30PFlops級のGPUスパコンが
計画中
73. このままでいいのか
• GPU・メニイコアは一過性のブームではない。なぜなら1
コアの速度は電磁気・量子論的限界に近づいているの
で、コアをこれ以上速くできない。となればコアをたくさ
ん並べるしかない
• 遅かれ早かれ、高性能並列計算機はGPU型か、GPUの
進化したメニイコア計算機が占めるようになる
• 昔のベクトルは論外、もはやスカラーも過去のアーキテ
クチャ
• 昔のものを使いつづけたい気持ちはわかるしそうできれ
ばサイエンスにとっては一番良い
• のだがそんなことを言ってる場合ではない
75. GPUペタコンを本気で考えてみる
• とある宇宙物理学の学会で出た「ペタコンで挑み
たい未解決問題」
• Vlasov方程式を解くために500TBくらいメモリが欲しい
• 分子雲乱流から1stコア形成までを一様メッシュで分
解するためには10000^3 の流体計算(40TB)がしたい
• 計算実行中に可視化まですませたい
• この要求を真に受けてGPUスパコンを設計して
みる
• 真剣なので楽観的予測はなし、あくまで現在もし
くは将来確実に手に入る部品のみ。ムーアの法則
等、低コスト化の効果は使わない
76. 定量的通信性能比較再訪
CPU演算: GPU演算:
計算速度 CPU 90.56GFlops 1788GFlops=7152GB/s
=362GB/s
キャッシュ
GPU GPU
主記憶 DDR3 1600 GDDR3 ■■■■■■■■ ■■■■■■■■
転送速度 12.8GB/s 223.8GB/s デバイスメモリ デバイスメモリ
2GB
主記憶 ホストメモリ
容量 12GB
「ノード」間 1000BASE-T PCI Express 2.0x16
通信速度 0.125GB/s 8GB/s
GPUノードを複数並べようと思ったら通信が
PCIExpressなみ必要。GBeでは苦労する。
76
77. 高速ネットワーク
• Infiniband SDR…10Gb/s QDR … 40Gb/s (定番)
• 36ポートQDRのスイッチが200万円、カード15万円
• Myrinet 20Gb/s (リーズナブル)
• 32ポートのスイッチが40万円、カード6万円
• 32ポートスイッチを使って3次元トーラスを作る。12
ポートをスイッチ間通信に使い、20ポートにノードをぶ
ら下げる
• ノードはFermi3枚、NIC(Network Interface Card)1枚
x+1
y+1
x+1
z+1
y+1
z+1
計算ノード
スイッチ
x-1
y-1
x-1
z-1
y-1
z-1
78. 新生ペタコン計画試算
構成 20×8×8×4 20×8×8×16
(5120ノード) (20480ノード)
部品 ノードあたり価格 10Pに必要な費用 Vlasovに必要な費 現行
(万円) (万円) 用(万円)
Myrinet 32 40/20ノード 10240
ポートスイッチ
Myrinet NIC 6 30720
Fermi GPU 15x3 230400
メモリ24G 9 46080
マザーボード、 11 56320
CPU、電源
設備費用合計
73 37億3760 149億5040 +700億
倍精度性能 0.768TFlops 11.796PFlops 47.186PFlops 10PFlops
x3 ??
消費電力 0.3Gflops/W 3.538MW 14.152MW 80億円/yr
10円/kWh 3.09億円/yr 12.36億円/yr
79. 現状の流体コードを(弱く)スケール
させることができたら・・・?
• (9*60+13)*(1.788/2)/0.768*
10000**4/(128*128*512*512*1.6) * (4.0/(3*5120)) /
86400
=> 2.82342736296417(day/sound crossing)
• 10000**3/(5120*3.0) * 40 / 1e9
=> 2.60416666666667(GB/Fermi)
• (10000**3/(5120*3.0))**(1.0/3.0)
=> 402.287243585679(Mesh/Fermi)
• 12Pプランでは10000^4 の 流体計算が、sound
crossing timeあたり3日で解ける。
• 47Pプランなら0.7日でsound crossing
• 解像度を2倍妥協すればこの16倍速くなります
80. 見積もりの妥当性
• 今のコードはGPUあたり128^3メッシュで解いているが、
見積もりは約402^3になる。表面積に対する体積が大
きいほど通信が楽になるセンス妥当
• 今のコードは流体データがデバイスメモリにあることに
速度を依存恐るべきことに10000^3の流体が
Fermiなら全部デバイスメモリに載ってしまう。妥当
• スパコンの費用はふつう通信系が支配するのにGPU
スパコンでは演算装置が支配する。だから通信系は
Myrinetといわず最高速のものを買えばOK
PCIExpressより速いものすらあるので妥当
• むしろ今のコードは無駄をしてるのでもっと速くできる
• 前ページの見積もりの速度が出る可能性は高い
81. • プログラムは1から書き直し。すべての分野
の計算に使えるわけではないし、実績がまだ
あまりないので、汎用京速計算機を置き換え
うるものではないが、挑戦する価値はあるの
では。
• ハードを作るのはどうしても費用が必要だが
ソフトは直接費用はいらない。むしろ長期的
視野にたって科学・工学のために必要なツー
ルを整備するのが基礎科学の役目ではない
か
84. GPUが使いにくい例:ライフサイエンス
• MDのタイムステップ(Δ t)
は1フェムト(10-15)秒程度
が限界。←タンパク質の場合、
最も速い運動である結合の伸縮
は10-14秒程度の周期であるため、
Δ tは1フェムト秒程度が選ばれ
る。
• タンパク質のフォールディング時
間はミリ秒
• 1012ステップがどうしても必要!
安藤格士さんのスライドより
• 原子数が決まっているため無限
タンパク質304+水原子7,377= に並列化できるわけではない。
原子数7,681 低レイテンシ、高速ハードウェア
巨大タンパク質複合体は~MDa が欲しい!!
(メガダルトン)=数十万原子くらい
84
85. GPUが使いにくい例:多くのタイムス
テップが必要な計算
星形成 タンパク質
分子シミュレーション
フォールディングミリ秒/結合の振動フェムト秒
星雲の寿命1000万年/星の振動5分 =1012ステップ
=1012ステップ アミノ酸を球やバッグで近似したり、
星が形成しはじめた時点で「星のモデル」 溶媒水の効果を簡易化したりしている
に置き換え、タイムステップを軽減 水素結合1つが大きな部品を動かしたり、
簡単ではない
大スケール現象に、微小で高速な震動が 階層性の科学が必要!
与える影響は、統計的なもの。
真に1012ステップ必要な計算はあるか?
85
86. GPU利用が難しい・・・と言われていたが
実現してしまった例:粉体
地球シミュレーター
阪口 秀 西浦 泰介
GPUの専門家にすら、移植は
困難といわれていた。
まったく新しいアルゴリズム
にすることでGPUでピークに近
い性能を出すことに成功!
86
91. 認識の並列性
• 140億コア(?)トランジス
タ(?)×500Hz(?) =
7TFlops(ピーク性能?)
• 実効性能~0.01Flops
• でも、とても多機能、柔
軟、ディペンダブル
• スカラー性能はなくても
↑7TFlops 膨大な並列性があれ
Priceless ば可能になるタスクの
存在を強く示唆
7TFlops 40万円
シミュレーションしかできない
91
93. GPUコンピューティング・メニーコアコンピュー
ティングの産業規模のオーダー評価
スパコンにしか使われなかった場合
• Cray:62億円(年商)
プロが使うソフトウェアができた場合
• Dassault Systems社(自動車CAD):1790億円
• Adobe社(フラッシュ):1660億円
ゲームに使われた場合
• 任天堂:1兆円
社会基盤となるソフトウェアに採用された場合
• Google:2兆円
• マイクロソフト:5兆円
95. 俺なりの答え
• たしかによいサイエンスが伴わなければハードで
一時的に一番をとってもあまり意味がない
速いコアをたくさん並べるというのが一番性能がでるので、
ベクトル/メニイコア系の流れは(何度か)来るだろう
今ならメニイコア世界に一番乗りできる。俺たちが
メニイコアコンピューティングという新学問、新産業
を興す。国産ソフト、人材を売れる。
一番=定量的アドバンテージと一番乗り=定性的
アドバンテージは全然違う
96. むすび
• 情報論はずっとスカラー前提に発展してきた
• スカラーの周波数はもうあまり上がらない。SiGe
とかで上がっても、それをメニイコア化すれば
もっと性能が出る並列情報論の必要性
• ハードが出てしまったいま、ハードがないから理論
がない⇔理論がないから使いたくない⇔使われないから
ハードが出ないのスパイラルを打ち破りメニイコア
を使おう。理論を作ろう。自然科学を研究しよう。
• GPUだけでなく、多様なハードウェアが未来に生まれ
るように。それらを使いこなせるように。みんなが驚き、
喜ぶような発明をするために。
96
99. 2009/09/30 発表
GPU Technologies Conference
http://www.nvidia.com/content/PDF/fermi_white_papers/NVIDIA_Fermi_Compute_Archit
ecture_Whitepaper.pdf
99
100. Fermi
Jen-Hsun Huang
NVIDIA President&CEO
100
105. Streaming スケジューラ= TA
Multiprocessor = 次にどの計算を
するか決めて司
32core 令する。
Core=M1
整数・実数の四則演
算が可能、
倍精度もOK
SFU= D3
sin, cos, hypsin,
log, exp, erf,
gammaなど特殊
関数を計算する
x16 105
106. Fermiのキャッシュ構造
メモリ=図書館
メモリL2 L1の
間は必要なデータが
自動的にコピーされる
L2キャッシュ=研究
室の本棚 768KB
L1キャッシュ=机の
上に広げた本 64KB
いままでL2はなかった。
L1は16KBで、全手動だった。
レジスタ=計算用
紙 L2のおかげでSM間の通信が大幅
に高速化される。 プログラムも楽
になる。
106
108. スケジューラ= TA
が2人いて、コア
=M1が片手でも
空いていれば計
算をやらせる。
Core i7がやって
いるhyper
threading相当の
機能
カーネルの同時実行が可能に。一部のテーブルである計算をやってい
る間のこりが全然別種類の計算を進めることができる。
108
109. 「汎用GPU」から「GPU型計算機」へ
• 他にも、「普通の」プログラムを実行する上で
必須の改良が加えられている。
• 普通のFortran, C, C++ プログラムが難なく倍
精度でFermi上で100~200倍の速度で動く
可能性がある(主に自動キャッシュのおかげ)。
• 性能を引き出すには、ものすごい数で(予想:
512コア×128スレッド/コア=65536並列)並列
化されたアルゴリズムを書かないといけない。
これは使う人の担当。そうすればFermiは全
力で応えてくれる。
109
111. まとめ GPUについて
• 安くて速い。さまざまな計算が100倍速に
• 1つのカードで数万並列の計算をしないと性能は生か
せない。しかし自然科学にはそういう課題がたくさんあ
るはず。
• 1つのカードに計算能力が濃集してることで、逆に通
信に余裕が出るケースもある
1つのGPUパソコンをつくってスパコンを手に入れよう!
GPUクラスタを作れば世界の頂点が見える。
• たとえGPUが滅びても、こういう超多並列ハードウェア
はこれからの計算機の主流の1つではありつづける
だろう。
計算機にとらわれて目的を見失ってはこまりますが、たくさんある重要な課題の中から
それぞれの計算機に適したものを選ぶことは必要かと。そのためにはある程度計算機
についても知っておくとよいかとおもいます。
いっしょにGPUを勉強して使いましょう!!
111