Zoltan User's Guide | Next | Previous

## Backward Compatibility with Previous Versions of Zoltan

As new features have been added to Zoltan, backward compatibility with previous versions of Zoltan has been maintained. Thus, users of previous versions of Zoltan can upgrade to a new version without changing their application source code. Modifications to application source code are needed only if the applications use new Zoltan functionality.

Enhancements to the Zoltan interface are described below.

> Versions 3.8 and higher
> Versions 3.6 and higher
> Versions 3.2 and higher
> Versions 3.1 and higher
> Versions 3.0 and higher
> Versions 1.5 and higher
> Versions 1.3 and higher

##

Backward Compatibility: Versions 3.8 and higher

- Zoltan is now released under Trilinos' BSD license.
- All deprecated features in version 3.6 are now removed from Zoltan. See notes below.

##

Backward Compatibility: Versions 3.6 and higher

- Interfaces to Zoltan defined in lbi_const.h are now deprecated. Users should upgrade to interfaces in zoltan.h. File lbi_const.h should not be included in user files; rather, file zoltan.h should be included. File lbi_const.h will not be distributed in future versions of Zoltan.
- The OCTPART/OCTREE partitioning method is deprecated and will not be supported in future versions of Zoltan. This method is now disabled by default in the CMake build system; it can be enabled with CMake configuration flag -DZoltan_ENABLE_OCT:BOOL=ON. Users should switch to Zoltan method HSFC (Hilbert Space-Filling Curve partitioning), which should provide very similar decompositions, or consider RCB partitioning.

##

Backward Compatibility: Versions 3.2 and higher

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.

##

Backward Compatibility: Versions 3.1 and higher

Terminology referring to partitions and parts was clarified. A "partition" describes the entire layout of the data across processes. A "part" is a subset of the data assigned to a single process. A partition is made up of many parts; the set of all the parts is a partition.

We applied this naming convention more consistently throughout Zoltan. Old parameters NUM_GLOBAL_PARTITIONS and NUM_LOCAL_PARTITIONS have been more accurately renamed NUM_GLOBAL_PARTS and NUM_LOCAL_PARTS. Old query functions ZOLTAN_PARTITIONS_MULTI_FN and ZOLTAN_PARTITION_FN have been more accurately renamed ZOLTAN_PART_MULTI_FN and ZOLTAN_PART_FN. However, in both cases, the old naming convention still works in the Zoltan library.

##

Backward Compatibility: Versions 3.0 and higher

A new naming convention was implemented to better categorize partitioning methods. For more details, see parameters

> LB_METHOD,
> LB_APPROACH,
> GRAPH_PACKAGE, and
> HYPERGRAPH_PACKAGE.

Former valid values of LB_METHOD should continue to work. In particular, values of LB_METHOD for geometric partitioners RCB, RIB, HSFC, and REFTREE are unchanged.

The default graph partitioner has been changed from ParMETIS to Zoltan PHG. This change was made to provide graph partitioning capability without reliance on the third-party library ParMETIS.

Because Zoltan is designed primarily for dynamic load balancing, The default partitioning approach LB_APPROACH is now "repartition." This change affects only Zoltan's hypergraph partitioner PHG.

##

Backward Compatibility: Versions 1.5 and higher

The ability to generate more parts than processors was added to Zoltan in version 1.5. Thus, Zoltan's partitioning and migration routines were enhanced to return and use both part assignments and processor assignments. New interface and query functions were added to support this additional information. All former Zoltan parameters apply to the new functions as they did to the old; new parameters NUM_GLOBAL_PARTS and NUM_LOCAL_PARTS apply only to the new functions.

The table below lists the Zoltan function that uses both part and processor information, along with the analogous function that returns only processor information. Applications requiring only one part per processor can use either version of the functions.

Function with Part and Processor info (v1.5 and higher) | Function with only Processor info (v1.3 and higher)
Zoltan_LB_Partition | Zoltan_LB_Balance
Zoltan_LB_Point_PP_Assign | Zoltan_LB_Point_Assign
Zoltan_LB_Box_PP_Assign | Zoltan_LB_Box_Assign
Zoltan_Invert_Lists | Zoltan_Compute_Destinations
Zoltan_Migrate | Zoltan_Help_Migrate
ZOLTAN_PRE_MIGRATE_PP_FN | ZOLTAN_PRE_MIGRATE_FN
ZOLTAN_MID_MIGRATE_PP_FN | ZOLTAN_MID_MIGRATE_FN
ZOLTAN_POST_MIGRATE_PP_FN | ZOLTAN_POST_MIGRATE_FN

To continue using the v1.3 partition functions, no changes to C or Fortran90 applications are needed. Zoltan interfaces from versions earlier than 1.3 are also still supported (see below), requiring no changes to application programs.

To use the new v1.5 partitioning functions:

