Add new initial partition schemes and extend repartition ones.

Peter W. Draper requested to merge initial_partitions into master

Add new schemes for the initial partition of cells for MPI.

The initial cell distribution can now be based on a METIS partition of the cell graph using particle counts per cell and a simple unweighted version. The distribution can also be based on a vectorised selection of seed cells. This is guaranteed to work for all cases when the number of MPI nodes is less than the number of cells (the grid and METIS based ones do not guarantee this), so is the fallback method when the others fail.

Repartition is also extended to offer particle count based weights, as well the existing task times weights for edges and vertices, which is extended to allow weighting by edges only and a hybrid particle count vertices and times for edges.

A failure to repartition is handled by continuing with the existing partition.

The new options are handled by flags:

  • -R - reparition type: 'n', 'b', 'v', 'e', 'x'
  • -P - initial Partition type: 'g', 'm', 'w', 'v'

note the old '-g' flag is removed, use '-P g' or '-P g n n n' now.

The repartition types are:

  • 'n' None, for completeness.
  • 'b' both, task time weighted vertices and edges (as as current).
  • 'v' vertex particle count weighted vertices, no edge weights.
  • 'e' task time weighted edges, no vertex weights.
  • 'x' task time weighted edges, particle count weighted vertices.

And the initial partition types:

  • 'g' geometric grid partition (as now)
  • 'm' METIS partition without any weights
  • 'w' METIS partition with particle count weighted vertices
  • 'v' vectorised cell array positions used as seeds for partition

Not giving any options just gives the existing behaviour, i.e. grid initial partition and task time weighted redistribution.

Merge request reports