並列スケルトンプログラミング

 昨日の輪講で、並列スケルトンプログラミングに関する発表を聞いた。これまでも並列スケルトンプログラミング、という概念に触れる機会はなくはなかったのだが、実際に発表を聞いてみると、予想以上に面白かった。要するに、並列に実行できるいくつかのプリミティブな操作(これをスケルトンと呼ぶ。mapとかreduceとか、zipとかscanとか。)を用意しておいて、実際に実行したい処理をその操作の組合せとして表現することで、並列処理を実現する、という話。
 発表は、並列処理を効率化しよう、という話だった。自明な書き方でオーダーが高い処理を自動的に変換してオーダーを下げよう、というもの。局所的に性能が上がる高速化を積み重ねていけば最適解が得られるわけではないそうで、効率の良いコードへの変換はなかなか難しいそうだ。(通常のコンパイラに於ける最適化にも同じような問題があるような気がするのだが、そこら辺はどうなんだろう?…こういうのって、普通は学部で習うような事なんだろうなぁ。)
 マルチコア時代の幕も上がったといっても良い今日このごろ、如何にして並列処理をうまく書くか、という問題は数年前よりも明らかに重要になっているように見える。重要になっているという事は解決に取り組む研究者が増えるということで、今からとびついてもちょっと遅いのかもしれないが、面白そうなので動向はウォッチしていきたい。
 どうでもいいが、π計算という単語で検索すると、円周率の計算に関するページばっかひっかかって検索しにくい。