![]() |
ノート/並列プログラミングhttp://pepper.is.sci.toho-u.ac.jp/pepper/index.php?%A5%CE%A1%BC%A5%C8%2F%CA%C2%CE%F3%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0 |
![]() |
ノート
訪問者数 1495 最終更新 2009-02-04 (水) 17:33:30
並列処理は、今までその実現方法つまりハードウェアに近いところでたくさんの議論がなされてきたが、ソフトウェア側から見たまとまった教科書はあまり見当たらない気がする。 また、ソフトウェアの議論としては、昔のOSでの同期の議論や、逆に並列性を意識しない関数プログラミングやGHCなどの議論もあるが、最近実用化が進んでいる並列計算アプリケーションについてのプログラミング上の議論、たとえば並列プログラムを作ることや既存プログラムを並列に変換することは、まとめた説明が見当たらない気がする。
ここでは、アプリケーションプログラミングの側から見た並列処理を整理してみたい。
アプリケーションを並列実行する狙いは、唯一実行時間短縮のみと考えてよいだろう。
実効時間を短縮しなければ使い物にならないアプリケーションは多数存在する。具体的には、たとえば処理に100時間(丸4日間)かかるものが1時間に短縮されれば、条件をさまざまに変えてデータを取り直すなどのことができる。1/100の短縮が、たとえば100コアのシステムを使って100並列にすることによってもたらされるとすれば、十分に価値があるだろう。グラフィックスプロセッサ(GPU)による並列化では、1ボードで容易に100並列が実現できる。
対象とするのは、