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 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:
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.