PDI 1.4.3

the PDI data interface

Installation of PDI source distribution
The recommended approach to install PDI is to use the stable pre-compiled binary packages for Debian, Fedora and Ubuntu available at https://github.com/pdidev/repo.
On other distributions, in case you do not have root access, or if you want a more recent version, the PDI source distribution can be easily downloaded and compiled.

The PDI source distribution includes:

  • the PDI core and its bindings for Fortran and python,
  • many PDI plugins,
  • the PDI configuration validator,
  • examples and tests,
  • most dependencies of all the above.

Downloading PDI source distribution

To download the sources, have a look at the list of all releases at https://gitlab.maisondelasimulation.fr/pdidev/pdi/-/releases

For example, release 1.4.3 can be downloaded from https://gitlab.maisondelasimulation.fr/pdidev/pdi/-/archive/1.4.3/pdi-1.4.3.tar.bz2

Default installation

The default PDI source distribution consists in a subset of the PDI source distribution considered stable enough for production use.

Installing the default PDI source distribution is fairly easy. Most dependencies are embedded in the distribution and the only required external dependencies are:

  • a POSIX compatible OS such as GNU/linux,
  • cmake version 3.5 or above,
  • a C 99, C++ 14 and Fortran 95 compiler such as gcc 5.4 or above,
  • a python interpreter (with venv), version 3.6 or above,
  • a bash interpreter,
  • a MPI 2 implementation.
This list of dependecies can be further reduced by limiting the set of features compiled.

