Getting started » Downloading and building » 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 compiler
  • CXX – 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 prefix
  • MPI_ROOT – Path to MPI install prefix
  • MKLROOT – Path to Intel MKL install prefix
  • Eigen3_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