Я пытался использовать параллельное задание для выполнения сокращения, но всегда получаю 0. Вот мой код:
int sum = 0;
#pragma omp parallel reduction(+:sum)
#pragma omp single
for(int i=0; i<10; i++)
{
#pragma omp task
{
printf("Thread: %d\n", omp_get_thread_num());
int y = 5;
sum += y;
}
}
printf("%d\n", sum);
Но когда я использую параллельное для, результат правильный, а это 50. Может кто-нибудьподскажите, как изменить код параллельной задачи?Это моя параллель для кода, который хорошо работает:
int sum = 0;
#pragma omp parallel for reduction(+:sum)
for(int i=0; i<10; i++)
{
printf("Thread: %d\n", omp_get_thread_num());
int y = 5;
sum += y;
}
printf("%d\n", sum);