我正在使用Graphtitioning API Metis。我有一个来自节点的完整网格,并希望对该网格进行分区。在该分区之后,一个cfd-solver将在多个GPU上并行运行。问题是:我需要从metis输出块(每个维中的节点数相同)。我知道,metis只是在后台使用了Graph。

但是有可能获得块作为输出吗?

最佳答案

这对您来说可能为时已晚,但对其他人来说还为时不晚。如果您想要阻塞的输出,我还假定您正在使用结构化网格。

如果是这样,我们可以遵循this answer from SciComp。从METIS创建块输出的一个相当好的解决方案:

  • 创建一个新图来封装您的块结构
    原来的问题。也就是说,如果我们最初有一个50 ^ 3的
    与古巴元素相连的顶点,我们可以“重新创建”这种结构
    通过与古巴元素相连的较小的10 ^ 3顶点的多维数据集。除了
    这次,顶点对应于原始问题的块。
  • 在新图上运行METIS。
  • 将结果重新解释为METIS的块输出
    原来的问题。

  • 我说这是一个“合理的好”解决方案,因为您必须在运行METIS之前自己规定每个维度中的节点数。因此,也许您可​​以自己以某种方式优化此超参数,但也许您只需要进行有根据的猜测并使用METIS提供的输出即可运行。

    09-20 00:15