こんにちは、私はこのウェブサイトhttp://www.viva64.com/en/a/0054/を読んでおり、ポイント番号17は、バリアのない下のコードは間違っていると言います。どうして ?私はhttp://bisqwit.iki.fi/story/howto/openmp/#BarrierDirectiveAndTheNowaitClauseで読んでいます。各パラレルブロックの最後に暗黙的なバリアがあり、nowait指令が使用されていない限り、各セクションの最後にforとsingle statementがあります。OpenMP暗黙のバリア
struct MyType
{
~MyType();
};
MyType threaded_var;
#pragma omp threadprivate(threaded_var)
int main()
{
#pragma omp parallel
{
...
#pragma omp barrier // code is wrong without barrier.
}
}
誰かに説明してください。ありがとう
を同期[IMPLがありますパラレル領域の終わりにバリアを置く](https://computing.llnl.gov/tutorials/openMP/#ParallelRegion)。それが真実だとすれば、リンクのポイント番号17が間違っていると思います。 –
OpenMP 4.5の仕様をチェックしたところ、「並列構造の最後に暗黙的なバリアがあります」と書かれています。 –
仕様では、「スレッドの変数のすべてのコピーの格納は、スタティック変数が基本言語でどのように処理されるかによって異なりますが、プログラム内の指定されていない点で解放されます。 –