C/C++で並列化を省力化できるかも知れないOpenMP

| コメント(0) | トラックバック(0)

概要: OpenMPを利用すると、さほど労力をかけずプログラムを並列化できるようです。自分ではまだ試していませんがかなり面白そう。

自分で頑張ってスレッド作って、複数スレッド間で頑張って同期したりしなくても、コード中にヒントを書いておけば勝手に並列化してくれる(と思う)OpenMPなんてのがあるそうです。概要掴むにはWikipediaにあるOpenMPの記事が役に立ちます。

当然ながらアプリケーションの複数スレッド間で資源が競合しないようにする為には元のソースコードに対する深い知識が必要ですが、OpenMPはコンパイラが使うミドルウェアといった感じのようです。コンパイラによるサポートが必要ですが、gccのC++コンパイラやVisual C++のclといった(独断と偏見によれば)メジャーなコンパイラではサポートされているようです。コンパイラは当然元のソースコードをよく知っていますから、うまく動くって訳ですね。ちなみにVisual C++の場合はVisual C++ の OpenMPを読むと良さそう。

こいつを知ったのは、最近OpenCVを入れたのですが、そこでOpenMPが使われていたからです。なるほど画像処理でも局所性が高いものが多いでしょう。スレッドを分ける要請は無いものの、CPU余ってるなら使いたいと。で、OpenMPという訳か。

ミドルウェアで思い出しましたが、Globusってのもあったなあ。こちらは複数台のコンピュータを使って一つのタスクをする(つまり、グリッドコンピューティングをする)為のミドルウェアだそうですが、前から入れよう入れよう思っているものの全然調べてない......。まあうちのとこのサーバ群も遊んでるマシンは少なくなってきてはいますが。

トラックバック(0)

トラックバックURL: http://w4ard.s26.xrea.com/program/mt/mt-tb.cgi/121

コメントする

このブログ記事について

このページは、E+Xが2009年11月 7日 23:01に書いたブログ記事です。

ひとつ前のブログ記事は「Movable Type 5の出荷日が決定」です。

次のブログ記事は「C++/CLIのデストラクタ/ファイナライザって難しい」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。