Install from Source

Fides uses CMake version 3.9 or above, for building, testing, and installing the library and utilities.

Dependencies

  • ADIOS2: Most recent release is preferred, but most ADIOS2 versions should be fine.

  • Viskores: Version 1.0 or later.

Building, Testing, and Installing Fides

To build Fides, clone the repository and invoke the canonical CMake build sequence:

$ git clone https://gitlab.kitware.com/vtk/fides.git

If you want to run tests or use the test data, you’ll need to download the data using Git LFS.

$ cd fides
$ git lfs install
$ git lfs pull
$ cd ..

Now continue with the build process:

$ mkdir fides-build && cd fides-build
$ cmake ../fides
-- The C compiler identification is GNU 7.3.0
-- The CXX compiler identification is GNU 7.3.0
...

Then compile using

$ make

If you downloaded the test data, you can now optionally run the tests:

$ ctest
Test project /Users/caitlinross/dev/fides-build
      Start  1: test-basic
 1/17 Test  #1: test-basic ........................   Passed    0.20 sec
      Start  2: test-explicit
 2/17 Test  #2: test-explicit .....................   Passed    0.18 sec

      ...

      Start 17: validate-inline
17/17 Test #17: validate-inline ...................   Passed    0.03 sec

And finally, use the standard invocation to install:

$ make install

CMake Options

The following options can be specified with CMake’s -DVAR=VALUE syntax. The default option is highlighted.

VAR

VALUE

Description

FIDES_ENABLE_EXAMPLES

ON/OFF

Build examples

FIDES_ENABLE_TESTING

ON/OFF

Build tests

BUILD_SHARED_LIBS

ON/OFF

Build shared libraries.

CMAKE_INSTALL_PREFIX

/path/to/install (/usr/local)

Installation location.

CMAKE_BUILD_TYPE

Debug/Release/RelWithDebInfo/MinSizeRel

Compiler optimization levels.

Building your application

Building your application against Fides is easy, simply add the Fides library target into your target’s link libraries:

target_link_libraries(my-custom-app PUBLIC <other-needed-libs> fides)

If your application itself also depends on MPI, you may encounter link errors related to legacy MPI C++ bindings, e.g.:

undefined reference to `ompi_mpi_cxx_op_intercept'
undefined reference to `MPI::Comm::Comm()'
undefined reference to `MPI::Win::Free()'

If this happens, you have two options:

  1. Be sure to include Fides headers before you include <mpi.h>

  2. Tell cmake to skip those bindings for your target like this:

    target_compile_definitions(my-custom-app PRIVATE
      OMPI_SKIP_MPICXX=1
      MPICH_SKIP_MPICXX=1
      MPI_NO_CPPBIND=1
      _MPICC_H=1
    )