Zoltan User's Guide | Next | Previous

## Release Notes

Release notes are available for the following releases of Zoltan:

> Zoltan Release v3.83 in Trilinos v12.6
> Zoltan Release v3.82 in Trilinos v12
> Zoltan Release v3.81 in Trilinos v11.12
> Zoltan Release v3.8 in Trilinos v11
> Zoltan Release v3.7 in Trilinos v11
> Zoltan Release v3.6
> Zoltan Release v3.501
> Zoltan Release v3.5
> Zoltan Release v3.3
> Zoltan Release v3.2
> Zoltan Release v3.1
> Zoltan Release v3.0
> Zoltan Release v2.1
> Zoltan Release v2.02
> Zoltan Release v2.01
> Zoltan Release v2.0
> Zoltan Release v1.54
> Zoltan Release v1.53
> Zoltan Release v1.52
> Zoltan Release v1.5
> Zoltan Release v1.3

## Zoltan Release v3.83 in Trilinos v12.6; January 2016

- Autotools files updated to avoid deprecated perl features
- Added Zoltan_Get_Fn interface to return pointers to registered callback functions.
- Several bug fixes in Fortran90 interface
- Subtle rounding error fixed in PHG hypergraph partitioner
- Minor changes to distributed data directory to track number of nodes per processor; include file DD.h is now named zoltan_dd_const.h

## Zoltan Release v3.82 in Trilinos v12; May 2015

- Minor code clean-up to remove compiler warnings and handle error conditions.
- Enable "make -j" when building Zoltan's Fortran90 interface with autotools.

## Zoltan Release v3.81 in Trilinos v11.12; November 2014

- Several improvements were made to Zoltan's interface to ParMETIS v4, METIS v5, and Scotch v6.
- New statistics were added to the RCB and RIB algorithms' output.
- Checks for MPI_VERSION 1 or 2 were added where appropriate to handle MPI interface changes.
- For non-MPI builds of Zoltan, a bug in the serial MPI stubs siMPI was fixed; the bug occurred when many MPI_Datatypes were defined by the algorithm (e.g., in deep recursion level of multilevel partitioning methods).
- Several minor bugs were fixed.
- No Zoltan interfaces were changed; Zoltan 3.81 is fully backward-compatible with Zoltan 3.8.

## Zoltan Release Notes v3.8: October 2013

- An improved hash function reduces execution time in partitioning, particularly when parameter RETURN_LISTS=PARTS is used.
- Several bug fixes address overflow issues in cases where integers A and B are valid integers, but A*B overflows an integer.

## Zoltan Release Notes v3.7: September 2012

- The following features (deprecated in Trilinos v10.8) are no longer supported in Trilinos v11.
  - Zoltan is now released under Trilinos' BSD license.
  - Zoltan v1.1 interface (as described in Zoltan include file lbi_const.h): users should upgrade their Zoltan interface and include file zoltan.h. Instructions are at the Zoltan FAQ page.
  - Partitioning method OCTPART: use partitioning method HSFC for similar partitions with faster partitioning time.
  - Use of DRUM as a Zoltan TPL: architecture-aware methods will be included in Zoltan2.
- Improved memory usage in Zoltan Distributed Data Directories. Memory is now managed in a single block, eliminating excessive calls to malloc and improving the runtime performance of the data directories and the hierarchical partitioning algorithms that use them.
- Hierarchical partitioning received several performance, interface and testing improvements. In particular, an easier-to-use interface has been added using simple parameters (HIER_ASSIST, PLATFORM_NAME, TOPOLOGY) instead of callback functions; the callback function interface is still supported. Also, hierarchical partitioning can now be used with only geometric partitioners and callbacks, whereas before it required graph-based callbacks as well.
- Reduced the memory usage of RCB and RIB when parameter KEEP_CUTS=0.
- Increased use of point-to-point communication (instead of MPI_Alltoall) in communication package for better performance on large number of processors.
- Compilation with gcc 4.7 is now supported.
- Using MurmurHash for better hashing.
- Zoltan supports PT-Scotch v5.1.12 and ParMETIS v4, as well as some older versions of these TPLs.
- Zoltan's graph build has been streamlined; if possible, use the parameter "GRAPH_BUILD_TYPE" == "FAST_NO_DUP" for faster graph builds.

## Zoltan Release Notes v3.6: September 13, 2011

- Added new recoloring capability to Zoltan coloring algorithms, providing lower numbers of colors at small additional cost.
- Updated Zoltan to allow use of third-party libraries ParMETIS versions 3.1 and 4.0 and Scotch versions up to 5.1.12.
- Updated Zoltan's hierarchical partitioning for greater efficiency.

