HOT CHIPS Tutorial
August 26th, 2008 | Published in Uncategorized
HOT CHIPS 20 のゼロ日目、チュートリアルに参加してきました。Stanfordは素晴しいですね。
It’s the Memory, Stupid
マルチコアになって何がたいへんかというと、実はメモリなんだ! というのが斬新でした。 コアが増えるにつれメモリへのアクセスがどっと混むので、帯域が問題になる。マルチコア時代にはレイテンシを下げないといけなくて、メニーコアになるにつれスループットがネックになってくる。 キャッシュの階層を増やすなどして、レイテンシを隠す。3D スタッキングのようなアクロバティックな技術をつかってコアとメモリの距離を近づけてあげる。
CUDAというNVIDIAの並列プログラミングモデルでは、メモリ階層のことをかなり意識して書かないと、ちゃんと速くならない。データがGPUコアの中にあるのか、スクラッチパッドにあるのか、コア間の共有メモリにあるのか、それともDRAMにあるのか。 いかにも最高性能を目指すゲームプログラミング向きだなーと。それに対して Larrabee ではコンパイラやライブラリにそうした泥臭い作業を任せる。プログラマはロジックとアルゴリズムに集中できる。ただし性能がどうなるかは分かりませんね。
とにかくStanfordのキャンパスはすばらしかった。広くて重厚ですね。 なんとかして入れないものか。
Github Tシャツ共同購入しませんか
August 26th, 2008 | Published in Uncategorized
2008.08.30 追記: 買いました。 送料込みの単価は ¥2,475 になりました。 受け渡しのときにくださいな。
Github Tシャツ なるものがあるらしいです。 かっこいい! 背中にIDを油性ペンで書き込むのだ!!
で、値段は $22 なのですが送料が $11 かかります。 安いもんなんですが、ちょっとでも節約したいですよねJK。 いっしょに買いませんか?
数人あつまったら決行しましょう。
受け渡し
なにかの勉強会/カンファレンスのときに受け渡してもよいですし、受け渡し会をやってもよいです。
方法
gist:7099 を fork してください。
2008.08.26 追記: gist がなんだか調子悪いので、コメントくださるかはてぶるなどして参加表明ください。
賛同者
Twitterで深夜に呼びかけて4人集まりました。Twitterすごい。
2008.08.26 追記: 2345名捕獲しました。
いちいちエントリに加筆するのは面倒なので Google Spreadsheet にしました。
Tags: github
IDF
August 25th, 2008 | Published in Uncategorized
Intel Developer Forum 2008 Fall に参加してきました。 世間的にはNehalemとかAtomが目玉でしたが、ここでは Concurrency に絞って振り返ってみます。
2つの世界
並列で書く世界になるとプログラマは2つに分かれる:
- 下回りに並列化はまかせてロジックに集中する上流階級
- 並列プログラミングモデルで細かい並列記述をがしがし書いて、最高の性能を引き出そうとする低レイヤ野郎
高水準言語とアセンブラとの関係と相似ですね。 上流階級が7割を占めて、ゲームやグラフィックス、組み込みといった低レイヤのひとたちが3割くらいでしょうか。 上流階級はデータ並列のプログラミングモデルであり、低レイヤはタスク並列も使い倒す。
これからは並列プログラミングができないと、コアが増えてプロセッサが速くなっても恩恵を受けれませんよ! というアジテーション。 Intelのツールをいま使えば、将来コアが増えても自動的にちゃーんとスケールするので使ってよ、という分かりやすいストーリーですね。Intelは下回りのツールを提供するので、みなさんは上流階級をエンジョイしてくださいね、というスタンスで、それはどう聞いてもベストの道なんだけど果たしてそううまくいくかどうか。
並列プログラミングモデル
TBB (Threading Building Blocks) がいますぐ使えるツールとしてあり、研究中のプロジェクトとして Ct がある。 いずれも C/C++ をベースとしていて、関数型ライクに並列プログラムを書ける。
並列プログラミング、特にデータ並列には関数型というか高階関数で書ける言語が向いているそうな。Map Reduce なんかもそうですよね。
アプリケーション
今見えているアプリケーション例として、よりきれいなグラフィックスのレンダリングとか物理シミュレーションなどがあがっていました。 いかにも計算量が必要そうなもの。 でも、ふつうのユーザはそんな計算量を必要とするんだろうか。 ふつうのユーザのコンピューティング環境はモバイルに移行しているというこの時に。
モバイルでこそマルチコアは生きてきますよね。低消費電力で高性能になるはずなので。 そこでいかに高速で電力効率の良いプログラムを書くことができるかが大切になってくるのでは。
Larrabee
Larrabeeはフリーダムすぎてすごい。なんとも遊びがいがありそうです。 ぱっと見たかんじはCellっぽいんだけどプログラマが楽をできるような工夫がこらされていて涙が出る。
それぞれのx86コアではμOSのようなものが動いているんだけど、これも自分で書けるそうな。 オレオレ分散OSが1チップで動く時代ですよ。たのしい。
LarrabeeはCPUなの? GPUなの? という質問をしている人がいて、「Larrabeeは革命的なプロセッサなんだ!」と答えていたのが印象的だった。 Larrabeeやばい。
難しさ
並列プログラミングでむずかしいのは、非決定性 (実行するたびに動作が変わる) とそれにまつわるデバッグです。 プログラム中のある行にブレークポイントを張ってデバッガで捕まえたとしても、他のコアの実行は非決定的なので、再現させるのが難しい。 その他の問題 (スケーラビリティ、同期など) については解決してきたけれど、非決定性についてはまだ決め手がない。 ブレークスルーが求められています。
Continuation
カンファレンスというのは一回行っただけでは本当のところは分からない。 何度か連続していくことでトレンドが見えてくるものですね。
ひとことでまとめると、英語がんばろうということでした… ><
まとまってないメモは以下:
Tags: idf, research
SIGGRAPH 2008
August 17th, 2008 | Published in CS
SIGGRAPH2008 に参加してきました。Connecting the Dots を感じた一週間でした。
Parallelism
ぼくは市井のしがない並列プログラマなので、GPGPU/CUDA/OpenCL/Larrabee の動向をウォッチするのがミッションでした。そのへんが既にSIGGRAPH的ではありませんが… 今回来たのは当たりだったと思います。なかなかマルチ/メニーコアを特集している学会はなく、各ベンダが主催するイベントで情報を集めているのが現状なので、まとめて見れたのはよかった。
OpenCL/Larrabeeについては初発表だったこともあってたくさんの人が集まっていました。世間の関心が伺えます。
簡単にこの分野のテクノロジーを表にしてみました。
この分野はいまが旬で、来年になったら新しい話はなくなっているのかなあと感じます。今はたくさんプラットフォームがあって、プログラミングモデルが乱立しているけれど、近いうちに淘汰されて1つか2つにまとまっていくことでしょう。そのとき覇権をとるのはどれか。 マルチプラットフォームで、プログラミングしやすいものが支持を得ることはあたりまえですね。OpenCLが有望だと思うのですが、果たしてそうなれるか。
Graphics
4年前はぼくもGraphics屋さんだったのでした。Volume Rendering っていう分野があって、Cell Projectionというアルゴリズムを並列化したよ、という論文を書いたりしていたのです。
何の気なしに聴いていたセッションで、ばりばりの Volume Rendering 話をしている人がいて、おおお懐しいぞこれは! と聴いていたらその人が Kwan-Liu Ma という大御所だと発表の最後で知ってのけぞった。実装してるとき、論文書いてるときに何度も参照してた論文の人が目の前でしゃべってる… ロックスターを目撃したようなものです。
続く発表では、その Volume Rendering がいかに医療の現場で役立っているか、というのを感動的な事例を基に病院のひとが話していた。衝撃でした。自分では、これ何の役に立つんだろう? と思いながら研究していたものが、真剣にやっているひとのところではちゃんと人の命を救っている。
同じ時間をつかうなら、純粋に時間を溝に捨てるようなことばかりしていないで、たくさんの人のためになるようなことに取り組まないと!
インタラクション, インターフェイス
New Tech ていう展示ではインタラクティブな何かがたくさんあって楽しめました。AVRとかすごい未来っぽい。 昔からずっとインタラクティブな何かワナビーなんですよね。いまだにそっち方面に行くことはないのですが…
Twitter
現地で、Twitterで知り合った さんと とごはんを食べたりだべったりしました。 会場の情報をシェアしたり、お互いのバックグラウンドについて話し合ったりしたのは貴重な体験でした。1人でほそぼそと過ごすだけだったはずの一週間がずいぶんとカラフルになったのは、Twitterがあったからこそです。Twitterはぼくの現実を拡張している。
Connecting the Dots
いまは並列プログラミングを食い扶持としていますが、その昔は画像処理をやってたり、レンダラを書いてたり、ユーザーインターフェイスワナビーしたりしてました。なんともばらばらなことやってきたもんです。でも今回それらの経験がちゃんと生きてることを感じられました。巨大なレンダリングには並列計算が要るし、画像処理とレンダリングはいとこみたいなものだ。関心をもって調べまわっていたことは、だれかのアンテナにひっかかる。自分のやってきたことはどこかで今につながる。
まとまってないログはこちら: 1日目, 2日目 (1, 2), 3日目, 4日目, 5日目