For example, release 1.4.3 can be installed by following these instructions (but look for the latest release at https://gitlab.maisondelasimulation.fr/pdidev/pdi/-/releases ):

wget https://gitlab.maisondelasimulation.fr/pdidev/pdi/-/archive/1.4.3/pdi-1.4.3.tar.bz2
tar -xjf pdi-1.4.3.tar.bz2
mkdir pdi-1.4.3/build
cd pdi-1.4.3/build
cmake -DCMAKE_INSTALL_PREFIX="${HOME}/.local/" .. # configuration
make install # compilation and installation
The cmake command must be followed by the path to the pdi directory, here .. because we have just created and moved to the build subdirectory.
The -DCMAKE_INSTALL_PREFIX="${HOME}/.local/" flag is used to specify where to install the distribution, flags are discussed in more detail below.

If the default installation fails or if you need an installation better tailored to your needs, keep reading.


The PDI source distribution is compiled using CMake. The cmake command accepts options to configure the distribution with flags. The syntax is -D<FLAG>=<VALUE> to set FLAG value to VALUE.

For example, the installation directory can be changed with the following command:

cmake -DCMAKE_INSTALL_PREFIX=/home/user/ ..

The following general flags are useful to configure the distribution as a whole.

Flag Default Description
CMAKE_INSTALL_PREFIX/usr/localThe path where to install the distribution.
CMAKE_PREFIX_PATH A semicolon-separated list of prefix where to look for PDI dependencies in addition to system path.
DIST_PROFILE User Sets the default values of other flags. The possible values are User for the PDI use profile and Devel for the developer profile.
USE_DEFAULT AUTO Whether to compile the embedded versions of the dependencies. The possible values are SYSTEM to use the system versions, EMBEDDED to compile the version provided in the distribution and AUTO to prefer a system version but fall-back on the embedded version if unavailable.
BUILD_UNSTABLE OFF Whether to build the unstable parts of the distribution, either ON or OFF.
CMAKE_BUILD_TYPE Release Optimization level and debug verbosity. The possible values are Release and Debug.
PDI_PLUGIN_PATH same as PDI Path where to install all plugins. If not defined, will install relative to PDI.

The following flags define which features of the distribution to enable or not.

Flag DefaultDescription
BUILD_FORTRAN ON Build the Fortran interface.
BUILD_DECL_HDF5_PLUGIN ON Build the Decl'HDF5 plug-in.
BUILD_HDF5_PARALLEL ON Build the parallel version of the Decl'HDF5 plugin instead of the sequential one.
BUILD_MPI_PLUGIN ON Build the MPI plug-in.
BUILD_TEST_PLUGIN ON Build the Test plug-in.
BUILD_TRACE_PLUGIN ON Build the Trace plug-in.
BUILD_USER_CODE_PLUGIN ON Build the User-code plug-in.
BUILD_PYTHON OFF Build the Python interface.
BUILD_DECL_SION_PLUGIN OFF Build the decl'SION plug-in.
BUILD_FLOWVR_PLUGIN OFF Build the FlowVR plug-in.
BUILD_FTI_PLUGIN OFF Build the FTI plug-in.
BUILD_PYCALL_PLUGIN OFF Build Pycall plug-in.
BUILD_TESTING OFF Build the tests.
BUILD_DOCUMENTATION OFF Build the documentation website.
BUILD_INDENT OFF Build the code auto-indentation tools.
BUILD_CFG_VALIDATOR OFF Build the PDI configuration validation script.

The following flags define whether to:

  • use the preinstalled version of a dependency (SYSTEM), it will be looked for in the system directories and those specified by the CMAKE_PREFIX_PATH list,
  • compile the version of the dependency provided in the distribution (EMBEDDED),
  • compile another version of the dependency (the path to the source archive),
  • use the preinstalled version of a dependency if available and fallback on the compilation of the version of the dependency provided in the distribution if no preinstalled version is found.
Flag Default Description
USE_Astyle AUTO the astyle tool.
USE_Zpp EMBEDDEDthe zpp preprocessor.
USE_Doxygen AUTO the doxygen tool.
USE_FlowVR AUTO the FlowVR framework.
USE_FTI AUTO the FTI library.
USE_GTest EMBEDDEDthe googletest framework.
USE_HDF5 AUTO the HDF5 library.
USE_paraconfAUTO the paraconf library.
USE_pybind11AUTO the pybind11 library.
USE_SIONlib AUTO the SIONlib library.
USE_spdlog AUTO the spdlog library.
USE_yaml AUTO the yaml library.

The following flags define where to install PDI, those prefixed with CMAKE_ are provided and documented by the GNUInstallDirs cmake module.

Flag Default Description
CMAKE_INSTALL_BINDIRsee GNUInstallDirsuser executables
CMAKE_INSTALL_DATADIRsee GNUInstallDirsread-only architecture-independent data
CMAKE_INSTALL_DOCDIRsee GNUInstallDirsdocumentation root
CMAKE_INSTALL_INCLUDEDIRsee GNUInstallDirsC header files
CMAKE_INSTALL_LIBDIRsee GNUInstallDirsobject code libraries
CMAKE_INSTALL_PREFIXsee CMake docInstallation base

List of dependencies

Here is a list of all dependencies required by one feature or another. All dependencies are provided in the distribution unless specified otherwise.

Dependencies of PDI:

  • a POSIX compatible OS such as GNU/linux,
  • cmake version 3.5 or above (not provided),
  • a C 99 and C++ 14 compiler such as gcc 5.4 or above (not provided),
  • the paraconf library version 0.4 or above,
  • the libyaml library version 0.2.2 or above,
  • the spdlog library version 1.3.1 or above.

Dependencies of the Fortran API:

  • the PDI library,
  • a Fortran 95 compiler such as gcc 5.4 or above (not provided),
  • a python interpreter (with venv), version 3.6 or above (not provided),
  • a bash interpreter (not provided),
  • the zpp preprocessor version 0.3.0 or above.

Dependencies of the Decl'HDF5 plugin:

  • the PDI library,
  • the HDF5 library version 1.8 or above,
  • a MPI implementation for the parallel version of the plugin (not provided).

Dependencies of the MPI plugin:

  • the PDI library,
  • a MPI implementation (not provided).

Dependencies of the Python API:

  • the PDI library,
  • the python development environment version 3.5 or above (not provided),
  • the pybind11 library version 2.3 or above,

Dependencies of the Decl'SION plugin:

  • the PDI library,
  • SIONlib version 1.7.2 or above,

Dependencies of the FlowVR plugin:

Dependencies of the FTI plugin:

  • the PDI library,
  • the FTI library version 1.3 or above.

Dependencies of the Pycall plugin:

  • the PDI library with python API.

Dependencies of the tests:

  • the PDI library,
  • cmake version 3.10 or above (not provided),
  • the googletest framework version 1.8 or above,
  • astyle version 3.1 or above.

Dependencies of the documentation website builder:

Dependencies of the PDI configuration validation tool:

  • a python interpreter version 2.7 or above (not provided),
  • the python YAML module (not provided).