多核 - 如何合并每个核心上找到的本地数据组?
我有一组分布在 3D 网格上的大量标量值(每个顶点一个值)。
我的目标是显示:
- 网格中值大于阈值的所有点。
- AND 将连接的点分组(以简化显示)。
所以我的基本解决方案是:
- 找到通过阈值测试的点
- 对于每个尚未分组的点,创建一个新组并递归地将所有连接的点放入该组。
这工作得很好,直到我开始使用多核解决方案:
- 数据集已划分为多个核心,
- 每个核心都知道其他核心共享的边界点。
- 我正在使用 MPI 在内核之间进行通信。
我使用原始算法来查找单个核心的“本地”组。
我的挑战是将“本地”组合并到全球组中。 由于多种原因,问题变得复杂:相互联系的群体可以跨越许多核心边界。 在一个核心上看似独立的组可以通过第二个核心上的组连接。
提前致谢。 杰夫
I have a large set of scalar values distributed over a 3D mesh (one value per vertex.)
My goal is to show:
- all points in the mesh where the value is greater than a threshold.
- AND group the points that are connected (to simplify the display.)
So my basic solution was:
- Find the points that pass the threshold test
- For each point that has not been grouped, create a new group and recursively put all connected points into that group.
This works fine, until I started using a multicore solution:
- The data set has been divided across multiple cores
- Each core knows about boundary points that are shared by other cores.
- I'm using MPI to communicate between cores.
I used my original algorithm to find "local" groups a single core.
My challenge is to merge "local" groups into global groups. The problem gets complicated for a number of reasons: Connected groups can cross many core boundaries. Groups that seem separate on one core can be connected by a group on a second core.
Thanks in advance.
Jeff
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
阈值测试可以在本地进行,因此为了简单起见,我们可以将其从讨论中删除。 您想要的是有一个分布式算法来计算图中的连接组件。 这篇论文应该非常相关:
http://citeseerx.ist .psu.edu/viewdoc/summary?doi=10.1.1.46.1091
the threshold test can be carried out locally, so for the sake of simplicity we can eliminate it from the discussion. What you want is to have a distributed algorithm that calculates the connected components in your graph. This paper should be very relevant:
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.46.1091