ParMetis 是否生成有关处理器邻居的任何信息?
Is the ParMetis generating any information about neighbors of a processor?
我正在研究移动网格的并行有限元方法。
所以我每次重新划分网格时都需要从ParMetis调用ParMETIS_V3_AdaptiveRepart
来执行重新划分。
成功后,该函数仅生成分区信息,即处理器上的元素。
然而,为了构建子网格的幻影层,进程的邻居也很重要。
所以我想知道是否有任何有效的方法来获取有关共享(重叠)实体和邻居的信息,或者 ParMetis 是否真的提供了这些信息?
ParMetis 是函数 ParMETIS_V3_AdaptiveRepart 或多或少做了一些与 [=32 相同的事情=]
ParMETIS_V3_PartKway的输出是part
“一个大小等于本地存储的顶点数的数组。成功完成后
将本地存储的顶点的分区向量写入此数组。"
它还 returns 被切割的边数。 (这只是你想要的一部分)。
但是 METIS 没有提供创建 "ghost layers" 的方法,正如您所说的那样。
但是,由于您已经创建了图表,所以您知道如何为每个元素找到每个邻居。你可以检查你的邻居元素是否在你当前进程的图表中,以及是否 part[element]==part[neighbour_element]
。如果邻居元素不在您当前的进程中,您将不得不做一些 MPI。
我正在研究移动网格的并行有限元方法。
所以我每次重新划分网格时都需要从ParMetis调用ParMETIS_V3_AdaptiveRepart
来执行重新划分。
成功后,该函数仅生成分区信息,即处理器上的元素。
然而,为了构建子网格的幻影层,进程的邻居也很重要。
所以我想知道是否有任何有效的方法来获取有关共享(重叠)实体和邻居的信息,或者 ParMetis 是否真的提供了这些信息?
ParMetis 是函数 ParMETIS_V3_AdaptiveRepart 或多或少做了一些与 [=32 相同的事情=]
ParMETIS_V3_PartKway的输出是part
“一个大小等于本地存储的顶点数的数组。成功完成后
将本地存储的顶点的分区向量写入此数组。"
它还 returns 被切割的边数。 (这只是你想要的一部分)。
但是 METIS 没有提供创建 "ghost layers" 的方法,正如您所说的那样。
但是,由于您已经创建了图表,所以您知道如何为每个元素找到每个邻居。你可以检查你的邻居元素是否在你当前进程的图表中,以及是否 part[element]==part[neighbour_element]
。如果邻居元素不在您当前的进程中,您将不得不做一些 MPI。