NVIDIA CUDA サマーキャンプ参加記(というか備忘録)

渋谷で開催されたNVIDIA CUDA サマーキャンプに参加してきました.

部活を卒業した先輩がテスト前ぐらいにつぶやいていたのを見つけての応募.
親戚の家に泊めてもらっています.ついでに,いくつか大学の周辺を見てから帰る予定です.

経過

親戚宅から自転車をこいで最寄駅に移動→いろいろ乗り継ぎ渋谷駅へ.相変わらず東京は人が多いなと思いつつ,何とか迷わずに会場へ移動.開催場所は何かしらの企業が入っているようで,スーツの30代ほどの方々とエレベータに一緒に乗ったときは緊張した.

受付終了後入室.何やら左側にKinectが見える.あーさわりたいなーと思いつつあいている席へ移動.

隣の人は工業高校の2年生で,学校から抽選で来たらしい.どうやら交通費は学校が出してくれたらしい.うらやましかった.

オープニング

Steve Furney-Howeさんの挨拶.NVIDIA Japanの日本代表(意味かぶってないか)かなり体つきがよかった.
頑張って日本語で挨拶をされていました.NVIDIAの説明が主だった.英語でおkと思ったのは僕だけではないはず.

NVIDIAムービーが流されました.日本語でおkと思ったのは僕だけではないはず.(まあ,なんとなくはわかりましたが)

GPUの歴史

Stevenさん(挨拶をされた人と名前が似ているが,全くの別人)がGPUの歴史について説明をしてくださいました.グラフィックボードについてはあまり調べたことがなかったので,かなり参考になりました.

メモ:GPUの大きな分岐点(プラグラマブルシェーダ,統合シェーダができる)

CPUとGPUの違いについて,ピザの配達にたとえての説明.とてもわかりやすかった.(まさかの伏線)

CPU:主に逐次処理,キャッシュが多い
GPU:主に並列処理,キャッシュが少なめ

GPUコンピューティング(今回の本題ですね)のいろいろな応用分野の紹介.
デザインの分野でも活躍しているのは知らなかった.

GPUスーパーコンピュータ

東京工業大学の青木教授の説明.東京工業大学と言えばやはりTSUBAME

GPUの説明.アーキテクチャはかなりとばして読んでいました.

メモ:科学計算は倍精度が必要.

TSUBAMEの説明.

TSUBAME1.2では,ラックの隙間にちょうどGPUが入ったから大量に搭載したのだとか.(世界初のGPUを大量に搭載したスーパーコンピュータ)

NVIDIA Fermi GPUの説明
・Streaming Multiprocessorの改革
・エラーチェックができるメモリの搭載

アーキテクチャ(読み飛ばし)

GPUの利点
・低価格
・単一あたりの消費電力は高いが,高速で演算すると結果として,電力あたりの計算量は上がる→低消費電力

TSUBAME2.0は今世界で第5位だよ!
(ハイパー言い訳タイム.でも,結構納得の理由が多かった.)
(大学の所有するスーパーコンピュータの性能が...おっと誰か来たみたいだ)

GPUコンピューティングの最先端研究の紹介

二相流,気象,凝固の3つ.

二相流では,現在は格子モデルを用いたシュミレーションが使われているという話.
(実際に動かしているものが3Dテレビで表示されていました.)

ここから大学院生のお話

気象では,6時間の天気予報を1か月かけて手計算した人の話
ENIACで行われた天気予報の話
現代の天気予報の話
高解像度の計算の必要性(例:ゲリラ豪雨)
次世代の天気予報
FortranからC/C++を経由してCUDAに直すのが...,つレガシーコード改善ガイド)

凝固の計算(樹枝状凝固成長計算)の話
強度計算大切だよね→いちいち観測してられないからシミュレーションしちゃいなよ.

TSUBAMEを監視していたときの苦労話:24時間耐久,量が多いと壊れやすい)

GPUとCPU並列で実行

CUDA入門(1)

並列処理の種類(タスク並列とデータ並列:データ並列の方がGPU向け)

hostコードとdeiceコードの関係(host=cpu,device=gpu)

blockとthreadの詳細がいまいち把握できなかったので要勉強

blockとthreadをクラスの班分けにたとえた説明

昼休み

伏線回収.昼食はピザ.ピザーラ久しぶり.

込み合っていたので,遠くの方へ移動して食べてた.なんか,ミクが変なうごきしてる.
のどが渇いたので飲み物をとりに.やっぱりミクが変な動きしてる.
お手洗い.未だにミクが変な動きしてる.
マイクロソフトの人が携帯端末をもって楽しそうに話をしている.
3Dの流体シミュレーションを見てみた.展示してある本は,うちの教員が持ってる本だった.
マイクロソフトの人がKinectの説明をしている.肩をあげていると女の子っぽく見えるとか.ミクがしっかりした動きをしている.
青木教授がジュースを飲みながらKinectに関心を示している.(おっさんっぽい動きのミクがみられる.)
マイクロソフトの人が高専の卒業生だったことが判明.話に乱入.名刺をいただく.

CUDA入門(2)

GPUで並列処理したらやっぱり早いね.

FLOPSを出してみよう.
簡単な操作なので,メモリの読み書きが大きく影響しているはず.メモリのバンド幅を測定してみる.

応用例(1)拡散現象のシミュレーション

競争.どうやら,スレッドかブロックのどちらかをx軸方向に多くとるのが正解だったようで.

ほとんど同じプログラムなのに実行速度が全然違う.

応用例(2)光の屈折,回折

東工大の院生が作ったプログラムをいじりまわして,屈折と回折を見てみる.(重要なところはすでにプログラムされているので,障害物を配置したり,媒質を変更したりしてみる.式はとりあえず回転が関係していることだけわかった.)
CPUを使って動かすと,すごく遅い
GPUを使って動かすと,早く動く.

DreamSparkの説明

マイクロソフトの人がDreamSparkimagine cupを紹介
(いつもお世話になってます)
すごく熱く語っていらっしゃいました.

表彰式・抽選会

拡散のシミュレーションでいい成績を出した人にUSBメモリが配られる.

抽選で3名にグラフィックボードの贈呈

抽選で10名にノートパソコンの贈呈・・・ちゃっかりもらっちゃってるし

解散

雨降ってるし.
頑張って駅までついたものの,自転車・・・ノートパソコンどうやって持って帰ろう.
親戚は車が出せないらしい.親戚に袋をもってきてもらって押して帰る.かなり疲れた.
事情を説明したら着払いでいいから自宅に送ってくれたのかな.
ノートパソコンは自宅に送ります.10日後まで封が開けられない...

感想

TSUBAMEにはSuperConで昨年お世話になった(正確にはそのサブシステムだが)ので,興味のある話が多かった.
強いGPUを積んだパソコンを初めて手に入れたので,GPUを使っていろいろなプログラミングをやってみたい.
ノートパソコンを引いても来る価値はあったと思う.

家に帰ったら,とりあえずもらったノートパソコンに,VisualStudio,CUDAの開発環境,CygwinHaskell Platform,JDK,msysgit,NUnit,TestDriven.NETをインストールせねば.
今使っているパソコンは,HDDを少し開けてOSをもう1個入れるか.

※読みにくいのは仕様.文がいまいちなのも仕様.気分が乗ったら書き直す.