The prerequisites needed to build this repository can be found here.

Build Instructions

Dependencies

External dependencies

  • cmake >= 3.26

  • MPI

  • C++17 compiler (information on supported compilers here here.)

  • CUDA >= 11.7 (Required only for CUDA builds)

  • ROCM >= 5.5 (Required only for ROCM builds)

The remaining dependencies are automatically built and do not need to be installed explicitly:

  • GlobalArrays

  • HPTT, Librett

  • HDF5

  • BLAS/LAPACK (BLIS and netlib-lapack are automatically built if no vendor BLAS libraries are provided)

  • BLAS++ and LAPACK++

  • Eigen3, doctest

Choose Build Options

CUDA Options

-DTAMM_ENABLE_CUDA=ON (OFF by default)
One of -DGPU_ARCH=X (OR) -DCMAKE_CUDA_ARCHITECTURES=X is required. Set the arch value X to 70 for Volta, 80 for Ampere, 90 for Hopper and 95 for Blackwell.

HIP Options

-DTAMM_ENABLE_HIP=ON (OFF by default)
-DROCM_ROOT=$ROCM_PATH
One of -DGPU_ARCH=gfx90a (OR) -DCMAKE_HIP_ARCHITECTURES=gfx90a is required.

DPCPP options

-DTAMM_ENABLE_DPCPP=ON (OFF by default)

CMake options for developers (optional)

-DUSE_GA_PROFILER=ON #Enable GA's profiling feature (GCC Only).

-DMODULES="CC" (empty by default)

Building TAMM

export REPO_ROOT_PATH=$HOME/TAMM
export REPO_INSTALL_PATH=$HOME/tamm_install
git clone <repo-url> $REPO_ROOT_PATH
cd $REPO_ROOT_PATH
# Checkout the branch you want to build
mkdir build && cd build

In addition to the build options chosen, there are various build configurations depending on the BLAS library one wants to use.

Default build using BLIS and NETLIB LAPACK

To enable CUDA build, add -DTAMM_ENABLE_CUDA=ON and -DGPU_ARCH=<value>

cd $REPO_ROOT_PATH/build
CC=gcc CXX=g++ FC=gfortran cmake -DCMAKE_INSTALL_PREFIX=$REPO_INSTALL_PATH ..

make -j3
make install

Default build on MACOS

Note

The prerequisites for MACOS can be installed using brew as detailed here.

cd $REPO_ROOT_PATH/build
FC=gfortran cmake -DCMAKE_INSTALL_PREFIX=$REPO_INSTALL_PATH -DLINALG_VENDOR=OpenBLAS ..

make -j3
make install

Build using Intel MKL

To enable CUDA build, add -DTAMM_ENABLE_CUDA=ON and -DGPU_ARCH=<value>

cd $REPO_ROOT_PATH/build

CC=gcc CXX=g++ FC=gfortran cmake -DLINALG_VENDOR=IntelMKL \
-DLINALG_PREFIX=/opt/intel/mkl \
-DCMAKE_INSTALL_PREFIX=$REPO_INSTALL_PATH ..

make -j3
make install

Build instructions for Frontier

module load cpe
module load cray-python cmake cray-hdf5-parallel
module load cce
module load cray-mpich
module load rocm
export CRAYPE_LINK_TYPE=dynamic
cd $REPO_ROOT_PATH/build

CC=cc CXX=CC FC=ftn cmake \
-DCMAKE_INSTALL_PREFIX=$REPO_INSTALL_PATH \
-DGPU_ARCH=gfx90a \
-DTAMM_ENABLE_HIP=ON -DROCM_ROOT=$ROCM_PATH \
-DHDF5_ROOT=$HDF5_ROOT ..

make -j3
make install

Build instructions for Perlmutter and Polaris

Perlmutter modules and env

module load PrgEnv-gnu
module load cmake
module load cpe-cuda
module load cudatoolkit
module unload craype-accel-nvidia80

export CRAYPE_LINK_TYPE=dynamic
export MPICH_GPU_SUPPORT_ENABLED=0

Polaris modules and env

module use /soft/modulefiles/
module load PrgEnv-gnu
module load cudatoolkit-standalone/12.6.1 spack-pe-base cmake
module unload craype-accel-nvidia80

export CRAYPE_LINK_TYPE=dynamic
export MPICH_GPU_SUPPORT_ENABLED=0

Common build steps

cd $REPO_ROOT_PATH/build

cmake -DTAMM_ENABLE_CUDA=ON -DGPU_ARCH=80 -DBLIS_CONFIG=generic \
-DCMAKE_INSTALL_PREFIX=$REPO_INSTALL_PATH ..

make -j3
make install

Build instructions for Aurora

module restore
module load cmake python
cd $REPO_ROOT_PATH/build

CC=icx CXX=icpx FC=ifx cmake \
-DCMAKE_INSTALL_PREFIX=$REPO_INSTALL_PATH \
-DLINALG_VENDOR=IntelMKL -DLINALG_PREFIX=$MKLROOT \
-DTAMM_ENABLE_DPCPP=ON \
-DTAMM_CXX_FLAGS="-march=sapphirerapids -mtune=sapphirerapids -ffast-math -fsycl -fsycl-device-code-split=per_kernel -fsycl-targets=intel_gpu_pvc -sycl-std=2020"

make -j12
make install