parallel-processing - 平行Delaunay三角剖分

标签 parallel-processing openmp triangulation delaunay divide-and-conquer

我正在尝试使用openmp并行化Guibas Stolfi delaunay triangulation

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

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

我尝试了parallelization technique shown here,但即使这样也不起作用。
我在某处读到有关嵌套并行性的信息,但不确定如何实现它。
谁能解释分而治之算法如何并行化?

CODE:在主函数和应用部分构造中两次调用了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);
}
}
}

最佳答案

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

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

关于parallel-processing - 平行Delaunay三角剖分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10165666/

相关文章:

multithreading - 互斥锁是如何工作的?互斥锁是否全局保护变量?定义它的范围重要吗?

c++ - OpenMP 问题

android - opengl es中的3D多边形三角剖分

.net - 如何在高并发代码中提高 .NET 4.0 的垃圾收集器性能?

c# - 按值对 ConcurrentDictionary 进行排序

C++:OpenMP 中的私有(private)静态变量

c - 对具有已知边界的平面点集进行三角测量

python - 使用 Python 和 OpenCV 进行 Delaunay 三角剖分

c++ - 一个线程结束后调用另一个线程中的方法

parallel-processing - OpenMP 任务循环 : synchronization between two consecutive taskloop constructs