ループ変数は 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. 無断での引用、転載を禁じます。