Я пытаюсь распараллелить цикл for, но я не уверен, как, потому что этот цикл использует переменную k
, которая не i
(i
увеличивается на два, потому что я имею дело с двумя частями массива 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)
заставляют каждый поток увеличивать k на свою собственную I.E. запись нескольких потоков в b[0] and c[0]
одновременно также приводит к неверным результатам.