Gridable Type構想 (2)
このエントリーではMovable Typeを用いて「グリッドする」ことを目的としたGridable Type構想を紹介する。(2)はGridable Typeの基盤となる「トラックバックパッシングモデル」について議論する。
トラックバックパッシングモデル
Gridable Typeで用いられる代表的なプログラミングモデルであるトラックバックパッシングモデルについてここでは述べる。このモデルは、ブログで用いると不愉快でしかないトラックバックを有効に活用した並列プログラミングモデルである。
メッセージパッシングは分散メモリ型の並列計算機やクラスタ上で広く利用されているが、トラックバックパッシングはほとんど使われていない。よく見かけるのはトラックバックバッシングである。
トラックバックパッシングモデルでは、アプリケーションは自律したプロセスの集合として動作し、各プロセスが独立した記憶域を持つ。このモデルでは、プロセスはトラックバックを受信することで起動し、トラックバックを送信することで他のプロセスと通信する。メッセージパッシングモデルではメッセージを通信する送信側プロセスと受信側プロセスが明示的にメッセージのやり取りを行う必要があるが、トラックバックパッシングモデルではトラックバックの通信は常に新規のプロセスの生成を伴うためこのような必要はない。
トラックバックパッシングモデルのセマンティックスは、並列計算技術におけるActive Messagesのものに類似していると言える。Active Messages同様、トラックバックの受信側メッセージハンドラ(この場合プロセスとほぼ同義)は非同期に実行されなければならない。また、トラックバックのメッセージングもPUT型・GET型の二種類に分類できる。
PUTメッセージ送信時には非同期に起動された受信側ハンドラがメッセージの受信を行い、計算を行う。送信側はブロックする必要はない。GETメッセージ送信時には非同期に起動された受信側ハンドラがメッセージの受信を行い、少量の計算を行い、送信側に戻り値を返す。ただし、送信側が戻り値が返されるまでブロックすると処理が直列化されてしまうので意味がない。
PUT/GETのいずれにしても送信側が別プロセスを起動してバックグラウンドでトラックバックパッシングすることが性能上の要求から望ましい。そのためのコンストラクトとしてMTにはMT::Util::start_background_taskが用意されている。
このエントリーのトラックバックURL: http://as-is.net/mt/mt-tb.cgi/277
Comments (0)