Как вы распараллеливаете анти-зависимый цикл в C, используя OpenMP? - PullRequest
0 голосов
/ 30 сентября 2019

Я учу себя 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, но каждый раз получаю разные ответы. Нужно ли переписывать цикл?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...