一貫していない THREADPRIVATE 宣言

宣言のすべてで THREADPRIVATE として変数が指定されていません。

THREADPRIVATE 宣言子は、各 THREADPRIVATE 変数の宣言の後に記述されていなければなりません。

ID

問題箇所

説明

1

定義

変数が定義された場所

2

定義

変数が定義された別の場所

file1.c:

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