OpenMP* THREADPRIVATE 節には記述できないループ変数

ループ変数は OpenMP* THREADPRIVATE 節には記述できません。

THREADPRIVATE 宣言子は、各スレッドで独自のコピーを持ち、複製される変数のリストを指定します。このような変数は、並列 ループ変数として使用するには適しておらず、OpenMP* 仕様ではそのような使用方法は禁じられています。

ID

問題箇所

説明

1

OpenMP* 宣言

Loop 宣言子の場所


#include <stdio.h>
#include <omp.h>

int i;
#pragma omp threadprivate(i)

int main(int argc, char **argv)
{
    // Bad: threadprivate variable cannot be used
    // as a loop counter in a parallel loop.
    
    #pragma omp parallel for ordered
    for (i = 1; i < 100; i++) {
        #pragma omp ordered
        printf("test: %d\n", i);
    }
    return 0;
}
        

© 2010 Intel Corporation. 無断での引用、転載を禁じます。