マルチコアにおけるソフトウェア

情報処理*1 Vol. 47 No. 1*2の特集である「マルチコアにおけるソフトウェア」という記事が、仕事に関連していて興味深かったので時間を見つけて軽く読んでみました。
私はペトリネットとかその辺の最新情報を期待していたのですが、そうではなくて OpenMP とか MPI の紹介でした。どちらも見聞きするのは初めての用語なので、Wikipedia などで調べてみました。前者は C 言語のコードに #pragma で補助情報を埋め込むことで、自動的にマルチプロセッサ向けのコードを生成する企みのようです。実際に対応したコンパイラなども出てきているようです。また、後者はメッセージパッシングのための標準 API を定義しようとするもののようです。

前者に関しては自動並列化コンパイラの延長のような印象を感じました。これがあらゆる分野のアプリケーションに適用可能かどうかについては、少々疑問を感じました。後者に関していうと、まだ API 仕様書などはチェックしていませんが、メッセージパッシングの API を標準化しただけであって、並列分散ソフトの設計を手助けするような抽象化には感じませんでした。ただし、もう少し調べてみないと、POSIX Thread みたいな重要な標準化かどうか判断つきません。
ソフト開発ツールのマルチコア対応や自動並列化コンパイラといった技術は、設計生産性の向上に寄与すると思いますが、並列分散システムそのものの設計技術を技術者に展開できないと、設計技術全体の底上げにはならないような気がします。特に一般の組込系ソフト技術者にとっては、マルチプロセッサ設計や並行プログラミングそのものが、まだ十分に理解されているとは思えません。
いずれにしても面白い特集だったので、もう少し深く読み込んでみたいと思いました。

*1:情報処理学会の会誌。

*2:2006年1月号。