-
Notifications
You must be signed in to change notification settings - Fork 237
Installation FAQ
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.
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.
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"
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.
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.
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).
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.
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
incandi/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.