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とXeonでは動作しません。
私はそれをより速くし、すべてのマシンで適切に動作させるために何ができるか教えてください。
コードがフォーマットされておらず、中カッコのバランスが取れていないことを誰が知っているか。 –
コードを貼り付ける際に謝罪しましたが、今では変更しました。見てみてください。 –