研究日誌。

大規模なグラフ処理に対してメモリ階層構造を考慮した高性能なソフトウェアを開発。

OpenMP - その5。

2009-10-19 01:54:28 | Weblog
OpenMP に関して、schedule の方針は 3 パターンある。

・schedule(static, chunk)
chuck で loop を静的に分割

・schedule(dynamic, chunk)
chunk を 動的に空きスレッドに割り当てる

・schedule(guided, chunk)
指数関数的に分割。ようするに最初は大きく分割、後半は少なく分割。

その他、環境変数で指定するものもあり。
・schedule(runtime)


これらには、それぞれ実装に特性があるそうで単に機能だけで選ぶのは良くなさそう。しかしながら、このブログで公開した結果は最短路ソルバー(並列部分は、粒度の大きな関数)なので、どれでもそこそこ性能は出るはずだが、うまくいかない。

最新の画像もっと見る

2 コメント

コメント日が  古い順  |   新しい順
Unknown (後藤)
2009-10-24 04:09:27
では、残るは CPU の Affinity か、スレッド内で競合している変数があるのでは?
Intel コンパイラだとその関係の警告も表示してくれると思ったけど。
返信する
Unknown (安井)
2009-10-24 12:32:13
仰るとおりです。競合が起きているのですが、スレッドをコアに定着させるには面倒な関数を使うしかなくなりそうですし、OpenMP のメリットが見られなくなってきそうです。
返信する

コメントを投稿