OpenMPの実行モデル

では、どうやってOpenMPは並列実行しているか、すこしお勉強しましょう。
OpenMPでは「fork-join」モデルというものを採用していると書いてあります。

図1.実行モデル(並列リージョン)の概念図

難しいことは言いません、並列リージョンを作成するとOpenMPではforkで複数スレッドに分岐して、並列リージョンが終わるときにjoinでまた一つのスレッドにまとめられると考えてください。このとき逐次プログラムで動いているスレッドをマスタースレッドと言います。ですから、並列リージョンに入るとforkでマスタースレッドから指定されたスレッド数に分岐して、終わったらマスタースレッドに統一されます。
つまり、このお約束を守ることができれば、pthread だろうが何を使おうが実現することでOpenMPのライブラリを作ることができます。

実行モデルはこんな感じです。

戻る