PetscExternalPartitioner
Allow users to use several external partitioning packages (parmetis, chaco, ptscotch and party) via PETSc.
ParMETIS
ParMETIS is an MPI-based parallel graph partitioner implementing mainly a multilevel K-way algorithm. The basic idea of the multilevel K-way algorithm is to coarsen the graph firstly, partition the coarsened graph and then refine the the partition. It is solving a multi-constraints optimization problem.
PTScotch
PTScotch is a software package which compute parallel static mappings and parallel sparse matrix block orderings of graphs. It implements graph bipartitioning methods including band, diffusion and multilevel methods.
Chaco
Chaco contains a wide variety of algorithms and options. Some of the algorithms exploit the geometry of the mesh, others its local connectivity or its global structure as captured by eigenvectors of a related matrix.
Party
The party package aims at providing a recursive partitioning laboratory assembling various high- and low-level tools for building tree-based regression and classification models.
Use
These packages can be accessed via an unified interface in MOOSE, PetscExternalPartitioner
. The use of the packages is accomplished by adding a subblock in Mesh
block of input file. For example
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
[Partitioner]
# You need to use PetscExternalPartitioner to gain an access to these external packages
type = PetscExternalPartitioner
# specify which package you want to use
# you could choose one of {Chaco, Party, PTScotch, ParMETIS}
part_package = parmetis
[]
parallel_type = distributed
[]
Note that in order to use {Chaco, Party, PTScotch}, you need to upgrade PETSc to PETSc-3.9.3 or higher with additional options: –download-chaco, –download-party, and –download-ptscotch. But we do NOT encourage regular users to upgrade PETSc on their own. We will officially upgrade PETSc soon that will carries all these packages.