当使用不同的索引变量索引数组时,OpenMP for 循环?

OpenMP for loop when using a different index var to index the array?

我正在尝试并行化一个 for 循环,但我不确定如何并行化,因为这个循环使用的变量 k 不是 ii 递增 2,因为我一次处理数组 a 的两个部分)用于数组 bc 的索引。

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];
}