|
|
|
Notes about the various partitioning schemes. (*) is the default if METIS
|
|
|
|
is available, (-) if not.
|
|
|
|
|
|
|
|
# Initial partitions:
|
|
|
|
|
|
|
|
## grid (-)
|
|
|
|
cells are divided into rectangular, axis aligned, boxes, with
|
|
|
|
the given number of sides per axis. Needs one rectangular box
|
|
|
|
per rank.
|
|
|
|
|
|
|
|
## simple_metis (*)
|
|
|
|
the cell grid (where each cell is a graph vertex with edges
|
|
|
|
to all neighbours) is split into similar sized connected regions by METIS.
|
|
|
|
|
|
|
|
## weighted_metis
|
|
|
|
in this version the vertices of the cell graph are weighted
|
|
|
|
by the particle counts. This aims to give similar numbers
|
|
|
|
of particles per rank.
|
|
|
|
|
|
|
|
## vectorized
|
|
|
|
the cells are considered as a 1D array and positions are picked
|
|
|
|
along it for each rank. These positions are then used as centres
|
|
|
|
in 3D and neighbouring cells are assigned to a rank using distance.
|
|
|
|
This method is guaranteed to work when we have more cells than ranks,
|
|
|
|
the other methods can fail when this criterion is close.
|
|
|
|
|
|
|
|
# Repartitioning
|
|
|
|
|
|
|
|
## none (-)
|
|
|
|
erm, do nothing, keeping fingers crossed (useful for testing)
|
|
|
|
|
|
|
|
## task_weights (*)
|
|
|
|
Assign weights to the vertices and edges of the cell graph based
|
|
|
|
on the task weights associated with each cell and allow METIS to decide on
|
|
|
|
an optimal partition to share the cells between the ranks.
|
|
|
|
|
|
|
|
## particle_weights
|
|
|
|
Similar to task_weights, except we only weight the vertices by the
|
|
|
|
cell particles counts.
|
|
|
|
|
|
|
|
## edge_task_weights
|
|
|
|
Similar to task_weights, except we only use the task weights as edge weights.
|
|
|
|
|
|
|
|
## hybrid_weights
|
|
|
|
Joins particle_weights and edge_task_weights, we have particle weights
|
|
|
|
for the graph vertices and task weights for the edges.
|
|
|
|
|