Я учу себя OpenMP и пытаюсь сделать цикл, где инструкции являются анти-зависимыми, параллельными.
#include <stdio.h>
#include <stdlib.h>
#include <omp.h>
int main()
{
int a[10] = {1,2,3,4,5,6,7,8,9,10};
int i;
int n = 10;
#pragma omp parallel for private(i)
for (i = 0; i < n / 2; i++) {
a[i] = a[i + 1] + a[2 * i];
printf("%d, %d\n", a[i], i);
}
}
Когда я не использую OpenMp, результат будет 3 6 9 12 15
. Я пытаюсь воспроизвести этот результат с помощью OpenMp, но каждый раз получаю разные ответы. Нужно ли переписывать цикл?