## Zoltan Release Notes v3.501: May 12, 2011

Fixed bug in autotools installation of Zoltan; file Zoltan_config.h is now installed in the specified include directory.

## Zoltan Release Notes v3.5: March 24, 2011

Features:

- Fix in Fortran90 interface that causes compilation and run-time problems with gcc 4.5 and later when compiler optimization is enabled.
- Support for 64-bit builds of Zoltan, enabling operation on more than 2B objects. See details for building in the Zoltan User's Guide.
- Faster graph builds for very specific input types. See parameter GRAPH_BUILD_TYPE.

## Zoltan Release Notes v3.3: July 31, 2010

Features:

- New local ordering method based on space-filling curves to improve memory and cache locality within a processor.
- Ability to call graph partitioning algorithms using hypergraph callback functions; this capability is useful applications with, say, block-structured matrix distributions (e.g., SuperLU), where all information about a matrix row or column is not available on a single processor.
- Improved execution time of parallel hypergraph partitioning.

## Zoltan Release Notes v3.2: September 24, 2009

Features:

- New interface to Scotch and PT-Scotch parallel graph partitioning algorithms.
- Simplified interface to graph ordering and coloring algorithms
- Automated symmetrization of graphs for graph partitioning, coloring and ordering. (See parameters GRAPH_SYMMETRIZE and GRAPH_SYM_WEIGHT in the Scotch and ParMETIS graph packages.)
- Improved function Zoltan_LB_Eval returns more information about a decomposition to users.
- Improved examples showing Zoltan usage in C and C++ are included in zoltan/example.
- Improved support for builds under autotools, including builds of Zoltan's F90 interface.
- New support for CMake builds and testing through Trilinos; builds of Zoltan's F90 interface are included.
- Improved integration into Isorropia partitioners for Trilinos' Epetra classes.

Backward compatibility:

- Interfaces to Zoltan_Color, Zoltan_Order and Zoltan_LB_Eval have changed.
- The Zoltan native build environment, while still distributed, will no longer be supported. Users should use the autotools or CMake systems. Builds of the Zoltan F90 interface are supported in both autotools and CMake.

## Zoltan Release Notes v3.1: September 26, 2008

Zoltan v3.1 includes the following new features:

- Important new capabilities for Matrix ordering are included in Zoltan v3.1.
  - A graph/matrix ordering interface to PT-Scotch, a high-quality graph ordering and partitioning library from the University of Bordeaux, is now available.
  - Zoltan's new matrix ordering interface returns ordering information such as permutations and separators to the application.
- New hypergraph partitioning options for inexpensively refining partitions are included and controlled simply by parameters LB_APPROACH and PHG_MULTILEVEL.
- Robustness improvements have been made to Zoltan's parallel hypergraph partitioner and repartitioner.
- A new Autotools build environment is available. The native Zoltan build environment is still supported in this release.
- Serial, non-MPI builds of Zoltan are enabled through the new Autotools build environment.
- Zoltan is now a Trilinos package. Integration with Trilinos, is now tighter and more seamless. In particular, Zoltan is the default partitioner for the Trilinos package Isorropia, a matrix-based interface to Zoltan.

Please see the backward compatibility section for a detailed description of changes that may affect current users.

## Zoltan Release Notes v3.0: May 1, 2007

Zoltan v3.0 includes major new features.

- Parallel Hypergraph Repartitioning combining the improved communication metric of hypergraph partitioning with a new model for representing an existing partition while computing a new one. This work received the "Best Algorithms Paper Award" at the 2007 IEEE International Parallel and Distributed Processing Symposium.
- Hypergraph refinement to quickly improve the quality of an existing partition.
- Improved partition quality within the Zoltan parallel hypergraph partitioner.
- Parallel graph partitioning using Zoltan's parallel hypergraph partitioner.
- Hypergraph partitioning with fixed vertices that allows application to assign or "fix" objects to a desired part before partitioning.
- Improved part remapping to reduce data migration costs in all partitioners.
- Hybrid hierarchical partitioning that allows different partitioning algorithms to be applied within a hierarchy of computers (e.g., partitioning across a cluster of shared-memory processors, followed by partitioning within each shared-memory processor).
- A new scheme for more easily specifying partitioning methods and approaches within the hypergraph and graph partitioners.
- Very simple partitioners that serve as testing tools and examples for usage.

Please see the backward compatibility section for a detailed description of changes that may affect current users.

## Zoltan Release Notes v2.1: October 5, 2006

Zoltan v2.1 includes a significant bug fix for the hypergraph partitioner. We strongly recommend that users upgrade to Zoltan v2.1.

