宣言のすべてで THREADPRIVATE として変数が指定されていません。
THREADPRIVATE 宣言子は、各 THREADPRIVATE 変数の宣言の後に記述されていなければなりません。
ID |
問題箇所 |
説明 |
---|---|---|
1 |
定義 |
変数が定義された場所 |
2 |
定義 |
変数が定義された別の場所 |
#include <omp.h> // myArray is threadprivate in file1.c int myArray[10]; #pragma omp threadprivate(myArray) int myFunc() { return myArray[0]; }file2.c:
#include <stdio.h> #include <omp.h> // myArray is NOT threadprivate in file2.c extern int myArray[10]; extern int myFunc(); int main(int argc, char **argv) { int i; int y; omp_set_num_threads(3); #pragma omp parallel for ordered private(y) for (i = 0; i < 10; i++) { myArray[i] = i + 11; y = myFunc(); #pragma omp ordered printf("i = %d, #threads = %d, y = %d\n", i, omp_get_thread_num(), y); } return 0; }
© 2010 Intel Corporation. 無断での引用、転載を禁じます。