3

我正在尝试使用openmp并行化Guibas Stolfi delaunay 三角测量

这里有两件事要并行化-我所做的mergesort()和我被卡住的divide() 。我尝试了所有可能的方法,但徒劳无功。

在 divide() 中遵循的方法(除 n 征服)与 mergesort() 相同,但应用相同的并行化技术(omp 部分)仅适用于 mergesort。

我尝试了此处显示的并行化技术,但即使这样也行不通。我在某处读到了嵌套并行性,但我不确定如何实现它。谁能解释分治算法是如何并行化的?

代码:在主函数和应用部分构造中调用了两次合并排序。对除法执行相同操作不起作用

#pragma omp parallel
{
#pragma omp sections nowait
{
#pragma omp section
{
merge_sort(p_sorted, p_temp, 0, n/2);
}
#pragma omp section
{
merge_sort(p_sorted, p_temp, (n/2)+1, n-1);
}
}
}
4

1 回答 1

1

我在 Windows 中使用 CreateThread 调用成功地进行了并行化,诀窍是将点分成 2^n 个缓冲区,在单独的线程中处理每个缓冲区,然后连续合并相邻的边,直到最后一次合并。

我有一个演示程序来创建随机数据并进行三角测量并显示结果(对于较小的情况)。看起来这个站点不允许我下载我拥有的程序和显示工具的 .zip。如果您可以建议上传网站或提供电子邮件,我会将其发送给您。

于 2012-05-17T15:08:36.210 回答