Skip to content

A framework for developing new CI based on dokcer images and dev/master model

License

Notifications You must be signed in to change notification settings

yzhang-23/PluginPlay

 
 

Repository files navigation

alt text

Actions

Documentation

TODO: add badge when article has DOI.

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-Project/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.

About

A framework for developing new CI based on dokcer images and dev/master model

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 99.1%
  • Other 0.9%