初期化されていない OpenMP* PRIVATE 変数

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