8つの都市があります。各都市の異なる統計値について計算を行います。2つの異なったプラグマはそれらの間に障壁を持っていますか
forループの最後に障壁があるかどうかを知る必要があるので、他の以前の都市の統計が完了した後に次の計算グループが開始されます。
これは、各計算が以前のものと異なるため、このようにする必要があります。
#pragma omp for
for (int i = 0; i < count; ++i)
{
// calculate stats about population
}
// is there a barrier in here?
// Or do I need an explicit barrier
// #pragma omp barrier
#pragma omp for
for (int i = 0; i < count; ++i)
{
// calculate stats about cars
}
// is there a barrier in here?
#pragma omp for
for (int i = 0; i < count; ++i)
{
// calculate stats about weather
}
// ...same idea
あなたが '#pragma omp parallel for'を意味すると仮定した場合、すべてのスレッドが終了するのを待つ暗黙のバリアがループの終わりにあります。ただ1つのスレッドだけが次の '#pragma ... 'まで実行フローを継続します。 – Aziz
したがって、それぞれのforループの後に明示的なバリアが必要ないのですか? OK。それを回答として投稿するべきです。 – jack