2007年01月30日
Multicore Programming Primerが面白すぎる
MITの「Multicore Programming Primer」というコースの資料が面白すぎます。
Cell(PS3)を使うというのでスラドでも話題になったのですが、むしろそれは一部に過ぎなくて、並列プログラムを書くために、現在どんなアプローチが有るのかというのを体系的に知る事が出来ました。もちろん最初の方にはCellの詳しいアーキテクチャ解説もありますし、implicit or explicitな並列性の抽出、言語 or ハードウェアでのアプローチが盛りだくさんです。
Lesson8で出てくるStreamItなる言語、Star-Pなる環境については初めて知りました。Cilkの章は何故資料が無いのでしょうか・・・。
StreamItのチュートリアルにいくつかサンプルプログラムがあるのですが、"pipeline, filter, splitjoin"等の並列プログラムに特有のプログラム構造がそのまま書ける様になっています。
確かにpthreadでプログラムを書いていても、キューを介した通信で並列に処理を行うというのが多いです(pipeline or split)。並列性のあるプログラムを見るとデータの流れは何種類かのパターンにしかならなさそうなので、言語の書きやすさは置いておいてこういうアプローチは割と正しいのかなぁ。
あと、ここには出てないけど最近Erlangの資料等にも目を通したりしています。Mnesiaなる分散データベースが面白そうだなーとかいうのがきっかけだったかな。日本でいじってる人いないかなーと思ったらkinabaさんのところだったりするのがなんというか、kinabaさん最高 !!
こっちはマルチコアというよりクラスタ向けの言語環境だけど、処理系が対応したらなんとでもなりますねぇ。Erlangで書かれたYawsなんていうHTTPサーバーもあるみたいです。速いかどうかは謎。これは何かプログラムを書いてみたいところです。分散系の有名なアルゴリズムとか書くのには一番楽そうな言語だなぁ・・・。
テストからの現実逃避。
- by
- at 00:40

comments
http://cag.csail.mit.edu/ps3/lectures.shtml
最後まで終わった模様。