Skip to content

New Albany Master Branch

Glen Hansen edited this page Feb 11, 2019 · 2 revisions

The new master branch of Alban allows the use of the "next-generation" templated linear algebra capabilities in Trilinos based on the Kokkos performance-portable shared-memory parallel programming model and data containers. The use of the templated software stack of Trilinos will allow porting Albany to new-architecture machines, and with higher precision arithmetic (e.g., 64-bit integers).

####Executables and capabilities

When you build the new Albany, two Albany executables will appear in the Albany/build/src (or Albany/build/install/bin if an Albany install is requested) directory: Albany and AlbanyT, described below.

#####Albany executable

The former executable, Albany, is based mostly on Epetra and is run with the usual Albany input files that use the Epetra software stack (Ifpack, ML, Amesos, Zoltan, EpetraExt). Note that the code used to build this executable contains some conversions between Epetra and Tpetra objects (see Albany/src/Petra_Converters.cpp and Albany/src/Petra_Converters_64.cpp), so you must still build Trilinos with Tpetra even if you intend to use only the Albany executable.

All the capabilities that have been available in Albany up to this point are available with the Albany executable.

#####AlbanyT executable The latter executable, AlbanyT, uses only Tpetra and the next-generation templated software stack of Trilinos (Kokkos, Ifpack2, MueLu, Amesos2, Zoltan2, Thyra). It must be run with input files that call the templated software stack packages (e.g., Ifpack2 instead of Ifpack, MueLu instead of ML, etc.). The names of these input files typically end with *T.xml in the examples directories. In general, the files compiled when building the AlbanyT executable end with "T.cpp" and "T.hpp" (e.g., Main_SolveT.cpp, Albany_PiroObserverT.cpp, Albany_ModelEvaluatorT.cpp, etc.). Similarly, the functions called with the AlbanyT executable end with "T" (e.g., evaluateResponseT). Note that some functions have duplicate implementations, an Epetra one and a Tpetra one (e.g., evaluateGradient and evaluateGradientT).

#####Albany physics not yet available with the AlbanyT executable

The following Albany physics sets have not yet been converted to work with the AlbanyT executable, but will be at some point in the future:

  • QCAD
  • ATO
  • MOR
  • SG_MP
  • CISM_INTERFACE

####Building the branch

For this Albany branch, Trilinos must be built with some additional packages. A Trilinos cmake configure script with the required libraries can be found in the Albany repository:

Albany/doc/nightlyScripts/do-cmake-trilinos-mpi-tpetra-no-scorec

Note that some additional TPLs are required for Trilinos compared to the old master branch of Albany. The following is a list of the required TPLs for Trilinos:

  • Boost
  • NetCDF
  • SuperLU
  • HDF5

Instructions for installing these on various platforms can be found here.

####Configuration options

There are two configuration options available in this Albany branch that were not available in the original epetra Albany branch: a Tpetra-only build and a 64-bit build, detailed below.

#####Basic build

Instructions on how to modify your current Albany script to be able to build the new Albany can be found here.

#####Tpetra-only build if you are interested in only the AlbanyT executables, you can tell Albany to build only the Tpetra version of the code by adding the following line to your Albany cmake configure script:

	-D ENABLE_ALBANY_EPETRA_EXE:BOOL=OFF \

In a default configuration, this flag is set to "ON", so that both the Albany and AlbanyT executables are built. Note that some physics may not be available with the AlbanyT-only option (QCAD, ATO, MOR, SG_MP, CISM_INTERFACE).

#####64-bit build

It is also possible to build Albany such that 64-bit integers are used as the Global Ordinal type. To turn on the 64-bit compilation environment, please add the following line to your Albany cmake configure script:

	-D ENABLE_64BIT_INT:BOOL=ON \

Note that only the AlbanyT tests will run if this flag is set to "ON".

Note also that Trilinos must be configured with the following packages for the 64-bit compilation environment in Albany to work:

	-D Zoltan_ENABLE_ULONG_IDS:BOOL=ON \
    -D ZOLTAN_BUILD_ZFDRIVE:BOOL=OFF \
    -D Teuchos_ENABLE_COMPLEX:BOOL=OFF \

####POCs if you experience problems

If you encounter any problems, or have any questions/comments regarding the new "master" branch of Albany, please contact Andrew Bradley (ambradl@sandia.gov), who has graciously volunteered to be the first POC. Additional POCs are: Irina Kalashnikova (ikalash@sandia.gov) and Glen Hansen (gahanse@sandia.gov).

####Contributors to the "tpetra-fication" of Albany

The following individuals have contributed to the development and upkeep of this branch of Albany during its 2+ year lifespan:

  • Irina Kalashnikova
  • Julien Cortial
  • Glen Hansen
  • Andrew Bradley
  • Andy Salinger
  • Alejandro Mota
Clone this wiki locally