## Zoltan Release Notes v2.02: September 26, 2006

Zoltan v2.02 includes bugfixes:

- Zoltan_LB_Eval now correctly computes edge cuts with respect to parts when parts are spread across more than one processor.
- Extraneous (and annoying) print statement has been removed from Zoltan partitioning method RCB.

## Zoltan Release Notes v2.01: August 2006

Zoltan v2.01 includes enhancements to version 2.0.

- F90 interface fixes to comply with standard F90 (e.g., shortened variable names and continuation lines). The hypergraph callback function names have changed, but C and C++ compatibility with v2.0 is maintained.
- Performance improvement to initial building of hypergraphs from application data.
- Major bug fix for dense-edge removal in parallel hypergraph method; partitioning of hypergraphs with edges containing more than 25% of the vertices was affected by this bug.
- Minor fixes to parallel hypergraph code.

## Zoltan Release Notes v2.0: April 2006

Zoltan v2.0 includes several major additions:

- Parallel hypergraph partitioning.
- Parallel graph coloring, both distance-1 and distance-2.
- Multicriteria geometric partitioning (RCB).
- C++ interface.

## Zoltan Release Notes v1.54

Some versions of MPICH have a bug in MPI_Reduce_scatter; they can report errors with MPI_TYPE_INDEXED. In Zoltan v1.54's unstructured communication package, calls to MPI_Reduce_scatter have been replaced with separate calls to MPI_Reduce and MPI_Scatter.

## Zoltan Release Notes v1.53

Zoltan v1.53 includes the following new capabilities:

- Portability to BSD Unix and Mac OS X was added.
- Averaging of RCB and RIB cuts was added; see Zoltan parameter AVERAGE_CUTS.
- A new function Zoltan_RCB_Box returns information about subdomain bounding boxes in RCB decompositions.
- F90 interface to Zoltan_Order was added.
- Warnings that load-imbalance tolerance was not met are no longer printed when DEBUG_LEVEL == 0.
- Minor bugs were addressed.

## Zoltan Release Notes v1.52

Zoltan v1.52 includes the following new capabilities:

- List-based graph callback functions ZOLTAN_NUM_EDGES_MULTI_FN and ZOLTAN_EDGE_LIST_MULTI_FN were added to mirror support and performance given by the list-based geometric function ZOLTAN_GEOM_MULTI_FN.
- Support for ParMETIS v3.1 was added.
- Minor bugs were addressed.

## Zoltan Release Notes v1.5

This section describes improvements to Zoltan in Version 1.5. Every attempt was made to keep Zoltan v1.3 backwardly compatible with previous versions. Users of previous versions of Zoltan should refer to the Backward Compatibility Notes.

Short descriptions of the following features are included below; follow the links for more details.

> Part remapping
> Unequal Numbers of Parts and Processors
> Non-Uniform Part Sizes
> Zoltan Interface Updated
> Robust HSFC Box Assign
> Matrix Ordering
> Performance Improvements
> Bug Fixes

####

Part Remapping

During partitioning, Zoltan v1.5 can renumber parts so that the input and output partitions have greater overlap (and, thus, lower data-migration costs). This remapping is controlled by Zoltan parameter REMAP. Experiments have shown that using this parameter can greatly reduce data migration costs.

####

Unequal Numbers of Parts and Processors

Zoltan v1.5 can be used to generate k parts on p processors, where k is not equal to p. Function Zoltan_LB_Partition (replacing Zoltan_LB_Balance) can generate arbitrary numbers of parts on the given processors. The number of desired parts is set with parameters NUM_GLOBAL_PARTS or NUM_LOCAL_PARTS. Both part and processor information are returned by Zoltan_LB_Partition, Zoltan_LB_Box_PP_Assign, and Zoltan_LB_Point_PP_Assign. New Zoltan query functions ZOLTAN_PART_FN and ZOLTAN_PART_MULTI_FN return objects' part information to Zoltan. Zoltan_LB_Balance can still be used for k equal to p.

####

Non-Uniform Part Sizes

Part sizes for local and global parts can be specified using Zoltan_LB_Set_Part_Sizes, allowing non-uniformly sized parts to be generated by Zoltan's partitioning algorithms.

####

Zoltan Interface Updated

To support the concept of parts separate from processors, many new interface functions were added to Zoltan v1.5 (e.g., Zoltan_LB_Partition and Zoltan_Migrate). These functions mimic previous Zoltan functions (e.g., Zoltan_LB_Balance and Zoltan_Help_Migrate, respectively), but include both part and processor information. Both the new and old interface functions work in Zoltan v1.5. See the notes on Backward Compatibility.

