【发布时间】:2019-04-27 12:47:37
【问题描述】:
我尝试使用并行任务来执行归约,但总是得到 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);
但是当我使用parallel for时,结果是对的,是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);
【问题讨论】:
标签: c multithreading performance parallel-processing openmp