PRIVATE 変数が初期化されていません。
デフォルトでは、PRIVATE 変数は対応する外部変数の値に初期化されません。初期化する場合は、PRIVATE 節ではなく、FIRSTPRIVATE 節を使用する必要があります。各スレッドは変数を使用する前に自身の PRIVATE 変数を初期化する責任があります。このエラーは、初期化されていない変数エラーの一種で、変数が PRIVATE の場合に出力されます。
ID |
問題箇所 |
説明 |
---|---|---|
1 |
初期化されていない読み取り |
初期化されていない PRIVATE 変数が読み取られた場所 |
#include <stdio.h> #include <omp.h> int b; void do_work() { int i; #pragma omp parallel { #pragma omp for ordered private(b) // INCORRECT: private variable "b" not initialized before entry to the loop for (i = b; i < 100; i++) { b++; #pragma omp ordered printf("i = %d, #threads = %d, b = %d\n", i, omp_get_thread_num (), b); } } } int main(int argc, char **argv) { b = 50; omp_set_num_threads(3); do_work(); return 0; }
© 2010 Intel Corporation. 無断での引用、転載を禁じます。