我正在学习使用 OpenCL 来优化我的一些模拟。我意识到我需要某种图形聚类或图形分区来有效地利用本地内存来处理无序网格。
示例:我使用 4 键顶点的规则网格实现了弹性布料模拟,我可以手动将其分离为本地化批次。现在我想转到一般不规则网格,其中每个节点可以有任意数量的边。
通过快速搜索,我找到了一些资源,但我不确定它是否能很好地满足我的需求(我在离散数学和图论领域没有经验)。
我想要的是:
- 将网格分割成批次,这样
- 所有批次都具有大致相同的大小(节点和边的数量),例如 16 个节点,每个节点对应于
local_size我的 OpenCL kernell - 不同批次之间的边数最少 - 最大限度地减少每个工作组加载的节点之间的重叠
- 所有批次都具有大致相同的大小(节点和边的数量),例如 16 个节点,每个节点对应于
- 简洁且易于由我自己实现的算法 - 对我来说,这只是次要问题而不是主要话题。即使它是开源的,我也不会对某些 3rd 方软件或库产生依赖。
- 它不必导致最优解,它可以是随机的和粗略的启发式的
- 它应该很快 -带有小的前置因子