Installation of PDI source distribution
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/tags
For example, release 1.1.0 can be downloaded from https://gitlab.maisondelasimulation.fr/pdidev/pdi/-/archive/1.1.0/pdi-1.1.0.tar.bz2
Default installation
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.
For example, release 1.1.0 can be installed by following these instructions (but look for the latest release at https://gitlab.maisondelasimulation.fr/pdidev/pdi/tags):
wget https://gitlab.maisondelasimulation.fr/pdidev/pdi/-/archive/1.1.0/pdi-1.1.0.tar.bz2
tar -xjf pdi-1.1.0.tar.bz2
mkdir pdi-1.1.0/build
cd pdi-1.1.0/build
cmake -DCMAKE_INSTALL_PREFIX=/usr/ .. # configuration
make install # compilation and installation
cmake
command must be followed by the path to the pdi
directory, here ..
because we have just created and moved to the build
subdirectory.
-DCMAKE_INSTALL_PREFIX=/usr/
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.
Configuration
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/local |
The 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 | Default | Description |
---|---|---|
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 theCMAKE_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 |
EMBEDDED |
the zpp preprocessor. |
USE_Doxygen |
AUTO |
the doxygen tool. |
USE_FlowVR |
AUTO |
the FlowVR framework. |
USE_FTI |
AUTO |
the FTI library. |
USE_GTest |
EMBEDDED |
the googletest framework. |
USE_HDF5 |
AUTO |
the HDF5 library. |
USE_paraconf |
AUTO |
the paraconf library. |
USE_pybind11 |
AUTO |
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 |
---|---|---|
INSTALL_CMAKEDIR |
PDIDATADIR/cmake |
Cmake modules. |
INSTALL_FMODDIR |
LIBDIR/pdi/finclude/${COMPILER_VERSION} |
Fortran modules |
INSTALL_PDIDATADIR |
DATADIR/pdi |
PDI data |
INSTALL_PDIPLUGINDIR |
LIBDIR/pdi/plugins_${PDI_VERSION} |
PDI plugins |
CMAKE_INSTALL_BINDIR |
see GNUInstallDirs | user executables |
CMAKE_INSTALL_DATADIR |
see GNUInstallDirs | read-only architecture-independent data |
CMAKE_INSTALL_DOCDIR |
see GNUInstallDirs | documentation root |
CMAKE_INSTALL_INCLUDEDIR |
see GNUInstallDirs | C header files |
CMAKE_INSTALL_LIBDIR |
see GNUInstallDirs | object code libraries |
CMAKE_INSTALL_PREFIX |
see CMake doc | Installation 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.1 or above,
- the spdlog library.
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:
Dependencies of the FlowVR plugin:
- the PDI library,
- FlowVR 2.3.2 version or above.
Dependencies of the FTI plugin:
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:
- doxygen version 1.8 or above.
Dependencies of the PDI configuration validation tool:
- a python interpreter version 2.7 or above (not provided),
- the python YAML module (not provided).