Skip to content
Lorraine Hwang edited this page Jul 9, 2021 · 4 revisions

On this page we collect instructions on how to install ASPECT on special systems on which the recommended approach in the manual fails. In case your installation fails, and your case is not covered on this page, please follow our instructions on how to raise an issue in CONTRIBUTING.md and if you solved a problem that is not mentioned in this FAQ, we appreciate any addition to this wiki.

Installation without internet access:

candi relies on the fact that it can download packages from known internet locations. Some cluster systems might prevent internet access or disallow certain SSL certificates. In these cases please install candi and deal.II on a different system (e.g. a desktop system) and then copy the downloaded packages to your cluster. candi will recognize the existence of the packages and skip the download phase. The packages should be placed in the following folder:

INSTALL_PATH/tmp/src

where INSTALL_PATH is the installation path that you provide to candi in step 2 of the recommended install section in the manual.

Installation without git:

In case git is not available on your system, you can replace the instructions to obtain candi in step 1 of the recommended install section in the manual by the following:

 wget https://github.com/dealii/candi/archive/master.tar.gz
 tar -xzf master.tar.gz
 cd candi-master

Since git is required for the installation of deal.II and ASPECT, you can then utilize candi to install it. In order to do this, uncomment the following line in the candi.cfg file in the candi directory:

#PACKAGES="${PACKAGES} once:git"

Installing missing prerequisites:

As described in the last paragraph candi, is able to install some of the prerequisites mentioned in the recommended install section in the manual if they are not available or packaged for your system. This can be especially useful on cluster systems. For a list of available packages, see the candi.cfg file in the candi directory and uncomment the missing packages.

Using custom compiler and linker flags:

If your system requires custom compiler or linker flags (e.g. -lmpi to link to the MPI libraries), you can set the common environment variables (CFLAGS,CPPFLAGS,LDFLAGS) in your terminal, or include the corresponding commands into the candi.cfg file in the candi directory to make sure they are set whenever candi is run.

Installation using Intel's MKL as BLAS/LAPACK:

A common obstacle during installation is that many cluster systems utilize Intel's MKL library as an implementation of the BLAS/LAPACK routines. candi can automatically configure the packages that depend on this implementation if it is told to do so. To this end, modify the corresponding section of the candi.cfg file in the candi directory. It should contain the following lines:

MKL=ON
MKL_DIR=${MKLROOT}/lib/intel64

Note that the value of MKL_DIR needs to point to your mkl implementation, i.e. the folder that contains the libraries (like libmkl_core.so and others). The value ${MKLROOT}/lib/intel64 is simply a common place for the installation, and might be different on your system (consult you cluster's documentation or contact technical support).

Installation without support for C++11:

The C++ programming language has received a major update in 2011 introducing the C++11 standard. Compilers compatible with this new version were released shortly afterwards and have been available for some time (e.g. GCC-4.8.0, the first GCC version considered to have full C++11 support, was released in 2013, other compatible compilers are Clang 3.3, and Intel 15 or newer).

We are aware that some clusters without regular support might not provide C++11 support and have therefore kept ASPECT compatible with older compilers in line with the implementations of deal.II (see also https://github.com/dealii/dealii/wiki/Frequently-Asked-Questions#does-dealii-require-c11-support). Note however, that Trilinos and deal.II already dropped support for non-C++11 compilers in Trilinos 12.0 and deal.II 9.0. Therefore, you will have to use specific versions of Trilinos and deal.II to compile ASPECT with a non-C++11 conform compiler. We recommend using Trilinos 11.10.1, and deal.II 8.5.0 that both support older compilers.

Note that following deal.II, ASPECT will also drop support for non-C++11 compilers after the release of ASPECT 2.0.

Compiling a static ASPECT executable:

ASPECT defaults to a dynamically linked executable, which saves disk space and build time. In some circumstances however, it is preferred to generate a statically linked executable that incorporates all used libraries. This need may arise on large clusters on which libraries and loaded modules/variables on login nodes may be different from the ones available on compute nodes. The general build procedure in such a case equals the above explained instructions with the following differences:

  • Trilinos and deal.II: Add the following lines to your candi.cfg file:
 TRILINOS_CONFOPTS="-DBUILD_SHARED_LIBS=OFF -DTPL_FIND_SHARED_LIBS=OFF"
 DEAL_CONFOPTS="-DDEAL_II_STATIC_EXECUTABLE=ON"
  • p4est: Change items --enable-shared to --enable-static in candi/deal.II-toolchain/packages/p4est.package lines 68 and 82.
  • ASPECT: If everything above is set up correctly, there is no need for any configuration change to ASPECT's build procedure. You should see the following cmake output from ASPECT:
-- Creating a statically linked executable
-- Disabling dynamic loading of plugins from the input file

The build mentioned here was tested on a Cray XC30 cluster, which was set up for default static compiling and linking. On machines that default to dynamic linking, additional compiler and/or linker flags may be required (e.g. -fPIC / --static). In case of questions, send an email to the mailing list.