【发布时间】:2016-09-11 13:36:04
【问题描述】:
void pmergesort(int a[], int l, int r)
{
if (l < r)
{
int m = l+(r-l)/2;
#pragma omp parallel
{
#pragma omp single
{
#pragma omp task
pmergesort(a, l, m);
}
#pragma omp task
pmergesort(a, m+1, r);
#pragma omp taskwait
pmerge(a,l,m,r);
}
}
}
我的教授告诉我在第一次递归调用之前使用 #pragma omp single 以使程序更快。它在我的笔记本电脑上运行得非常快,但在 GPU 和 Xeon phi 上无法正确排序,因为这些机器有更多的并行线程。
请告诉我如何才能让它更快并在所有机器上正常工作。
【问题讨论】:
-
谁知道你的意思,因为代码未格式化并且大括号不平衡。
-
在粘贴代码时发生了道歉,现在我已经更改了,如果您有任何想法,请看看并告诉我?