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 vieweed as a complete 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.

Partitioning functionality that is available now is:

Serial ordering currently available:

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: