This is the PDI source distribution, including PDI (the PDI Data Interface), its bindings for Fortran and python, the PDI plugins, examples and tests, documentation, as well as many dependencies of all those.
PDI is a library that aims to decouple high-performance simulation codes from Input/Output concerns. It offers a declarative application programming interface that enables codes to expose the buffers in which they store data and to notify PDI of significant steps of the simulation. It supports a plugin system to make existing libraries such as HDF5, NetCDF or Python available to codes, potentially mixed in a single execution.
This approach makes it possible to describe the I/O operations in a dedicated YAML file instead of interleaving them with the simulation code and thus to improve their portability and maintainability. The public plugin API offered by PDI is general and simple enough that one can easily add support for the best suited library for its use-case (problem size, IO type, hardware used, etc.)
The on-line PDI documentation is available at https://pdi.dev
The recommended approach to install PDI is to use the stable pre-compiled binary packages for Debian, Fedora and Ubuntu.
On other distributions, or in case you do not have root access, PDI spack recipe can be used.
In case you don't want to use either option, you can install PDI source distribution using the dedicated installation instructions.
Contributions are welcome! The contributing guide describes how to set up a development build, run the test suite, find your way around the source tree and submit your work, as well as the coding conventions the project follows.
Bugs and feature requests are tracked at https://github.com/pdidev/pdi/issues and development is discussed on the PDI slack channel at https://pdidev.slack.com
PDI is distributed under the 3-clause BSD license, see the LICENSE file.
PDI distribution is made of the following submodules:
mock_pdi/: a header-only no-op implementation of the PDI application API, so that codes can be built and run without PDI,pdi/: the PDI library,plugins/decl_hdf5/: the Decl'HDF5 plugin,plugins/decl_netcdf/: the Decl'NetCDF plugin,plugins/json/: the JSON plugin,plugins/mpi/: the MPI plugin,plugins/pycall/: the Pycall plugin,plugins/serialize/: the serialize plugin,plugins/set_value/: the Set value plugin,plugins/timer/: the Timer plugin,plugins/trace/: the Trace plugin,plugins/user_code/: the user-code plugin,example/: PDI examples,tests/api_tests/: tests of PDI API (can be used with either PDI or mock PDI),tests/cmake_tests/: test the installation of PDI from cmake,tests/combination_tests/: tests that combine multiple plugins,tutorial/: the PDI tutorial,vendor/: source for vendored PDI dependencies.ACKNOWLEDGMENTS.md,AUTHORS,bin/,CHANGELOG.md,cmake/,CMakeLists.txt,CONTRIBUTING.md,LICENSE,PACKAGING.md,README.md,spack.yaml: files and directories specific to the PDI distribution itself,