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上正確排序,因爲這些機器具有更多並行線程。並行合併排序工作在筆記本電腦上,但不是在GPU和至強phi
請讓我知道我能做些什麼來使它在所有機器上更快速和正常工作。
誰知道你的意思,因爲代碼沒有格式化,大括號不平衡。 –
在發生的代碼粘貼過程中,我已經改變了它,請看一看,如果您有任何想法,請告訴我。 –