Information specifically for developers can be found at Developers' Notes.
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.
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.
Examples include the following:
Zoltan2 is part of the Trilinos framework and requires several of the other Trilinos libraries to build.
Zoltan2 configuration refers to these CMake directives:
Trilinos_ENABLE_OpenMPif enabled, use OpenMP for multithreaded execution. (Note not all of Zoltan2 is thread-safe.)
Trilinos_ENABLE_Zoltanif enabled Zoltan2 will build a test that compares the performance of Zoltan1 and Zoltan2
Zoltan2_ENABLE_Experimentalif enabled, code which is still under development will be available for use
ExplicitInstantiation if explicit instantiation is on, all Zoltan2 tests will be compiled with the instantiated types
Zoltan2_ENABLE_Scotchfor graph partitioning using the Scotch package
These are some of the compilation flags used by Zoltan2:
Z2_OMIT_ALL_STATUS_MESSAGESThe debug_level parameter controls the verbosity of status messages. When compiled with this option, the checks for debug_level are bypassed and all status output code is ignored.
Z2_OMIT_ALL_PROFILINGChecks are done at runtime to determine whether any of the memory or timer parameters were set, prior to checking memory in use or to start or stop a ttimer. When compiled with this option, those checks are bypassed.
Z2_OMIT_ALL_ERROR_CHECKINGThe error_check_level parameter controls the amount of error checking done at runtime. When this flag is set, all error checking code is compiled out.