Skip to content

installation

Ondrej Meca edited this page Mar 3, 2021 · 1 revision

external dependencies

In the current version, the modules can be compiled and executed on Linux operating systems only. Some functionality requires third-party libraries that should be installed in the system before the installation process. Currently available wrappers are the followings:

  1. Math libraries: Currently, the espreso core is based on the Intel MKL library. Without this library, only the mesio module can be used.
  1. Parallel graph partitioners: For loading external databases the library should be linked with an external parallel graph partitioner.
  1. Sequential graph partitioners: In other to use second level decomposition (e.q. Hybrid FETI) at an external graph decomposer is needed. Except for KaHIP, they are usually part of parallel graph decomposers.
  1. Third party solvers: Espreso is based on in-house FETI based solvers. However, in some circumstances utilization of other solvers can be advantageous (the small number of MPI processes, sequential run, etc.).
  1. Other libraries: In the case of loading or storing results in the XDMF format, the HDF5 library should be linked. Qt is needed for building the GUI module.

building the library

For compilation Python-based framework Waf is used. The compilation process has two phases: configuration and compilation. The former configures persistent data and checks available headers and libraries. The latter builds the library. It is mandatory to re-run the configuration process after any change of environment. The following commands build all modules if require libraries are available:

$ ./waf configure
$ ./waf

The compilation process builds all libraries and executables into the build directory. This directory should be added to LD_LIBRARY_PATH and PATH environment variables. Then it is possible to run mesio or espreso by the following command:

$ mpirun -n $N mesio -c $ECF
$ mpirun -n $N espreso -c $ECF

where N is the number of MPI processes and ECF is the espreso configuration file (examples can be found e.g. in the benchmarks directory).

set up the environment

Before running the library, the following variables should be set according to the number of CPU cores per compute node (nCores) and the number of MPI processes processed per node (PPN):

  • OMP_NUM_THREADS - should be set to nCores/PPN
  • SOLVER_NUM_THREADS - should be set to nCores/PPN
  • PAR_NUM_THREADS - should be set to nCores/PPN

It is possible to set all environment variables at once using the following script in the espreso root directory:

$ . env/threading.default ${nCores/PPN}

testing the installation

The installation of the library can be validated by the included set of benchmarks. Usually, it is sufficient to run dummy benchmarks only in order to avoid exhausting testing. The testing by nosetests can be started by the following command:

$ nosetests benchmarks/dummy
Clone this wiki locally