Zoltan User's Guide  |  Next  |  Previous

Load-Balancing Algorithms

The following dynamic load-balancing algorithms are currently included in the Zoltan library:
Recursive Coordinate Bisection (RCB)
Recursive Inertial Bisection (RIB)
Hilbert Space-Filling Curve (HSFC)
Refinement Tree Based Partitioning (REFTREE)
Graph partitioning: ParMETIS (GRAPH or PARMETIS)
Graph partitioning: Jostle (JOSTLE)
Hypergraph partitioning: PHG (HYPERGRAPH or PHG)
Octree Partitioning (OCTPART)
The parenthetical string is the parameter value for LB_METHOD parameter; the parameter is set through a call to Zoltan_Set_Param.

For further analysis and discussion of the algorithms, see [Hendrickson and Devine].


Load-Balancing Parameters

While the overall behavior of Zoltan is controlled by general Zoltan parameters, the behavior of each load-balancing method is controlled by parameters specific to partitioning which are also set by calls to Zoltan_Set_Param. Many of these parameters are specific to individual partitioning algorithms, and are listed in the descriptions of the individual algorithms.  However, several have meaning across multiple partitioning algorithms. These load-balancing parameters are described below. Unless indicated otherwise, these parameters apply to both Zoltan_LB_Partition and Zoltan_LB_Balance.
  If any processor sets this parameter, NUM_LOCAL_PARTITIONS is assumed to be zero on processors not setting this parameter.
Parameters:
    LB_METHOD The load-balancing algorithm used by Zoltan is specified by this parameter. Valid values are 
"RCB" (for recursive coordinate bisection),
"RIB" (for recursive inertial bisection),
"HSFC" (for Hilbert space-filling curve partitioning),
"GRAPH" or "PARMETIS" (for any of the methods in the ParMETIS library),
"JOSTLE" (for any of the methods in the Jostle library),
"HYPERGRAPH" or "PHG" (for hypergraph partitioning),
"OCTPART" (for octree partitioning),
"REFTREE" (for refinement tree based partitioning), and
"NONE" (for no load-balancing).
    NUM_GLOBAL_PARTITIONS The total number of partitions to be generated by a call to Zoltan_LB_Partition. Integer values greater than zero are accepted. Not valid for Zoltan_LB_Balance
    NUM_LOCAL_PARTITIONS The number of partitions to be generated on this processor by a call to Zoltan_LB_Partition. Integer values greater than or equal to zero are accepted. Not valid for Zoltan_LB_Balance
    RETURN_LISTS The lists returned by calls to Zoltan_LB_Partition or Zoltan_LB_Balance. Valid values are 

"IMPORT", to return only information about objects to be imported to a processor
"EXPORT", to return only information about objects to be exported from a processor
"ALL", or "IMPORT AND EXPORT" (or any string with both "IMPORT" and "EXPORT" in it) to return both import and export information
"PARTITION ASSIGNMENTS" (or any string with "PARTITION" in it) to return the new process and partition assignment of every local object, including those not being exported.
"NONE", to return neither import nor export information
    REMAP Within Zoltan_LB_Partition or Zoltan_LB_Balance, renumber partitions to maximize overlap between the old decomposition and the new decomposition (to reduce data movement from old to new decompositions). Valid values are "0" (no remapping) or "1" (remapping). Requests for remapping are ignored when, in the new decomposition, a partition is spread across multiple processors or partition sizes are specified using Zoltan_LB_Set_Part_Sizes.
    IMBALANCE_TOL The amount of load imbalance the partitioning algorithm should deem acceptable. The load on each processor is computed as the sum of the weights of objects it is assigned. The imbalance is then computed as the maximum load divided by the average load. An value for IMBALANCE_TOL of 1.2 indicates that 20% imbalance is OK; that is, the maximum over the average shouldn't exceed 1.2. 
    MIGRATE_ONLY_PROC_CHANGES If this value is set to TRUE (non-zero), Zoltan's migration functions will migrate only objects moving to new processors. They will not migrate objects for which only the partition number has changed; the objects' processor numbers must change as well. If this value is set to FALSE (zero), Zoltan's migration functions will migrate all objects with new partition or processor assignments.
    AUTO_MIGRATE If this value is set to TRUE (non-zero), Zoltan will automatically perform the data migration during calls to Zoltan_LB_Partition or Zoltan_LB_Balance. A full discussion of automatic migration can be found in the description of the migration interface functions
Default Values:
LB_METHOD = RCB
NUM_GLOBAL_PARTITIONS = Number of processors specified in Zoltan_Create.
NUM_LOCAL_PARTITIONS = 1
RETURN_LISTS = ALL
REMAP = 1
IMBALANCE_TOL = 1.1
MIGRATE_ONLY_PROC_CHANGES = 1
AUTO_MIGRATE = FALSE


[Table of Contents  | Next:  Recursive Coordinate Bisection (RCB)  |  Previous:  Zoltan Parameters and Output Levels]