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.

Partitioning Examples

4 subdomains

Party

chaco

parmetis

ptscotch

8 subdomains

Party

chaco

parmetis

ptscotch