- C users must include file zoltan.h in their applications and edit their applications to use the appropriate new functions.
- Fortran90 users must put user-defined data types in zoltan_user_data.f90 and edit their applications to use the appropriate new functions. The new partitioning functions do not work with user-defined data types in lb_user_const.f90.

##

Backward Compatibility: Versions 1.3 and higher

Versions of Zoltan before version 1.3 used a different naming convention for the Zoltan interface and query functions. All functions in Zoltan v.1.3 and above are prefixed with Zoltan_; earlier versions were prefixed with LB_.

Zoltan versions 1.3 and above maintain backward compatibility with the earlier Zoltan interface. Thus, applications that used earlier versions of Zoltan can continue using Zoltan without changing their source code.

Only two changes are needed to build the application with Zoltan v.1.3 and higher:

- All Zoltan include files are now in directory Zoltan/include. Thus, application include paths must point to this directory.
  (Previously, include files were in Zoltan/lb.)
- Applications link with Zoltan now by specifying only -lzoltan.
  (Previously, applications had to link with -lzoltan -lzoltan_comm -lzoltan_mem.)

While it is not necessary for application developers to modify their source code to use Zoltan v.1.3 and above, those who want to update their source code should do the following in their application source files:

- Replace Zoltan calls and constants (LB_*) with new names. The new names can be found through the index below.
- C programs: Include file zoltan.h instead of lbi_const.h.
- F90 programs: Put user-defined data types in file zoltan_user_data.f90 instead of lb_user_const.f90.

#### Backward Compatilibity Index for Interface and Query Functions

Name in Earlier Zoltan Versions | Name in Zoltan Version 1.3 and higher
LB_BORDER_OBJ_LIST_FN | ZOLTAN_BORDER_OBJ_LIST_FN
LB_Balance | Zoltan_LB_Balance
LB_Box_Assign | Zoltan_LB_Box_Assign
LB_CHILD_LIST_FN | ZOLTAN_CHILD_LIST_FN
LB_CHILD_WEIGHT_FN | ZOLTAN_CHILD_WEIGHT_FN
LB_COARSE_OBJ_LIST_FN | ZOLTAN_COARSE_OBJ_LIST_FN
LB_Compute_Destinations | Zoltan_Compute_Destinations
LB_Create | Zoltan_Create
LB_Destroy | Zoltan_Destroy
LB_EDGE_LIST_FN | ZOLTAN_EDGE_LIST_FN
LB_Eval | Zoltan_LB_Eval
LB_FIRST_BORDER_OBJ_FN | ZOLTAN_FIRST_BORDER_OBJ_FN
LB_FIRST_COARSE_OBJ_FN | ZOLTAN_FIRST_COARSE_OBJ_FN
LB_FIRST_OBJ_FN | ZOLTAN_FIRST_OBJ_FN
LB_Free_Data | Zoltan_LB_Free_Data
LB_GEOM_FN | ZOLTAN_GEOM_FN
LB_Help_Migrate | Zoltan_Help_Migrate
LB_Initialize | Zoltan_Initialize
LB_MID_MIGRATE_FN | ZOLTAN_MID_MIGRATE_FN
LB_NEXT_BORDER_OBJ_FN | ZOLTAN_NEXT_BORDER_OBJ_FN
LB_NEXT_COARSE_OBJ_FN | ZOLTAN_NEXT_COARSE_OBJ_FN
LB_NEXT_OBJ_FN | ZOLTAN_NEXT_OBJ_FN
LB_NUM_BORDER_OBJ_FN | ZOLTAN_NUM_BORDER_OBJ_FN
LB_NUM_CHILD_FN | ZOLTAN_NUM_CHILD_FN
LB_NUM_COARSE_OBJ_FN | ZOLTAN_NUM_COARSE_OBJ_FN
LB_NUM_EDGES_FN | ZOLTAN_NUM_EDGES_FN
LB_NUM_GEOM_FN | ZOLTAN_NUM_GEOM_FN
LB_NUM_OBJ_FN | ZOLTAN_NUM_OBJ_FN
LB_OBJ_LIST_FN | ZOLTAN_OBJ_LIST_FN
LB_OBJ_SIZE_FN | ZOLTAN_OBJ_SIZE_FN
LB_PACK_OBJ_FN | ZOLTAN_PACK_OBJ_FN
LB_POST_MIGRATE_FN | ZOLTAN_POST_MIGRATE_FN
LB_PRE_MIGRATE_FN | ZOLTAN_PRE_MIGRATE_FN
LB_Point_Assign | Zoltan_LB_Point_Assign
LB_Set_Fn | Zoltan_Set_Fn
LB_Set_<lb_fn_type>_Fn | Zoltan_Set_<zoltan_fn_type>_Fn
LB_Set_Method | Zoltan_Set_Param with parameter LB_METHOD
LB_Set_Param | Zoltan_Set_Param
LB_UNPACK_OBJ_FN | ZOLTAN_UNPACK_OBJ_FN

[Table of Contents | Next: References | Previous: Release Notes | Privacy and Security]