Skip to content

NWChemEx/PluginPlay

alt text

Actions

Citation Badge

Documentation

PluginPlay is an inversion-of-control (IoC) framework to facilitate wrtiting high-performance modular scientific software. More specifically, using PluginPlay scientific software is written as a series of disconnected modules. At runtime the modules are loaded into PluginPlay and then PluginPlay wires the modules together to form a call graph. A more detailed overview can be found here.

Features

From the perspective of high-performance scientific software development, the main features enjoyed by a program built on top of PluginPlay are:

  • Want to call your new optimizer everwhere an optimizer is needed without modifying those places, or even knowing where those places are? Runtime dependency injection lets you do just that!
  • Memoization of the call graph. PluginPlay automatically records the execution of the call graph, which facilitates saving/loading a calcualtion.
  • Plugin-based development. In C++ there is no need to recompile anything other than your plugin while developing it. Notably all other plugins and the program consuming the plugins, do not need to be recompiled!

A full feature list can be found here.

Install

PluginPlay ultimately uses CMake for configuring and building. This means that installation is usually achieved via a variation on:

git clone https://github.com/NWChemEx/PluginPlay
cd PluginPlay
cmake -H. -Bbuild -D...
cmake --build build --target install

More detailed install instructions can be found here.

Contributing

Acknowledgments

This research was supported by the Exascale Computing Project (17-SC-20-SC), a collaborative effort of the U.S. Department of Energy Office of Science and the National Nuclear Security Administration.