Metis - 阻止输出

时间:2016-12-26 20:33:10

标签: c++ graph gpu hpc metis

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

然而,可以将块作为输出吗?

1 个答案:

答案 0 :(得分:1)

对你来说这可能为时已晚,但对其他人来说也许为时已晚。如果你想要一个阻塞输出,我也假设你正在使用结构化网格。

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

  1. 创建一个封装您的块结构的新图 原始问题。也就是说,如果我们原来有一个50 ^ 3的立方体 与cubal元素连接的顶点,我们可以“重新创建”这个结构 通过与立方体元素连接的较小的10 ^ 3立方体顶点。除了 这次,顶点对应于原始问题的块。
  2. 在新图表上运行METIS。
  3. 将结果重新解释为METIS的块输出 原始问题。
  4. 我说这是一个“相当不错”的解决方案,因为你必须在运行METIS之前自己规定每个维度中的节点数量。所以也许你可以用某种方式自己优化这个超参数,但也许你只需要进行有根据的猜测并运行METIS提供的输出。