Metis - 块输出
Metis - Block output
我正在使用 Metis,一个图分区 API。我有一个来自节点的完整网格,并想对该网格进行分区。在此分区之后,cfd-solver 将 运行 在多个 gpu 上并行。问题是:我需要一个来自 metis 的块输出(每个维度中的节点数量相同)。我知道,metis 只是在后台使用了一个 Graph。
仍然有可能得到块作为输出吗?
这对您来说可能为时已晚,但对其他人来说也许还不算太晚。如果您想要阻塞输出,我还假设您正在使用结构化网格。
如果是这样,我们可以跟进this answer from SciComp。从 METIS 创建块输出的相当好的解决方案:
- 创建一个封装你的块结构的新图
原来的问题。也就是说,如果我们最初有一个 50^3 的立方体
与立方体元素相连的顶点,我们可以"recreate"这个结构
通过与立方体元素相连的较小的 10^3 立方体顶点。除了
这次,顶点对应于原始问题的块。
- 运行 METIS 在您的新图表上。
- 将结果重新解释为 METIS 的块输出,供您使用
原来的问题。
我说这是一个 "reasonably good" 解决方案,因为您必须在 运行ning METIS 之前自己规定每个维度中的节点数。因此,也许您可以通过某种方式自己优化这个超参数,但也许您只需要做出有根据的猜测,然后 运行 使用 METIS 提供的输出。
我正在使用 Metis,一个图分区 API。我有一个来自节点的完整网格,并想对该网格进行分区。在此分区之后,cfd-solver 将 运行 在多个 gpu 上并行。问题是:我需要一个来自 metis 的块输出(每个维度中的节点数量相同)。我知道,metis 只是在后台使用了一个 Graph。
仍然有可能得到块作为输出吗?
这对您来说可能为时已晚,但对其他人来说也许还不算太晚。如果您想要阻塞输出,我还假设您正在使用结构化网格。
如果是这样,我们可以跟进this answer from SciComp。从 METIS 创建块输出的相当好的解决方案:
- 创建一个封装你的块结构的新图 原来的问题。也就是说,如果我们最初有一个 50^3 的立方体 与立方体元素相连的顶点,我们可以"recreate"这个结构 通过与立方体元素相连的较小的 10^3 立方体顶点。除了 这次,顶点对应于原始问题的块。
- 运行 METIS 在您的新图表上。
- 将结果重新解释为 METIS 的块输出,供您使用 原来的问题。
我说这是一个 "reasonably good" 解决方案,因为您必须在 运行ning METIS 之前自己规定每个维度中的节点数。因此,也许您可以通过某种方式自己优化这个超参数,但也许您只需要做出有根据的猜测,然后 运行 使用 METIS 提供的输出。