2016-07-31 32 views
1

我开始深入OpenMP,我不确定我完全理解firstprivate如何处理数组。在OpenMP中将数组声明为firstprivate - C

如果我有这样的代码:

int array[5] = {0, 1, 2, 3, 4}; 
int i;  
#pragma omp parallel for firstprivate(array) 
for (i=0; i<SOME_LENGTH; i++) { 
    // something using array as a right hand operand 
} 

请问阵列复制到每一个线程?如果它是一个更复杂的结构而不是简单的int

是内存本身复制还是值?

此外,如果你可以指向我更多的文件的方向,我会非常感激。

谢谢!

回答

2

是的,每个线程都获得自己的变量实例,并初始化为该变量的值。

在原始文档和一些基本教程旁边,文档似乎有点稀疏。

+0

即使它是一个数组? –

2

作为每OpenMP 4.5 2.15.3.4,所述元素被复制:

对于非阵列类型的元件的阵列,每个元件被初始化为如果由分配从原始数组的一个元素新数组的相应元素。