当使用不同的索引变量索引数组时,OpenMP for 循环?
OpenMP for loop when using a different index var to index the array?
我正在尝试并行化一个 for 循环,但我不确定如何并行化,因为这个循环使用的变量 k
不是 i
(i
递增 2,因为我一次处理数组 a
的两个部分)用于数组 b
和 c
的索引。
for (int i = 0; i < asize; i +=2)
{
b[k] = a[i];
c[k] = a[i + 1];
k++;
}
#pragma omp parallel for
导致与 k
的数据竞争并产生错误的结果
和 #pragma omp parallel for private(k)
导致每个线程在其自己的 I.E. 上递增 k。多个线程同时写入 b[0] and c[0]
也会产生错误结果。
类似的东西?
for (int k = 0; 2*k < asize; k++) // i = 2*k
{
b[k] = a[2*k];
c[k] = a[2*k + 1];
}
我正在尝试并行化一个 for 循环,但我不确定如何并行化,因为这个循环使用的变量 k
不是 i
(i
递增 2,因为我一次处理数组 a
的两个部分)用于数组 b
和 c
的索引。
for (int i = 0; i < asize; i +=2)
{
b[k] = a[i];
c[k] = a[i + 1];
k++;
}
#pragma omp parallel for
导致与 k
的数据竞争并产生错误的结果
和 #pragma omp parallel for private(k)
导致每个线程在其自己的 I.E. 上递增 k。多个线程同时写入 b[0] and c[0]
也会产生错误结果。
类似的东西?
for (int k = 0; 2*k < asize; k++) // i = 2*k
{
b[k] = a[2*k];
c[k] = a[2*k + 1];
}