OpenMP Firstprivate条款

时间:2016-10-18 15:31:16

标签: openmp

有没有人知道以下是否可以成为openmp中firstprivate的一个例子?

rowstr[0] = 0;
for (j = 1; j < nrows+1; j++) {
    rowstr[j] = rowstr[j] + rowstr[j-1];
}
nza = rowstr[nrows] - 1;

firstprivate变量为rowstrj为私有变量。

1 个答案:

答案 0 :(得分:0)

实际上不是,如果你使用firstprivate子句,你的输出可能会有不一致,因为某些值永远不会更新,澄清:

让我们假设它是一个大小为4的数组,你有2个线程,一个线程你得到迭代0和1,另一个2和3(在一个完美的世界)。如果使用firstprivate子句,则第二个线程将对数组的位置2进行求和,最初位于位置1的数组中,而不是像顺序版本那样将其与上一次迭代求和。

不仅仅是这个,这个特殊的循环有依赖性问题,你应该使用像nza中的总和减少。

相关问题