The Zoltan solution has also been used for the tool, flredecomp, provided with Fluidity. This tool is for redecomposing an input checkpoint to a new checkpoint using more or less processes. As the number of elements varies throughout an adaptive simulation, it is possible that the number of element exceeds the capacity of memory. In this case the simulation can be checkpointed, redecomposed onto a greater number of partitions and restarted. The tool is also useful for setting up strong scaling simulations.

When using Zoltan in flredecomp the same code as called from adaptivity is used but with the logical flredcomping set to true. This changes various options within zoltan_drive. The partitioning is carried out with uniform edge-weighting applied as we are only doing a single iteration with the goal being a load balanced final partitioning.

When called from flredecomp the implementation must use Zoltan_LB_Partition instead of Zoltan_LB_Balance as the Zoltan parameters NUM_GLOBAL_PARTS and NUM_LOCAL_PARTS are only used when using Zoltan_LB_Partition. Each of these must be set by every process with NUM_GLOBAL_PARTS the same for all processes but NUM_LOCAL_PARTS independent for each process. NUM_GLOBAL_PARTS tells Zoltan the total number of partitions to be created and NUM_LOCAL_PARTS tells Zoltan the number of partitions to be placed on the specific process. Zoltan_LB_Balance is in essence a specialised version of Zoltan_LB_Partition where
NUM_GLOBAL_PARTS is the number of processes being run on and NUM_LOCAL_PARTS is one for all processes. For flredecomp the NUM_GLOBAL_PARTS is the number of processes the checkpoint should be decomposed onto. When scaling up NUM_LOCAL_PARTS is one for all processes and when scaling down is one for all processes up the target number of processes and zero for all others.

Jon Hill 2012-03-02