Zoltan User's Guide | Next | Previous

## Load-Balancing Algorithms and Parameters

The following dynamic load-balancing algorithms are currently included in the Zoltan library:

> Simple Partitioners for Testing

> > Block Partitioning (BLOCK)
> > Cyclic Partitioning (CYCLIC)
> > Random Partitioning (RANDOM)

> Geometric (Coordinate-based) Partitioners

> > Recursive Coordinate Bisection (RCB)
> > Recursive Inertial Bisection (RIB)
> > Hilbert Space-Filling Curve Partitioning (HSFC)
> > Refinement Tree Based Partitioning (REFTREE)

> Hypergraph Partitioning, Repartitioning and Refinement (HYPERGRAPH)

> > PHG
> > PaToH

> Graph Partitioning and Repartitioning (GRAPH)

> > PHG
> > ParMETIS
> > Scotch

> Hybrid Hierarchical Partitioning (HIER)

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 some 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.

Parameters: |

LB_METHOD

The load-balancing algorithm used by Zoltan is specified by this parameter. Valid values are

> BLOCK (for block partitioning),
> RANDOM (for random partitioning),
> RCB (for recursive coordinate bisection),
> RIB (for recursive inertial bisection),
> HSFC (for Hilbert space-filling curve partitioning),
> REFTREE (for refinement tree based partitioning)
> GRAPH (to choose from collection of methods for graphs),
> HYPERGRAPH (to choose from a collection of methods for hypergraphs),
> HIER (for hybrid hierarchical partitioning)
> NONE (for no load balancing).

LB_APPROACH

The desired load balancing approach. Only LB_METHOD = HYPERGRAPH or GRAPH uses the LB_APPROACH parameter. Valid values are

> PARTITION (Partition "from scratch," not taking into account the current data distribution; this option is recommended for static load balancing.)
> REPARTITION (Partition but take into account current data distribution to keep data migration low; this option is recommended for dynamic load balancing.)
> REFINE (Quickly improve the current data distribution.)

NUM_GLOBAL_PARTS | The total number of parts 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_PARTS | The number of parts 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. If any processor sets this parameter, NUM_LOCAL_PARTS is assumed to be zero on processors not setting this parameter.

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
> "PARTS" (or "PART ASSIGNMENT" or any string with "PART" in it) to return the new process and part 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 parts 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). Part assignments from ZOLTAN_PART_MULTI_FN or ZOLTAN_PART_FN query functions can be used in remapping if provided; otherwise, processor numbers are used as part numbers. Requests for remapping are ignored when, in the new decomposition, a part is spread across multiple processors or part 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 part 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 part 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
| LB_APPROACH = REPARTITION
| NUM_GLOBAL_PARTS = Number of processors specified in Zoltan_Create.
| NUM_LOCAL_PARTS = 1
| RETURN_LISTS = ALL
| REMAP = 1
| IMBALANCE_TOL = 1.1
| MIGRATE_ONLY_PROC_CHANGES = 1
| AUTO_MIGRATE = FALSE

[Table of Contents | Next: Simple Partitioners for Testing | Previous: Zoltan Parameters and Output Levels | Privacy and Security]