2

並列領域内に for ループがある場合、for ループは再び並列化されますか、それともすべてのスレッドが独自の for ループを実行しますか?

T sum;

#pragma omp parallel
{
    #pragma omp for reduction(+: sum)
    for (;;)
    {
        T priv_var;

        sum += priv_var;
    }
}
4

1 に答える 1

3

はい、このコードにより、OpenMPはfor、リージョンによって生成されたスレッド間でループを並列化しparallelます。ただし、現在のforステートメントはOpenMP並列化には無効であると思います。整数ループ変数、開始と終了、および増分式を明示的に指定する必要があります。

実際、コードは。を使用した単一のループと同等になります#pragma omp parallel for reduction(+: sum)

MDSNの詳細

于 2012-07-15T15:48:22.137 に答える