Skip to content

An inversion-of-control framework for developing modular scientific software.

License

Notifications You must be signed in to change notification settings

NWChemEx/PluginPlay

Folders and files

NameName
Last commit message
Last commit date

Latest commit

jlheflingithub-actions[bot]ryanmrichard
Mar 14, 2025
36c7420 · Mar 14, 2025
Apr 26, 2024
Dec 29, 2023
Jun 12, 2024
Mar 14, 2025
Mar 14, 2025
Mar 14, 2025
Jan 29, 2024
Mar 14, 2025
Feb 5, 2025
Sep 15, 2020
Jan 8, 2024
Sep 26, 2020

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.