Value of LB_METHOD: | HYPERGRAPH (for hypergraph partitioning) or GRAPH (for graph partitioning) |
Value of HYPERGRAPH_PACKAGE: | PHG |
Parameters: | |
LB_APPROACH |
The load balancing approach:. REPARTITION - partition but try to stay close to the current partition/distribution REFINE - refine the current partition/distribution; assumes only small changes PARTITION - partition from scratch, not taking the current data distribution into account |
PHG_REPART_MULTIPLIER |
For repartitioning, this
parameter determines the trade-off between application communication
(as represented by cut edges) and data migration related to
rebalancing. PHG attempts to minimize the function
(PHG_REPART_MULTIPLIER* edge_cut + migration volume). The migration
volume is measured using the ZOLTAN_OBJ_SIZE_MULTI_FN or ZOLTAN_OBJ_SIZE_FN query functions. Make sure the
units for edges and object sizes are the same. Simply put, to emphasize communication within the application, use a large value for PHG_REPART_MULTIPLIER. Typically this should be proportional to the number of iterations between load-balancing calls. |
PHG_MULTILEVEL |
This parameter specifies whether a multilevel method should be used (1) or not (0). Multilevel methods produce higher quality but require more execution time and memory. |
PHG_EDGE_WEIGHT_OPERATION | Operation to be applied to edge
weights supplied by different processes for the same hyperedge: ADD - the hyperedge weight will be the sum of the supplied weights MAX - the hyperedge weight will be the maximum of the supplied weights ERROR - if the hyperedge weights are not equal, Zoltan will flag an error, otherwise the hyperedge weight will be the value returned by the processes |
ADD_OBJ_WEIGHT |
Add another object (vertex)
weight. Currently multi-weight partitioning is not supported, but this
parameter may also be used for implicit vertex weights. Valid values
are: NONE UNIT or VERTICES (each vertex has weight 1.0) PINS or NONZEROS or vertex degree (vertex weight equals number of hyperedges containing it, i.e., the degree) |
PHG_CUT_OBJECTIVE |
Selects the partitioning
objective, CONNECTIVITY or HYPEREDGES. While hyperedges
simply counts the number of hyperedges cut, the connectivity metric
weights each cut edge by the number of participating parts minus one
(aka the λ-1 cut metric). The connectivity metric better represents
communication volume for most applications. The hyperedge metric is
useful for certain applications, e.g., minimizing matrix border size in
block matrix decompositions. |
PHG_OUTPUT_LEVEL |
Level of verbosity; 0 is silent. |
CHECK_HYPERGRAPH |
Check that the query functions
return valid input data; 0 or 1. (This slows performance; intended for
debugging.) |
PHG_COARSENING_METHOD | Low-level parameter: The method to use in the matching/coarsening phase: AGG - agglomerative inner product matching (a.k.a. agglomerative heavy connectivity matching); gives high quality. IPM - inner product matching (a.k.a. heavy connectivity matching); gives high quality. L-IPM - local IPM on each processor. Faster but usually gives poorer quality. A-IPM - alternate between IPM and L-IPM. (A compromise between speed and quality.) none - no coarsening |
PHG_COARSEPARTITION_METHOD | Low-level parameter: Method to partition the coarsest (smallest) hypergraph;
typically done in serial: RANDOM - random LINEAR - linear assignment of the vertices (ordered by the user query function) GREEDY - greedy method based on minimizing cuts AUTO - automatically select from the above methods (in parallel, the processes will do different methods) |
PHG_REFINEMENT_METHOD |
Low-level parameter: Refinement algorithm: FM - approximate Fiduccia-Mattheyses (FM) NO - no refinement |
PHG_REFINEMENT_QUALITY | Low-level parameter: Knob to control the trade-off between run time and quality. 1
is the recommended (default) setting, >1 gives more refinement
(higher quality partitions but longer run time), while <1 gives less
refinement (and
poorer quality). |
PHG_RANDOMIZE_INPUT |
Low-level parameter: Randomize layout of vertices and
hyperedges in internal parallel 2D layout? Setting this parameter to 1 often reduces Zoltan-PHG execution time. |
PHG_EDGE_SIZE_THRESHOLD |
Low-level parameter: Value 0.0 through 1.0, if number of vertices in
hyperedge divided by total vertices in hypergraph exceeds this
fraction, the hyperedge will be omitted. |
PHG_PROCESSOR_REDUCTION_LIMIT |
Low-level parameter: In V-cycle, redistribute coarsened hypergraph to
this
fraction of processors when number of pins in coarsened hypergraph is
less than
this fraction of original number of pins. Original number of pins is
redefined
after each processor redistribution. |
Default values: | |
LB_APPROACH = REPARTITION |
|
PHG_REPART_MULTIPLIER=100 | |
PHG_MULTILEVEL=1 if LB_APPROACH = partition or repartition; 0 otherwise. | |
PHG_EDGE_WEIGHT_OPERATION=max | |
ADD_OBJ_WEIGHT=none | |
PHG_CUT_OBJECTIVE=connectivity | |
CHECK_HYPERGRAPH=0 |
|
PHG_OUTPUT_LEVEL=0 | |
PHG_COARSENING_METHOD=agg | |
PHG_COARSEPARTITION_METHOD=auto | |
PHG_REFINEMENT_METHOD=fm | |
PHG_REFINEMENT_QUALITY=1 | |
PHG_RANDOMIZE_INPUT=0 | |
PHG_EDGE_SIZE_THRESHOLD=0.25 | |
PHG_PROCESSOR_REDUCTION_LIMIT=0.5 | |
Required Query Functions for LB_METHOD = HYPERGRAPH: | |
ZOLTAN_NUM_OBJ_FN | |
ZOLTAN_OBJ_LIST_FN | |
ZOLTAN_HG_SIZE_CS_FN
ZOLTAN_HG_CS_FN |
|
Optional Query Functions for LB_METHOD = HYPERGRAPH: | |
ZOLTAN_OBJ_SIZE_MULTI_FN or ZOLTAN_OBJ_SIZE_FN for LB_APPROACH=Repartition. | |
ZOLTAN_PART_MULTI_FN or ZOLTAN_PART_FN for LB_APPROACH=Repartition and for REMAP=1. | |
ZOLTAN_HG_SIZE_EDGE_WTS_FN | |
ZOLTAN_HG_EDGE_WTS_FN | |
ZOLTAN_NUM_FIXED_OBJ_FN | |
ZOLTAN_FIXED_OBJ_LIST_FN | |
Note for LB_METHOD = HYPERGRAPH: |
|
It is possible to provide the graph query functions instead of the hypergraph queries, though this is not recommended. If only graph query functions are registered, Zoltan will automatically create a hypergraph from the graph, but this is not equivalent to graph partitioning. In particular, the edge weights will not be accurate. | |
Required Query Functions for LB_METHOD = GRAPH: | |
ZOLTAN_NUM_OBJ_FN | |
ZOLTAN_OBJ_LIST_FN | |
ZOLTAN_NUM_EDGES_MULTI_FN
or
ZOLTAN_NUM_EDGES_FN
ZOLTAN_EDGE_LIST_MULTI_FN or ZOLTAN_EDGE_LIST_FN |
|
Optional Query Functions for LB_METHOD = GRAPH: | |
ZOLTAN_OBJ_SIZE_MULTI_FN or ZOLTAN_OBJ_SIZE_FN for LB_APPROACH=Repartition. | |
ZOLTAN_PART_MULTI_FN or ZOLTAN_PART_FN for LB_APPROACH=Repartition and for REMAP=1. |