图划分(Graph Partition&Re-ordering): METIS(5.x)&ParMETIS(4.x)使用实践
学习METIS&ParMETIS用法:阅读手册和示例程序。
总结
-
METIS主要API说明
API 说明 备注 METIS_PartGraphRecursive 输入图数据(Graph Data),使用multilevel-recursive-bisection方法划分图数据 输入CSR格式(xadj,adjncy) METIS_PartGraphKway 输入图数据(Graph Data),使用multilevel k-way方法划分图数据 输入CSR格式(xadj,adjncy). 对于比较大数目(partitions)划分,建议使用此种方法 METIS_PartMeshDual 输入网格数据(FEM/FVM Mesh),根据网格对偶图进行划分 输入mesh格式(eptr,eind),比较适合FVM类型问题 METIS_PartMeshNodal 输入网格数据(FEM/FVM Mesh),根据网格节点图进行划分 输入mesh格式(eptr,eind),比较适合FEM类型问题 METIS_NodeND 使用multilevel-nested-dissection算法,计算稀疏矩阵的fill-reducing-ordering 行列交换重排序 输入CSR压缩格式 -
ParMETIS主要API函数说明
-
使用情况
PETSc中使用METIS对稀疏矩阵进行Ordering和Partition; OpenFOAM用METIS对计算区域进行并行划分(decomposePar); SuperLU_dist和MUMPS求解器在进行LU分解之前,会用METIS对稀疏矩阵的列进行重排序(Pc)