海外のスーパーコンピューティングの状況...2011/08/01 · 海外のスーパーコンピューティングの状況 東京工業大学学術国際情報センター
2009/12/10...
-
Upload
preferred-infrastructure-preferred-networks -
Category
Technology
-
view
51.109 -
download
2
description
Transcript of 2009/12/10...
![Page 1: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/1.jpg)
GPUコンピューティングの現状とスーパーコンピューティングの未来
村主崇行
1
![Page 2: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/2.jpg)
自己紹介
• 京都大学 物理学第二教室 天体核研究室
• 専門は宇宙物理学
「地球より大きいもの全てが対象」
• しかし、宇宙の現象は直接実験ができないので、シミュレーションの利用がさかんです
• ひょんなことからGPGPUの存在を知ったので最近勉強しています
2
![Page 3: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/3.jpg)
宇宙物理学のシミュレーションテーマ
3
高温・高密度物質・素粒子論etc ・・・
ニュートン重力 一般相対性理論(時空・座標)磁気流体力学
(プラズマ)流体力学(気体・液体)
輻射輸送(光の放出・反射・吸収・伝搬)
運動論(荷電粒子の加速やビームなど)
![Page 4: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/4.jpg)
宇宙の研究とぼくらの生活
4
一般相対性理論(時空・座標)
磁気流体力学(プラズマ)
流体力学(気体・液体)
乗り物の設計・気流シミュレーション
気象&海洋シミュレーション
プラズマが吹き荒れる宇宙!太陽風・宇宙天気は人工衛星の死活問題
人工衛星の時計は地上より速く進む!
「どんなにゆがんだ座標でも怖くない」
一般相対論を使わないと・・・GPSは1日20kmも狂っていく
核融合も実用化?!
重力は時間を、空間を曲げる
![Page 5: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/5.jpg)
おことわり• 宇宙物理学には特にGPUに向いている課題が結構あるので、僕はけっこう楽観的です。そうでない人が聞いたら鼻につくことをお詫びしますm(_ _)m
• 他の分野の事情もぜひ知りたいのです
私の誤解・無理解も多いと思いますので
• 宇宙物理学にもGPU的なものに適さない課題はいっぱいあるので、ぜひ「GPUの次」をいっしょに考えたいと思っています
• しか勉強してません。 関係の人ごめんなさい。 にも期待してます!
• 本日お話する内容は私の知識の範囲内での私的所感でして、PFI、京都大学その他組織の公的意見とは関係ございません
5
![Page 6: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/6.jpg)
1. GPGPUとは?なぜGPUを使うのか
2. ハードウェア 演算機としてのGPU
HPC部品としてのGPU
GPUコンピュータを作ろう
3. GPUプログラミング言語と開発環境
4. GPUプログラミングの勉強のしかた
5. GPUコンピューティングの現状
6. GPUでペタコンを作ったら?
7. GPU(メニイコア)の将来、GPUの次
6
もくじ
![Page 7: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/7.jpg)
1.GPUとは?
7
![Page 8: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/8.jpg)
と の違い
8
GPUはコア(計算する人)の数が多い!周波数(ひとりの計算する速度)は1/3程度
4コア+hyper-threading(SSEを使うと16コア)
480コア
![Page 9: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/9.jpg)
The difference between and .
9
米国Roadrunner 長崎大学DEGIMAクラスタ
1億3300ドル 予算 3800万円
1,457Tflop/s ピーク性能 700Tflop/s
安い!
![Page 10: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/10.jpg)
GPUとは?なぜGPUを使うのか?=>安価な超メニーコア計算機
• GPU(Graphics Processing Unit)とは• もともとコンピュータグラフィック(CG)描画専用の装置
• CG技術の発展にともない、GPUの仕事が多様化。2006年後半から汎用GPU(GPGPU)へと進化
• 並列演算性能が高い• 500個程度の演算ユニット
• 非常に安価• パソコンの部品として量産されているため。
• 1T flops ~ 3万円程度 (Crayの相場は600万円/TFlops)
• 価格性能は一般的なスパコンに比べ100倍ぐらい良い
GPUコンピューティングが現実的に10
![Page 11: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/11.jpg)
2-1.演算機としてのGPU
「GPUって240コアとかあるらしいよね」
「プログラムを240並列にするのって大変じゃないの?」
11
![Page 12: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/12.jpg)
12
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倍以上高速化したとの報告も多数
• 性能だけでみるとそこまで差はないように見えるが
• 計算チップとしての設計思想がある点で決定的に違っている
GPUとCPUを比べる(例)
![Page 13: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/13.jpg)
ダイイメージ• 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
![Page 14: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/14.jpg)
アーキテクチャ模式図
• 1SPが1スレッドを担当
• 命令は4クロックに一度
• 16スレッドが半ワープ
• メモリアクセスは半ワープごとにまとめられる
• 32スレッドが1ワープ
• 同じ命令を実行
14
命令キャッシュ
ワープスケジューラ
命令発行ユニット
レジスタ 4096本×4バイト
SP SP
SP SP
SP SP
SP SP
Shared Memory 16KB
ロード・ストア
倍精度ユニット
倍精度ユニット
特殊関数ユニット
特殊関数ユニット
![Page 15: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/15.jpg)
15
スレッドブロックグリッドSMはいくつかのブロックを並列に実行、ブロックの実行順は未定義同一ブロック内ではShared Memoryを介した通信が可能ブロック間の通信手段はGlobal MemoryのみConst Memoryはホストからのみ書き換え可Texture MemoryはデバイスからもW可能だがキャッシュに反映されないスレッド数は32の倍数、ブロック数は30の倍数がよい
レジスタ4096本×4バイト×30
Shared Memory 16KB×30
Global Memory ~GB
×30
Const Memory 64KB
Texture Memory ~GB
Host Memory
----Rはキャッシュ/Wは遅い----
----RWともに速い----
----RWともに遅い----
----PCI Expressの壁----
演算機構造 論理構造 メモリ構造
![Page 16: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/16.jpg)
決定的に違う設計思想
Neharem G200(GTX285)
Fermi(2010Q1予定)
ベクトル長 4 8 32
コア数 4 30 16
レジスタ数 40?×4 4096×30 4096×16?
スレッド数 2×4 1024×30 ?
16
GPUの設計:レジスタが圧倒的に多いレジスタを退避させることなく膨大な数のスレッドを駆動様々なレイテンシを隠蔽
![Page 17: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/17.jpg)
最適化に対するCPUとGPUの回答
• メモリが遅いキャッシュヒエラルキーをつくって、小さいキャッシュにうまいこと当てる
• ただの四則演算が終わるまでにも、数クロックが浪費されてしまうパイプラインをつかい結果をまたずに命令を投入
• 分岐してる時間がもたいない分岐する方向をあらかじめ予測してそっちの計算を進めておく投機的実行
• スカラーの限界がみえてきたんでマルチコアにしてみた
• SIMDユニットも積んでみた
•一方GPUではスレッドをたくさん立てた
17
![Page 18: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/18.jpg)
• 「GPUって240コアとかあるらしいよね」
それどころか、3万並列くらいまで捌けます
• 「プログラムを並列にするのって大変じゃないの?」
大変ですが、逆にとにかく並列化するだけで性能が出るので、そういうアプリケーションなら性能が出しやすいです
18
![Page 19: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/19.jpg)
2-2.HPCハードウェアとしてのGPU
「演算ユニットだけが速くてもねえ」
「GPUへのデータの転送がボトルネックなんでしょ?」
19
![Page 20: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/20.jpg)
計算機全体としての性能は?多くの場合通信性能がボトルネック
20
CPU計算を行う
ホストメモリ
■■■■■■■■
GPU計算を行う
デバイスメモリ
マザーボード
コンピュータの基盤
DDR3 160012.8GB/s
PCI Express 2.0x168GB/s
1000BASE-T0.125GB/s
デバイスメモリ⇔GPU転送: 223.8GB/s
GPU演算:1788GFlops=7152GB/s
CPU演算:90.56GFlops=362GB/s
L2キャッシュ⇔CPU転送: 150GB/s
12GB
2GB
キャッシュ
0.012GB
CPUプログラムからGPU
ライブラリを呼ぶ等の場合で、ホストメモリからの転送がボトルネックになってしまうとせっかくのGPUの性能が生かせない!!
典型的パソコンの模式図
![Page 21: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/21.jpg)
PCI Express 2.0x168GB/s
「GPUクラスタ」とCPUクラスタを比べる
21
ホストメモリ
■■■■■■■■
GPU
デバイスメモリ
12GB
2GB
CPU
キャッシュ
■■■■■■■■
GPU
デバイスメモリ
計算速度
主記憶転送速度
主記憶容量
「ノード」間通信速度
1000BASE-T0.125GB/s
DDR3 160012.8GB/s
GDDR3223.8GB/s
GPU演算:1788GFlops=7152GB/s
CPU演算:90.56GFlops
=362GB/s
全面的にGPU計算に移行すれば、秋葉原で買える部品で1~2桁上の性能が手に入る。
![Page 22: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/22.jpg)
22
主電源
GPU0 GPU1
GPU2
GPU4
GPU6
GPU3
GPU5
GPU7
¥383,806
CPU 副電源メモリ
ディスク
温度計
「パソコン内蔵型」GPUクラスタ
![Page 23: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/23.jpg)
1.6TFlop/s 1億円→※通信性能が高い
1台で単精度7.1TFlop/sの性能、40万円
パソコンを100台ならべてInfinibandでつないだ程度
「パソコン内蔵型」GPUクラスタ
23
Cray 600万/TFlops
![Page 24: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/24.jpg)
• 「GPUへのデータの転送がボトルネックなんでしょ?」
• 「これからはGPUのようなアクセラレータを積んだHPCが主流となる」
GPUをアクセラレータ(演算機)だと思うと転送がボトルネックで応用は限られる。GPUはそれ自身計算機(演算機+主記憶+通信)だと思ったほうがいいかも?
データはホストメモリではなくなるべくグラフィックメモリに置くことがGPUコンピュータでは常識
24
![Page 25: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/25.jpg)
2-3.GPUコンピューターを作ろう
「さきほどのマシンの作り方を説明します」
25
![Page 26: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/26.jpg)
GPUコンピュータを手に入れよう
• まあ、自作できる人なら余裕
• 残念ながら歩留まり向上のため、市販のGPU
にはグラフィック表示には問題なくても全演算機を動かすとたまに計算を間違えるものや落ちるものが含まれている。メーカーによってはこの場合でも返品や、交換に応じてくれる。
• 長崎大学ではGPUを多めに購入して自前でスクリーニングプログラムを開発している(このへんも安さの秘密)。そのうちスクリーニングプログラムが公開されたり、GPU計算用チェック済みGPUが売られるようになるのでは。
26
![Page 27: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/27.jpg)
材料
![Page 28: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/28.jpg)
ケース
![Page 29: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/29.jpg)
フルオープン .
変形!!
![Page 30: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/30.jpg)
二連装電源、最大2250Wを供給
主電源EGX1250EWT
1250W副電源SF-1000R14HE
1000W400W
![Page 31: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/31.jpg)
ケースから分離した基盤上で組立てぶっちゃけこの部品だけ売って欲しい
![Page 32: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/32.jpg)
マザーボード「SuperComputer」
• GPUとの通信を司るチップを2枚搭載、通常の2倍の速度で通信
• 規格上7つある汎用スロット枠が全部大型GPU用
• 旧式のディスクやキーボードはバッサリ非対応
• Ultimate Supercomputing Solution for CUDA Parallel Programming (メーカー)
![Page 33: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/33.jpg)
GPU
![Page 34: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/34.jpg)
搭載
![Page 35: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/35.jpg)
4枚目のGPUが色々ふさいでいるこのままでは電源を入れられない \(^o^)/オワタ
USBとか電源/リセット信号
ハードディスク
![Page 36: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/36.jpg)
こんなこともあろうかと・・・!
電源/リセット信号線延長ユニット(標準付属)
![Page 37: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/37.jpg)
こいつ・・・動くぞ!!
![Page 38: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/38.jpg)
![Page 39: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/39.jpg)
GPU選び赤いGPU AMD
RADEON R5870
NVIDIA 緑のGPU
GeForce GTX 295
39
メーカーGPU
![Page 40: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/40.jpg)
重要なのは・・・
40
開発環境、だと私は思います
AMD メーカー NVIDIA
RADEON R5870 最高級GPU GeForce GTX 295
2700GFlops (単精度)544GFlops (倍精度)
演算速度 1788GFlops (単精度)149GFlops (倍精度)
153.6GB/s 転送速度 223.8GB/s
ATI Stream SDK 開発環境 CUDA C
Brook+ コンパイラ nvcc
![Page 41: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/41.jpg)
ハードウェア選び
• http://en.wikipedia.org/wiki/Comparison_of_Nvidia_graphics_processing_units が充実
• AMD版もあります。
• おすすめの NVIDIA GPU
41
GeForce GTX 2852GBモデル
GeForce GTX 295 Fermi (予定)
演算速度 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?
![Page 42: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/42.jpg)
3.NVIDIAのGPUプログラミング言語、CUDA C
42
![Page 43: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/43.jpg)
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
![Page 44: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/44.jpg)
例)C++で自然数1..500の平方根を求めるプログラム
• これをCUDAで書きなおしてみる
44
const int N = 500;
void calculate(float* x,float* y){for (int i = 0; i < N; ++i) {y[i] = sqrt(x[i]);
}}
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;
}}
![Page 45: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/45.jpg)
45
#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;
}}
例)自然数1..500の平方根を求めるプログラム,CUDA C版
thrust_vectorはthrustを軽く
ラップする独自のライブラリです(nHDに入ってます)。完全なコードは2ページ後の黒背景の部分を参照してください。
![Page 46: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/46.jpg)
1..500の平方根を求めるプログラム,比較
46
const int N = 500;
void calculate(float* x,float* y){for (int i = 0; i < N; ++i) {y[i] = sqrt(x[i]);
}}
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;
}}
const int N = 500;
__global__ void calculate(float* x, float* y) {
int i = threadIdx.x;y[i] = sqrt(x[i]);
}
int main () {thrust_vector<float> x(N), y(N);for (int i = 0; i < N; ++i) {x[i] = i+1;
}calculate <<<1,N>>>
(x.ptr(), y.ptr()); for (int i = 0; i < N; ++i) {cout << y[i] << endl;
}}
C++ CUDA
CUDAではループのかわりに、カーネル関数を並列的に実行スレッドごとにthreadIdxというのが受け取れる(MPIっぽい)
![Page 47: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/47.jpg)
実行してみるthrust> cat thrust_vector.cu
#include <thrust/device_vector.h>
#include <thrust/host_vector.h>
#include <iostream>
using namespace std;
const int N = 500;
__global__
void calculate (float *px, float *py) {
int tid = threadIdx.x;
float x = px[tid];
float y = sqrtf(x);
py[tid] = y;
}
int main () {
thrust::host_vector<float> xs(N),ys(N);
thrust::device_vector<float> dev_xs(N),dev_ys(N);
for (int i = 0 ; i < N; ++i) {
xs[i] = i;
}
dev_xs = xs;
calculate <<< 1 , N >>> (thrust::raw_pointer_cast(&*dev_xs.begin()),
thrust::raw_pointer_cast(&*dev_ys.begin()));
ys = dev_ys;
for (int i = 0 ; i < N; ++i) {
cout << "sqrt " << xs[i] << " is " << ys[i] << endl;
}
}
thrust> nvcc thrust_vector.cu
thrust> ./a.out
sqrt 0 is 0
sqrt 1 is 1
sqrt 2 is 1.41421
sqrt 3 is 1.73205
sqrt 4 is 2
sqrt 5 is 2.23607
sqrt 6 is 2.44949
sqrt 7 is 2.64575
sqrt 8 is 2.82843
sqrt 9 is 3
sqrt 10 is 3.16228
・・・・・
thrust>
47
![Page 48: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/48.jpg)
ptxを生成しGPU機械語に迫る
thrust> less thrust_vector.cu
・・・
__global__
void calculate (float *px, float *py) {
int tid = threadIdx.x;//A
float x = px[tid]; //B
float y = sqrtf(x); //C
py[tid] = y; //D
}
・・・
・・・ .entry _Z9calculatePfS_ (
.param .u32 __cudaparm__Z9calculatePfS__px,
.param .u32 __cudaparm__Z9calculatePfS__py)
{
.reg .u16 %rh<3>;
.reg .u32 %r<8>;
.reg .f32 %f<4>;
.loc 26 8 0
$LBB1__Z9calculatePfS_:
.loc 26 10 0
cvt.s32.u16 %r1, %tid.x; //A
cvt.u16.u32 %rh1, %r1; //A
mul.wide.u16 %r2, %rh1, 4; //r2 = 4*tid.x
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
thrust> nvcc thrust_vector.cu --ptxthrust> less thrust_vector.ptx
![Page 49: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/49.jpg)
CUDA Cの利点• C(C++)を知っていれば覚えることはわずか
• GPU上で並列に実行したい関数(カーネル)には__global__などの印をつける
• そして関数名<<<ブロック数,スレッド数>>>(引数,引数,…) でカーネル呼び出し
• C++言語の強力な機能がGPU上で使える。第3者がthrustなるSTLを作れるのが何よりの証拠。• テンプレート魔術によりホスト⇔デバイスの自動転送はむろん、GPUの最適なスレッド数を調べてアルゴリズムを並列実行します
• 機械語も見れて中を覗かないと落ち着かない変態ハッカーも安心
49
![Page 50: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/50.jpg)
4.CUDAの勉強
50
![Page 51: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/51.jpg)
CUDAでGPUプログラミングを勉強する
• GPUコンピュータを用意
• CUDA ZONE からCUDA3点セットをダウンロードしてインストール
• gpgpu.orgや CUDA ZONE をみて最新の成果を確認
• わからないことはNVIDIA Forumで検索&質問
• thrust (データ管理), CUFFT(), CUDPP(ソート等)
• google-testでテストしながらコードを成長させる
• google code で自分のコードのサイトを作って公開
• gpgpu.org や CUDA ZONEに投稿!
51
![Page 52: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/52.jpg)
CUDAドライバ、CUDAツールキット(コンパイラ)、SDK(サンプル集)をダウンロード。ドキュメントやデバッガ、プロ
ファイラもあります。
52
http://www.nvidia.com/object/cuda_get.html日本語版は周回遅れなのでUSA版にGO!!
![Page 53: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/53.jpg)
ドキュメントCUDA Programming Guide
CUDAの説明が書いてあるからまず必ず読むべきCUDA Best Practices Guide最適化に重要なことが書いてあるからぜひ読むべき
CUDA Reference ManualAPIのリファレンスなので印刷して手元に
CUDA GDB User Manualすごいデバッガなのでぜひ使うべき
CUDA PTX ISA documentGPU機械語解読の手掛かり、マニアになりたい方にhttp://www.nvidia.com/object/tesla_software.html
53
![Page 54: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/54.jpg)
GPUをつかった成果をユーザーが投稿し、査読を通る
と紹介されます。何倍速くなったかが載っている。講義の動画などもあるよ。
54
http://www.nvidia.com/object/cuda_home.html#
![Page 55: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/55.jpg)
GPGPUにまつわるニュースサイト
55
http://gpgpu.org/
![Page 56: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/56.jpg)
CUDAに関する質問ができる。英語版のほうが充実はしている。日本語版も十分親切です。
56
http://forum.nvidia.co.jp/
![Page 57: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/57.jpg)
自分のGPUコードを作って公開しよう!
57
http://code.google.com/p/astro-attic/wiki/NHDIntroduction
![Page 58: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/58.jpg)
5.GPUコンピューティングの現状
GPUって使えるの?
58
![Page 59: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/59.jpg)
使える。使われている。速くなっている!
59
コンピューター視覚 量子化学シミュレーション
疎行列の積 ロボット手術雷のシミュレーション
金融市場の予測
遺伝子解析
たんぱく質シミュレーション
![Page 60: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/60.jpg)
• 宇宙物理学でも・・・
• N体計算(Hamada&Nitadori, Gordon Bell Prize!)
• 流体• Adaptive Mesh流体 (台湾国立大学)
• 磁気流体(マカオ、北京)
• Godunov Method (京大)
• 最近GPU+AMR+MHDが出た(Peng Wang, Tom Abel)
• データ解析
など
60
![Page 61: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/61.jpg)
arXiv:0907.3390 台湾大学
61
![Page 62: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/62.jpg)
arX
iv:0
90
8.4
36
2
62
![Page 63: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/63.jpg)
Peng Wang(Tom Abelの弟子) Stanford Univ. 博士論文
abstract
GPUAMRMHD
![Page 64: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/64.jpg)
nHD (by 村主)
• GPUが複数装備されたマシンを複数台連結したクラスタ上で流体計算が実行できます
• Full Godunovなので、強い衝撃波、真空、何でも来いです• テスト駆動開発なのでさまざまなテストが済んでいます• BSDライセンスで公開開発中:
• MPI GPU Full Godunov 2nd order MUSCL 3次元一様メッシュ Euler方程式ソルバー
解析解をあてはめて、衝撃波をきちんとシミュレートできる手法
複数のコンピュータが協力して数値計算する
こと 衝撃波のない所では、精度を上げてシミュレートする手法
圧縮性流体の基礎方程式、粘性なしAMRとかはとくになし
64http://code.google.com/p/astro-attic/wiki/NHDIntroduction
![Page 65: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/65.jpg)
計算速度
CPU GPU
ハード問題設定
Core i7 920,シングルスレッド GTX 295 , 1チップ,通信なし
所要時間速度比
8分 46.887 秒
17.509秒
70ハード問題設定
Core i7 920,シングルスレッド GTX 295 , 4チップMPI
所要時間速度比
1日 2時間 39分 46秒
19分 13.437 秒
173
PRELIMINARY (CPU/GPUいずれも未最適化コードです)
128 x 128 x 128, 斜め衝撃波問題, 0.12 sound crossing time
128 x 128 x 512, Blast 問題, 1.6 sound crossing time (長辺)
あのパソコン1台で
65
![Page 66: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/66.jpg)
GPUスパコンで
今世界の最先端を走っている
国は?
![Page 67: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/67.jpg)
![Page 68: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/68.jpg)
日本最強のスパコン
• 10PFlop/s
• 1230億円
• のはずだったが・・・
68
![Page 69: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/69.jpg)
![Page 70: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/70.jpg)
日本のGPUスパコン
東工大TSUBAME 長崎大学DEGIMA 名古屋大学
1億2000万(GPU代) 予算 3800万円 1億7000万円
56Tflop/s(GPU部) ピーク性能 700Tflop/s(単精度)
建設中???
?? 消費電力 150kW ???
70
158TFlop/sGordon Bell Prize
Awarded!
![Page 71: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/71.jpg)
京速 v.s. Cray v.s. GPU
計算力 10PFlop/s ~1PFlop/s 158TFlop/s
価格 1230億円 ??? 3800万円
C/P 1230万円/TFlops 600万円/TFlops 24万円/TFlops
計算対象 汎用 汎用 未知数
71
![Page 72: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/72.jpg)
「真珠湾攻撃」
• 濱田・横田・似鳥さんはTree-N体コード(並列化は困難)を190ノード760GPUで動かし、SCに出発する直前に10倍の高速化に成功
• 長崎大学のGPUクラスタは今年度のSCでゴードンベル賞が受賞確実視されていた。それを受けての濱田氏の言葉(その後受賞)
• 今年の受賞により日本はGPUスパコンの有効性を世界に示すことになるだろう。だがこのままでは米国の国力に敗北する。
• 現在米国・中国で30PFlops級のGPUスパコンが計画中
![Page 73: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/73.jpg)
このままでいいのか
• GPU・メニイコアは一過性のブームではない。なぜなら1コアの速度は電磁気・量子論的限界に近づいているので、コアをこれ以上速くできない。となればコアをたくさん並べるしかない
• 遅かれ早かれ、高性能並列計算機はGPU型、さらにはGPUの進化したメニイコア計算機が占める
• 昔のものを使いつづけたい気持ちはわかるしそうできれば科学に集中できて一番良い
• のだが最先端のコンピュータはどんどん変わっていくのでそうもいかない
![Page 74: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/74.jpg)
6.GPUでペタコンを作ったら?
74
![Page 75: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/75.jpg)
GPUペタコンを本気で考えてみる• とある宇宙物理学の学会で出た「ペタコンで挑みたい未解決問題」
• Vlasov方程式を解くために500TBくらいメモリが欲しい
• 分子雲乱流から1stコア形成までを一様メッシュで分解するためには10000^3 の流体計算(40TB)がしたい
• 計算実行中に可視化まですませたい
• この要求を真に受けてGPUスパコンを設計してみる
• 真剣なので楽観的予測はなし、あくまで現在もしくは将来確実に手に入る部品のみ。ムーアの法則等、低コスト化の効果は使わない
![Page 76: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/76.jpg)
PCI Express 2.0x168GB/s
定量的通信性能比較再訪
ホストメモリ
■■■■■■■■
GPU
デバイスメモリ
12GB
2GB
CPU
キャッシュ
■■■■■■■■
GPU
デバイスメモリ
計算速度
主記憶転送速度
主記憶容量
「ノード」間通信速度
1000BASE-T0.125GB/s
DDR3 160012.8GB/s
GDDR3223.8GB/s
GPU演算:1788GFlops=7152GB/s
CPU演算:90.56GFlops
=362GB/s
GPUノードを複数並べようと思ったら通信がPCIExpressなみ必要。GBeでは苦労する。
76
![Page 77: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/77.jpg)
高速ネットワーク• 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枚• 第2世代GPUの方が安価でいて今CudaZoneにあるような研究はすべて可能なのだが、より多くの人が使えるように(Fortran,C++も動く?)高価なFermiで悲観的見積もり
x+1
x+1
y+1
y+1
z+1
z+1
x-1
x-1
y-1
y-1
z-1
z-1
スイッチ
計算ノード
![Page 78: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/78.jpg)
新生ペタコン計画試算構成 20×8×8×4
(5120ノード)20×8×8×16(20480ノード)
部品 ノードあたり価格(万円)
10Pに必要な費用(万円)
Vlasovに必要な費用(万円)
現行
Myrinet 32ポートスイッチ
40/20ノード 10240
Myrinet NIC 6 30720
Fermi GPU 15x3 230400
メモリ24G 9 46080
マザーボード、CPU、電源
11 56320
設備費用合計 73 37億3760 149億5040 +700億倍精度性能 0.768TFlops
x311.796PFlops 47.186PFlops 10PFlops
??消費電力 0.3Gflops/W
10円/kWh3.538MW
3.09億円/yr14.152MW
12.36億円/yr36億円/yr下がる予定
![Page 79: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/79.jpg)
現状の流体コードを(弱く)スケールさせることができたら・・・?
• (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倍速くなります
![Page 80: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/80.jpg)
見積もりの妥当性
• 今のコードはGPUあたり128^3メッシュで解いているが、見積もりは約402^3になる。表面積に対する体積が大きいほど通信が楽になるセンス妥当
• 今のコードは流体データがデバイスメモリにあることに速度を依存恐るべきことに10000^3の流体がFermiなら全部デバイスメモリに載ってしまう。妥当
• スパコンの費用はふつう通信系が支配するのにGPUスパコンでは演算装置が支配する。だから通信系はMyrinetといわず最高速のものを買えばOKPCIExpressより速いものすらあるので妥当
• むしろ今のコードは無駄をしてるのでもっと速くできる• 前ページの見積もりの速度が出る可能性は高い
![Page 81: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/81.jpg)
• プログラムは1から書き直し。すべての分野の計算に使えるわけではないし、実績がまだあまりないので、汎用京速計算機を置き換えうるものではないが、挑戦する価値はあるのでは。
• ハードを作るのは性能に比例した費用が必要だがソフトはそこまで費用はいらない。むしろ長期的視野にたって科学・工学のために必要なツールを整備するのが基礎科学の役目ではないか
![Page 82: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/82.jpg)
7.GPU(メニイコア)の将来、GPUの次
82
![Page 83: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/83.jpg)
GPU・メニイコアで何ができないだろうか?
たとえば・・・
• メモリ量が増えるわけではない。
• 速いメモリがなるたけ欲しいという計算は多い
• GPUのメモリは速いがホストのよりは少ない
• 通信の性能は改善するわけではない。むしろflopsあたりの通信性能は落ちる。
• 低レイテンシ通信の要求
• 大帯域幅通信の要求
83
![Page 84: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/84.jpg)
GPU・メニイコアで何ができるだろうか?
• 計算量が必要な人に
• 分野により向き不向きはあるだろう
• 不向きと言われていたにもかかわらずアルゴリズムをがらりと変えて成功した分野も
• いろんな人が研究時間を食わない程度に試してみればよい。速くなればラッキー
• 多様なハードウェアが出現し、それぞれの分野が必要とするスパコンをカスタム設計できる未来が望ましい。
84
![Page 85: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/85.jpg)
GPUが使いにくい例1:ライフサイエンス• MDのタイムステップ(Δ t)は1フェムト(10-15)秒程度が限界。←タンパク質の場合、最も速い運動である結合の伸縮は10-14秒程度の周期であるため、Δ tは1フェムト秒程度が選ばれる。
• タンパク質のフォールディング時間はミリ秒
• 1012ステップがどうしても必要!• 原子数が決まっているため無限に並列化できるわけではない。
低レイテンシ、高速ハードウェアが欲しい!!
85
安藤格士さんのスライドより
タンパク質304+水原子7,377=
原子数7,681
巨大タンパク質複合体は~MDa
(メガダルトン)=数十万原子くらい
![Page 86: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/86.jpg)
GPUが使いにくい例1:多くのタイムステップが必要な計算
86
星雲の寿命1000万年/星の振動5分=1012ステップ
星が形成しはじめた時点で「星のモデル」に置き換え、タイムステップを軽減
大スケール現象に、微小で高速な震動が与える影響は、統計的なもの。真に1012ステップ必要な計算はあるか?
タンパク質
分子シミュレーション星形成
フォールディングミリ秒/結合の振動フェムト秒=1012ステップ
アミノ酸を球やバッグで近似したり、溶媒水の効果を簡易化したりしているが、水素結合1つが大きな部品を動かしたり、簡単ではない粗視化、統計性をつかさどる階層性の科学が必要!
![Page 87: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/87.jpg)
GPUが使いにくい例2:量子化学
87
• 1原子あたり15~50の基底関数、アミノ酸1、2個で20原子とするとN=300
• アルゴリズムにもよるがFMOなら最低限O(N^3)のメモリとO(N^5)の計算量が必要
216MB
• というわけでアミノ酸2,3個が1GPUに乗る限界。毎ステップ全対全通信をするので複数GPUにすると性能がた落ち
• O(N^6)の演算量とO(N^5)のメモリを必要とするアルゴリズムもある
東工大の西川武志さんより
原子をただの粒とみなすのではなく、原子核のまわりの電子状態を計算し、原子のあいだにはたらく力をより正確に計算しながら、分子をシミュレーションする一連の手法。
量子化学シミュレーション
![Page 88: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/88.jpg)
GPUが使いにくい例2:多くのメモリが必要な計算
• プラズマの位置と速度の分布 f が6次元場のため、一辺の解像度をNとするとO(N^6)のメモリが必要
• しかし、速度方向の分布は特徴があるため、うまい表現を考えてメモリ消費を減らし計算量を増やすことは可能かも・・・・
• 多くの、できれば高速な、できればお互いの通信が速いメモリが欲しい計算というのはいくらでもある
• 1ノードにつめるメモリには限度があるし、膨大なデータを1プロセッサで処理していては時間がかかるのでやはり並列計算の発達が必要
88
運動論のシミュレーション
),,,,,( zyx vvvzyxf
![Page 89: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/89.jpg)
GPU利用が難しい・・・と言われていたが実現してしまった例:粉体
阪口 秀 西浦 泰介
89
GPUの専門家にすら、移植は困難といわれ
ていた(隣接関係が変わっていったり、1粒子に集中的にアクセスすることが必要)。まったく新しいアルゴリズムにすることでGPUでピークに近い性能を出すことに成功!雇用予算が事業仕分けで計上見送り
地球シミュレーター
![Page 90: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/90.jpg)
GPUの勃興は何をもたらすか
• GPU計算機は通信ハードウェアコストが副次的
高性能通信ハードウェアへの需要が高まる
低レイテンシ、高帯域幅ハードウェアが出現?
ライフサイエンスの人など、高性能通信が欲しい人が喜ぶ!(宇宙の人もよろこぶ)
それより重要なこと:人が、並列性を理解し使いはじめること
90
![Page 91: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/91.jpg)
GPUは安くありつづけるだろうか
• ハードの価格=(初期投資)÷(売れた数)
• GPUとしてはオーバースペックなFermiやSCC
やその他メニイコア演算ユニットが、パソコンレベルまで普及しなければ、安くて速い計算機が手に入らなくなるかも・・・
91
![Page 92: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/92.jpg)
メニイコアがパソコンレベルに普及すると私が信じる理由
92
コンピューターと人間何が違う?
![Page 93: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/93.jpg)
自然界の並列性• 宇宙には数千億の銀河
• 銀河には数兆の星
• 地球には無数の生命
• 人には60兆の細胞
• 脳細胞は140億個
すべてが同時に動いている
93
![Page 94: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/94.jpg)
認識の並列性• 140億コア(?)トランジスタ(?) ×500Hz(?)
=ピーク性能7TFlops(?)
• 実効性能~0.01Flops
• 1日ごとに数万個のトランジスタが壊れる
• でも、とても多機能、柔軟、ディペンダブル
• スカラー性能はなくても膨大な並列性があれば可能になるタスクの存在を強く示唆
94
7TFlops 40万円シミュレーションしかできない
↑7TFlopsPriceless
![Page 95: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/95.jpg)
人間が入力したデータの処理から、世界をじかに認識し、働きかける情報論へ
• 今あるアプリはメニイコアでただちに速くなるわけではない。だから、メニイコアが無用
• と思う人は見逃している:メニイコアでこそ動くような、普及を後押しするような、今は想像もできないようなアプリが生まれる可能性を!!
• 今想像できるのは・・・実世界認識?はてまた人工知能?
95
cv
![Page 96: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/96.jpg)
GPUコンピューティング・メニーコアコンピューティングの産業規模のオーダー評価
スパコンにしか使われなかった場合
• Cray:62億円(年商)
プロが使うソフトウェアができた場合
• Dassault Systems社(自動車CAD):1790億円
• Adobe社(フラッシュ):1660億円
ゲームに使われた場合
• 任天堂:1兆円
社会基盤となるソフトウェアに採用された場合
• Google:2兆円
• マイクロソフト:5兆円
![Page 97: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/97.jpg)
京速計算機に、仕分け人曰く
• 「一時的にトップを取る意味はどれくらいあるか」
• 「一番だから良いわけではない」
• 「ハードで世界一になればソフトにも波及というが分野で違う」
![Page 98: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/98.jpg)
俺なりの答え
• たしかによいサイエンスが伴わなければハードで一時的に一番をとってもあまり意味がない
速いコアをたくさん並べるというのが一番性能がでるので、ベクトル/メニイコア系の流れは(何度か)来るだろう
今ならメニイコア世界に一番乗りできる。俺たちがメニイコアコンピューティングという新学問、新産業を興す。国産ソフト、人材を売れる。
一番=金を払えば得られる定量的アドバンテージと一番乗り=誰よりも先んじて知っている定性的アドバンテージは全然違う
![Page 99: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/99.jpg)
むすび
• 情報論はずっとスカラー前提に発展してきた
• スカラーの周波数はもうあまり上がらない。SiGe
とかで上がっても、それをメニイコア化すればもっと性能が出る並列情報論の必要性
• ハードが出てしまったいま、ハードがないから理論
がない⇔理論がないから使いたくない⇔使われないから
ハードが出ないのスパイラルを打ち破りメニイコアを使おう。理論を作ろう。自然科学を研究しよう。
99
![Page 100: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/100.jpg)
GPUができなかったこと
• 低レイテンシ通信、大容量メモリ・・・
• しかし、↑をはじめ、あらゆるHPCを使いこな
すうえで、並列性の理解は大きな助けになるだろう。
• GPUはその発火点となりうる
• GPUだけでなく、多様なハードウェアが未来に
生まれるように。それらを使いこなせるように。みんなが驚き、喜ぶような発明をするために。
100
![Page 101: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/101.jpg)
以下 予備
101
![Page 102: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/102.jpg)
補.次世代GPUコンピュータ、Fermi
102
![Page 103: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/103.jpg)
2009/09/30 発表GPU Technologies Conference
103
http://www.nvidia.com/content/PDF/fermi_white_papers/NVIDIA_Fermi_Compute_Architecture_Whitepaper.pdf
![Page 104: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/104.jpg)
Fermi
104
Jen-Hsun HuangNVIDIA President&CEO
![Page 105: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/105.jpg)
Fermiとは
• NVIDIAの第3世代汎用GPU
• 汎用GPUに乗り出した第1世代(G80; 8800GTX…)、それを拡張した第2世代(G200, GTX 280)の時代に、数値計算ユーザーから
得たさまざまな意見をもとに抜本的な再設計を施された
• 自然科学に自然に使えるレベル
105
![Page 106: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/106.jpg)
おさらいーCPUとGPU
106
Core i7 : 731万トランジスタ
![Page 107: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/107.jpg)
CPUとGPU
107
Core i7 : 731万トランジスタFermi : 30億トランジスタ
![Page 108: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/108.jpg)
自然科学にとっての大きな進歩
Fermiの進歩
• 512コア、倍精度演算の完全サポート• じつは現時点で唯一の倍精度融合乗加算(MAD)をサポートするハードウェア
• ある人の推測:単精度1.5TFlop/s, 倍精度768GFlop/s
• 自動キャッシュの装備
• 全メモリにECC(誤り訂正符号)を標準装備
• GPU版ハイパースレッディング
「ベクトル計算機よりも高度な何か」に仕上がっている
108
![Page 109: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/109.jpg)
109
SFU= D3sin, cos, hypsin, log, exp, erf, gammaなど特殊関数を計算する
Core=M1
整数・実数の四則演算が可能、倍精度もOK
スケジューラ= TA
次にどの計算をするか決めて司令する。
x16
Streaming Multiprocessor = 32core
![Page 110: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/110.jpg)
Fermiのキャッシュ構造
110
メモリ=図書館
L2キャッシュ=研究室の本棚 768KB
L1キャッシュ=机の上に広げた本 64KB
レジスタ=計算用紙
メモリL2 L1の
間は必要なデータが自動的にコピーされる
いままでL2はなかった。L1は16KBで、全手動だった。
L2のおかげでSM間の通信が大幅
に高速化される。 プログラムも楽になる。
![Page 111: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/111.jpg)
ECC(誤り訂正符号)について
• 計算機は精度のよい宇宙線ディテクター• 計算機は数を電圧により2進数で表現しているんだが、あまりにも素子が小さいので、2次宇宙線が飛び込んできてビット
を反転させることがある(メモリー内の数値が偶然に変化する)。GPUはゲーム用なのであまり気にしてこなかった。
• ECC=典型的にはメモリ64bitにつき冗長8bitを付加。1ビットの過ちならどこが反転したのかまで含めて検出し、訂正できる。
• FermiではすべてのメモリにECCを装備
• もはやFermiでは宇宙線を観測できない!!111
![Page 112: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/112.jpg)
スケジューラ= TAが2人いて、コア=M1が片手でも
空いていれば計算をやらせる。Core i7がやっているhyper threading相当の機能
112
カーネルの同時実行が可能に。一部のテーブルである計算をやっている間のこりが全然別種類の計算を進めることができる。
![Page 113: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/113.jpg)
「汎用GPU」から「GPU型計算機」へ
• 他にも、「普通の」プログラムを実行する上で必須の改良が加えられている。
• 普通のFortran, C, C++ プログラムが難なく倍精度でFermi上で100~200倍の速度で動く可能性がある(主に自動キャッシュのおかげ)。
• 性能を引き出すには、ものすごい数で(予想:512コア×128スレッド/コア=65536並列)並列化されたアルゴリズムを書かないといけない。これは使う人の担当。そうすればFermiは全力で応えてくれる。
113
![Page 114: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/114.jpg)
Fermiへの懸念と期待• まあ、自社製品の広告だし• 倍精度が8倍速くなったって言ってるのはRadeonと比べても元が遅かったから
• どこまで公約どおり動くのかは使ってみるまで安心はできない
• NVIDIA毎年赤字だとか歩留まりが製品化できないレベルだとかいう噂もあるし発売日がずれたりしている
• そもそもこんなもん本来のGPUとして売るには高機能すぎ、値段がどうなるのか心配
• がんばって世に出していただければGPU計算が
容易になり、数値自然科学は大いに恩恵をこうむるだろう。
正にNVIDIAの社運を賭けた汎用GPU型決戦並機
114列計算
![Page 115: 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来](https://reader033.fdocuments.net/reader033/viewer/2022052304/558e1b601a28abbd5b8b4613/html5/thumbnails/115.jpg)
まとめ GPUについて• 安くて速い。さまざまな計算が100倍速に
• 1つのカードで数万並列の計算をしないと性能は生かせない。しかし自然科学にはそういう課題がたくさんあるはず。
• 1つのカードに計算能力が濃集してることで、逆に通信に余裕が出るケースもある1つのGPUパソコンをつくってスパコンを手に入れよう!GPUクラスタを作れば世界の頂点が見える。
• たとえGPUが滅びても、こういう超多並列ハードウェアはこれからの計算機の主流の1つではありつづけるだろう。
115
計算機にとらわれて目的を見失ってはこまりますが、たくさんある重要な課題の中からそれぞれの計算機に適したものを選ぶことは必要かと。そのためにはある程度計算機についても知っておくとよいかとおもいます。
いっしょにGPUを勉強して使いましょう!!