Skip to content

chef partition control

Cameron Smith edited this page May 21, 2017 · 20 revisions

Terminology

split - increase part count

balance - balance the computational load while reducing inter process communications

pre-process - the creation of phasta input data structures

Workflow

chef's execution is broken into two main stages, adaptation and pre-processing. During adaptation the mesh can be uniformly refined, tetrahedronized, or can be modified to satisfy a size field. After adaptation the mesh can be split to increase the number of parts. Lastly, the PHASTA pre-processor is executed to produce PHASTA inputs. Square brackets indicate an optional procedure.

|------------Adapt----------|--------------|-------Phasta--------|
[ UR ] ----> [ tet ] ------>  [split] ---->  pre-process 
[ size field driven adapt]->      

Balance and Split Method Control

The following options will give users control over (1) the splitting method, (2) the balancing applied prior to and during uniform refinement, tetrahedronization and size-field driven adaptation, and (3) the balancing method applied before pre-processing. Default options are in bold. partitionMethod and LocalPtn already existed so we'll keep those names for backward compatibility. Note, rib is SCOREC's RIB and zrib is Zoltan's RIB.

partitionMethod {graph,rib,zrib}

LocalPtn {1=true,0=false}

preAdaptBalanceMethod {graph,zrib,parma,none}

midAdaptBalanceMethod {graph,parma,none}

prePhastaBalanceMethod {graph,zrib,parma,parma-gap,none}

The chef preAdaptBalanceMethod flag requires a new meshAdapt flag, shouldRunPreZoltanRib = {true,false}. The meshAdapt logic will simply run both graph and rib pre-balancing if both shouldRunPreZoltanRib and shouldRunPreZoltan are true.

Imbalance Target Parameters

By default the graph and RIB balance and split methods will target a one percent element imbalance. ParMA's imbalance targets will be controlled through the parmaElementImbalance and parmaVtxImbalance. Imbalance is defined as maximum part load divided by the average part load. elementImbalance and vtxImbalance already exist as parameters.

Auxillary ParMA Parameters

The following parameters provide control over parma with prePhastaBalanceMethod set to parma or parma-gap.

parmaLoops - specify how many times ParMA balaning is applied - additional loops can increase quality at the expense of run time

parmaVerbosity - specify the output level of parma - the higher the value the more output is produced