####

Robust HSFC Box Assign

Function Zoltan_LB_Box_PP_Assign now works for the Hilbert Space-Filling Curve algorithm (HSFC), in addition to the RCB and RIB algorithms supported in previous versions of Zoltan. Zoltan_LB_Point_PP_Assign continues to work for HSFC, RCB and RIB.

####

Matrix Ordering

Zoltan v1.5 contains a matrix-ordering interface Zoltan_Order to ParMETIS' matrix-ordering functions. New graph-based matrix-ordering algorithms can be easily added behind this interface.

####

Performance Improvements

Many performance improvements were added to Zoltan v1.5.

- List-based callback functions have been added to Zoltan (ZOLTAN_GEOM_MULTI_FN, ZOLTAN_PART_MULTI_FN, ZOLTAN_OBJ_SIZE_MULTI_FN, ZOLTAN_PACK_OBJ_MULTI_FN, and ZOLTAN_UNPACK_OBJ_MULTI_FN); these functions allow entire lists of data to be passed from the application to Zoltan, replacing per-object callbacks.
- Zoltan_Migrate now can accept either import lists, export lists, or both. It is no longer necessary to call Zoltan_Invert_Lists or Zoltan_Compute_Destinations to get appropriate input for Zoltan_Migrate.
- Zoltan v1.5 contains performance improvements within individual algorithms. We recommend users upgrade to the latest version.

#### Bug Fixes

Bug fixes were made to Zoltan's algorithms and interface. Users of previous versions of Zoltan are encouraged to upgrade.

## Zoltan Release Notes v1.3

This section describes improvements to Zoltan in Version 1.3. Every attempt was made to keep Zoltan v1.3 backwardly compatible with previous versions. Users of previous versions of Zoltan should refer to the Backward Compatibility Notes.

Short descriptions of the following features are included below; follow the links for more details.

> More Data Services
> New Hilbert Space-Filling Curve Partitioning
> Support for Structured-Grid Partitioning
> Support for ParMETIS v3.0
> Performance Improvements
> Zoltan Interface Updated
> Improved Test Suite
> Bug Fixes

#### More Data Services

Zoltan's mission has been widened beyond its original focus on dynamic load-balancing algorithms. Now Zoltan also provides data management services to parallel, unstructured, and adaptive computations. Several packages of parallel data services have been added and made available to application developers. These services include the following:

- An unstructured communication package that simplifies complicated communication by insulating applications from the details of message sends and receives.
- A distributed data directory that allows applications to efficiently (in memory and time) locate off-processor data.
- A dynamic memory management package that simplifies debugging of memory allocation problems on state-of-the-art parallel computers.

#### New Hilbert Space-Filling Curve Partitioning

Zoltan now includes a fast, efficient implementation of Hilbert Space-Filling Curve (HSFC) partitioning. This geometric method also includes support for Zoltan_LB_Box_Assign and Zoltan_LB_Point_Assign functions.

#### Support for Structured-Grid Partitioning

Zoltan's Recursive Coordinate Bisection (RCB) partitioning algorithm has been enhanced to allow generation of strictly rectilinear subdomains. This capability can be used for partitioning of grids for structured-grid applications. See parameter RCB_RECTILINEAR_BLOCKS.

#### Support for ParMETIS v3.0

In addition to providing interfaces to ParMETIS v2.0, Zoltan now provides an interfaces ParMETIS v3.0. Full support of ParMETIS v3.0's multiconstraint and multiobjective partitioning is included.

#### Performance Improvements

Performance of Zoltan's partitioning algorithms has been improved through a number of code optimizations and new features. In addition, user parameter RETURN_LISTS can be used to specify which returned arguments are computed by Zoltan_LB_Balance, allowing reduced work in partitioning. In the Recursive Coordinate Bisection (RCB) partitioning algorithm, user parameters allow cut directions to be locked in an attempt to minimize data movement; see parameters RCB_LOCK_DIRECTIONS and RCB_SET_DIRECTIONS.

#### Zoltan Interface Updated

Zoltan has adopted a more modular design, making it easier to use by applications and easier to modify by algorithm developers. Names in the Zoltan interface and code are tied more closely to their functionality. Full backward compatibility is supported for users of previous versions of Zoltan.

#### Improved Test Suite

The Zoltan test suite has been improved, with more tests providing greater code coverage and platform-specific answer files accounting for differences due to computer architectures.

#### Bug Fixes

Some bug fixes were made to Zoltan's algorithms and interface. Users of previous versions of Zoltan are encouraged to upgrade.

[Table of Contents | Next: Backward Compatibility | Previous: Query Function Examples | Privacy and Security]