Partitioning and Load-Balancing

Here we describe a typical way a user might use Zoltan2 for partitioning.

- Create a Zoltan2::InputAdapter object for your data. This adapter provides a uniform interface to user data for the Zoltan2 library. Adapter interfaces exist for the following classes of data:
- Zoltan2::MatrixInput (a row oriented matrix with optional row weights)
- Zoltan2::GraphInput (an undirected weighted graph)
- Zoltan2::VectorInput (a single or multi-vector with optional weights, also used for geometric coordinates)
- Zoltan2::IdentifierInput (simple collection of identifiers)
- Zoltan2::MeshInput: available soon.

- Create a Teuchos::ParameterList with your Zoltan2 parameters. If you are using a third party library (PT-Scotch, ParMetis) you can include a sublist of parameters for this library. See Zoltan2 Parameters for a detailed list of parameters.
- Create a Zoltan2::PartitioningProblem. It is templated on your Zoltan2::InputAdapter type. The constructor arguments are typically your input adapter and your parameter list.
- Call Zoltan2::PartitioningProblem::solve().
- Obtain a Zoltan2::PartitioningSolution object from the Zoltan2::PartitioningProblem using the getSolution() function.

Partitioning functionality that is available now is:

- Block partitioning for simple weighted identifiers (really created as a sample algorithm).
- Multi-Jagged Coordinate Partitioning (MJ) Multi-jagged for weighted geometric coordinates.
- Recursive Coordinate Bisection (RCB) for weighted geometric coordinates.
- Graph partitioning with PTScotch for undirected weighted graphs.
- Graph partitioning with ParMETIS for undirected weighted graphs.

These algorithms are all parallel.

Examples include the following:

Generated by 1.8.5