eckit
What is eckit?
eckit contains C++ helper classes that provides most notably following functionality to Atlas:
- Configuration
- YAML / JSON parser
- Logging
- Streams: Info / Warning / Error / Debug
- Hashing (MD5)
- Exception handling
- MPI abstraction with both a Parallel (true MPI) and Serial implementation
- Dense matrix and sparse matrix linear algebra abstraction with following notable backends depending on availability
- Generic (nested for loops)
- BLAS/LAPACK
- MKL
- Eigen
- Testing framework
Downloading
eckit is officially maintained and available from its ECMWF github page.
The master
branch tracks the latest stable release, whereas the develop
branch tracks the latest developments.
To download the project at the latest release we can type on the terminal the commands reported below:
git clone -b master https://github.com/ecmwf/eckit.git
Installing
The eckit build system is based on CMake which tries to automatically detect compilers and project dependencies. To avoid suprises make sure that the following environment variables are pointing to the correct compiler.
CC
– Path to C compilerCXX
– Path to C++ compiler
Other environment variables which may help CMake (version greater than 3.12) in finding useful dependencies for Atlas:
ecbuild_ROOT
– Path to ecbuild install prefixMPI_ROOT
– Path to MPI install prefixMKLROOT
– Path to Intel MKL install prefixEigen3_ROOT
– Path to Eigen install prefix
eckit can be configured and installed as follows, to a given path-to-install
as shown below:
cd eckit mkdir build && cd build cmake ../ -DCMAKE_INSTALL_PREFIX=<path-to-install> make install
If Atlas is the only reason to install eckit, it is OK to have several (undocumented) eckit features disabled.
It is then safe to add following to the arguments to the cmake
configuration above:
-DENABLE_TESTS=OFF \ -DENABLE_ECKIT_SQL=OFF \ -DENABLE_ECKIT_CMD=OFF \ -DENABLE_ARMADILLO=OFF \ -DENABLE_VIENNACL=OFF \ -DENABLE_CUDA=OFF \ -DENABLE_AEC=OFF \ -DENABLE_XXHASH=OFF \ -DENABLE_LZ4=OFF \ -DENABLE_JEMALLOC=OFF \ -DENABLE_BZIPS2=OFF \ -DCMAKE_DISABLE_FIND_PACKAGE_Doxygen=ON