Trilinos/Zoltan2: Load Balancing and Combinatorial Scientific Computing.


Information specifically for developers can be found at Developers' Notes.

Introduction to Zoltan2

Zoltan2 is a package for partitioning, load balancing and combinatorial scientific computing. It can be viewed as a complete redesign/refactoring of the well known Zoltan library into C++ in order to support template programming, to scale to larger problems, and to support architecture aware partitioning. This library is currently under active development. The capabilities in Zoltan2 roughly fall within these areas:

Partitioning functionality that is available now is:

These algorithms are all parallel.

Ordering methods currently available:

These are all serial.

Graph coloring currently supported:

Currently serial; multithreaded coloring is planned for a future release.

Overview of the library usage

Basic partitioning

Here we describe the typical user interaction with Zoltan2. We use partitioning as an example.

1. 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::MeshInput will be available soon.

2. 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 parameterse.

3. Create a Zoltan2::PartitioningProblem. It is templated on your Zoltan2::InputAdapter type. The constructor arguments are typically your input adapter and your parameter list.

4. Call Zoltan2::PartitioningProblem::solve().

5. Obtain a Zoltan2::PartitioningSolution object from the Zoltan2::PartitioningProblem.

Obtaining partition quality


Partitioning examples

Examples include the following:

Building Zoltan2

Zoltan2 is part of the Trilinos framework and requires several of the other Trilinos libraries to build.

Zoltan2 configuration refers to these CMake directives:

These are some of the compilation flags used by Zoltan2: