For many computational chemistry packages, being able to efficiently and effectively scale across an exascale cluster is a heroic feat. Collective experience from the Department of Energy’s Exascale Computing Project suggests that achieving exascale performance requires far more planning, design, and optimization than scaling to petascale. In many cases, entire rewrites of software are necessary to address fundamental algorithmic bottlenecks. This in turn requires a tremendous amount of resources and development time, resources that cannot reasonably be afforded by every computational science project. It thus becomes imperative that computational science transition to a more sustainable paradigm. Key to such a paradigm is modular software. While the importance of modular software is widely recognized, what is perhaps not so widely appreciated is the effort still required to leverage modular software in a sustainable manner. The present manuscript introduces PluginPlay, https://github.com/NWChemEx-Project/PluginPlay, an inversion-of-control framework designed to facilitate developing, maintaining, and sustaining modular scientific software packages. This manuscript focuses on the design aspects of PluginPlay and how they specifically influence the performance of the resulting package. Although, PluginPlay serves as the framework for the NWChemEx package, PluginPlay is not tied to NWChemEx or even computational chemistry. We thus anticipate PluginPlay to prove to be a generally useful tool for a number of computational science packages looking to transition to the exascale.

1.
G.
Moore
, “
Cramming more components onto integrated circuits, reprinted from electronics, volume 38, number 8, April 19, 1965, pp. 114 ff
,”
IEEE Solid-State Circuits Soc. Newsl.
11
,
33
35
(
2006
).
2.
R. H.
Dennard
,
F. H.
Gaensslen
,
H.-N.
Yu
,
V. L.
Rideout
,
E.
Bassous
, and
A. R.
LeBlanc
, “
Design of ion-implanted MOSFET’s with very small physical dimensions
,”
IEEE J. Solid-State Circuits
9
,
256
268
(
1974
).
3.
M.
Valiev
,
E. J.
Bylaska
,
N.
Govind
,
K.
Kowalski
,
T. P.
Straatsma
,
H. J. J.
Van Dam
,
D.
Wang
,
J.
Nieplocha
,
E.
Apra
,
T. L.
Windus
, and
W. A.
de Jong
, “
NWChem: A comprehensive and scalable open-source solution for large scale molecular simulations
,”
Comput. Phys. Commun.
181
,
1477
1489
(
2010
).
4.
R. A.
Kendall
,
E.
Aprà
,
D. E.
Bernholdt
,
E. J.
Bylaska
,
M.
Dupuis
,
G. I.
Fann
,
R. J.
Harrison
,
J.
Ju
,
J. A.
Nichols
,
J.
Nieplocha
,
T. P.
Straatsma
,
T. L.
Windus
, and
A. T.
Wong
, “
High performance computational chemistry: An overview of NWChem a distributed parallel application
,”
Comput. Phys. Commun.
128
,
260
283
(
2000
).
5.
E.
Aprà
,
E. J.
Bylaska
,
W. A.
de Jong
,
N.
Govind
,
K.
Kowalski
,
T. P.
Straatsma
,
M.
Valiev
,
H. J. J.
van Dam
,
Y.
Alexeev
,
J.
Anchell
,
V.
Anisimov
,
F. W.
Aquino
,
R.
Atta-Fynn
,
J.
Autschbach
,
N. P.
Bauman
,
J. C.
Becca
,
D. E.
Bernholdt
,
K.
Bhaskaran-Nair
,
S.
Bogatko
,
P.
Borowski
,
J.
Boschen
,
J.
Brabec
,
A.
Bruner
,
E.
Cauët
,
Y.
Chen
,
G. N.
Chuev
,
C. J.
Cramer
,
J.
Daily
,
M. J. O.
Deegan
,
T. H.
Dunning
,
M.
Dupuis
,
K. G.
Dyall
,
G. I.
Fann
,
S. A.
Fischer
,
A.
Fonari
,
H.
Früchtl
,
L.
Gagliardi
,
J.
Garza
,
N.
Gawande
,
S.
Ghosh
,
K.
Glaesemann
,
A. W.
Götz
,
J.
Hammond
,
V.
Helms
,
E. D.
Hermes
,
K.
Hirao
,
S.
Hirata
,
M.
Jacquelin
,
L.
Jensen
,
B. G.
Johnson
,
H.
Jónsson
,
R. A.
Kendall
,
M.
Klemm
,
R.
Kobayashi
,
V.
Konkov
,
S.
Krishnamoorthy
,
M.
Krishnan
,
Z.
Lin
,
R. D.
Lins
,
R. J.
Littlefield
,
A. J.
Logsdail
,
K.
Lopata
,
W.
Ma
,
A. V.
Marenich
,
J.
Martin del Campo
,
D.
Mejia-Rodriguez
,
J. E.
Moore
,
J. M.
Mullin
,
T.
Nakajima
,
D. R.
Nascimento
,
J. A.
Nichols
,
P. J.
Nichols
,
J.
Nieplocha
,
A.
Otero-de-la-Roza
,
B.
Palmer
,
A.
Panyala
,
T.
Pirojsirikul
,
B.
Peng
,
R.
Peverati
,
J.
Pittner
,
L.
Pollack
,
R. M.
Richard
,
P.
Sadayappan
,
G. C.
Schatz
,
W. A.
Shelton
,
D. W.
Silverstein
,
D. M. A.
Smith
,
T. A.
Soares
,
D.
Song
,
M.
Swart
,
H. L.
Taylor
,
G. S.
Thomas
,
V.
Tipparaju
,
D. G.
Truhlar
,
K.
Tsemekhman
,
T.
Van Voorhis
,
Á.
Vázquez-Mayagoitia
,
P.
Verma
,
O.
Villa
,
A.
Vishnu
,
K. D.
Vogiatzis
,
D.
Wang
,
J. H.
Weare
,
M. J.
Williamson
,
T. L.
Windus
,
K.
Woliński
,
A. T.
Wong
,
Q.
Wu
,
C.
Yang
,
Q.
Yu
,
M.
Zacharias
,
Z.
Zhang
,
Y.
Zhao
, and
R. J.
Harrison
, “
NWChem: Past, present, and future
,”
J. Chem. Phys.
152
,
184102
(
2020
).
6.
K.
Kowalski
,
R.
Bair
,
N. P.
Bauman
,
J. S.
Boschen
,
E. J.
Bylaska
,
J.
Daily
,
W. A.
de Jong
,
T.
Dunning
,
N.
Govind
,
R. J.
Harrison
,
M.
Keçeli
,
K.
Keipert
,
S.
Krishnamoorthy
,
S.
Kumar
,
E.
Mutlu
,
B.
Palmer
,
A.
Panyala
,
B.
Peng
,
R. M.
Richard
,
T. P.
Straatsma
,
P.
Sushko
,
E. F.
Valeev
,
M.
Valiev
,
H. J. J.
van Dam
,
J. M.
Waldrop
,
D. B.
Williams-Young
,
C.
Yang
,
M.
Zalewski
, and
T. L.
Windus
, “
From NWChem to NWChemEx: Evolving with the computational chemistry landscape
,”
Chem. Rev.
121
,
4962
4998
(
2021
).
7.
A.
Petrone
,
D. B.
Williams-Young
,
S.
Sun
,
T. F.
Stetina
, and
X.
Li
, “
An efficient implementation of two-component relativistic density functional theory with torque-free auxiliary variables
,”
Eur. Phys. J. B
91
,
169
(
2018
).
8.
D. B.
Williams-Young
,
W. A.
de Jong
,
H. J.
van Dam
, and
C.
Yang
, “
On the efficient evaluation of the exchange correlation potential on graphics processing unit clusters
,”
Front. Chem.
8
,
581058
(
2020
).
9.
P.
Messina
, “
The exascale computing project
,”
Comput. Sci. Eng.
19
,
63
67
(
2017
).
10.
See https://www.exascaleproject.org/ for Exascale computing project; accessed 22 February 2023.
11.
P.
Kogge
,
S.
Borkar
,
D.
Campbell
,
W.
Carlson
,
W.
Dally
,
M.
Denneau
,
P.
Franzon
,
W.
Harrod
,
J.
Hiller
,
S.
Keckler
,
D.
Klein
, and
R.
Lucas
, “
Exascale computing study: Technology challenges in achieving exascale systems, defense advanced research projects agency information processing techniques office (DARPA IPTO)
,” Techinal Representative 15,
2008
.
12.
E.
Abraham
,
C.
Bekas
,
I.
Brandic
,
S.
Genaim
,
E. B.
Johnsen
,
I.
Kondov
,
S.
Pllana
, and
A.
Streit
, “
Preparing HPC applications for exascale: Challenges and recommendations
,” in
2015 18th International Conference on Network-Based Information Systems, Taipei, Taiwan, 2-4 September 2015
(
IEEE
,
2015
), pp.
401
406
.
13.
G.
Da Costa
,
T.
Fahringer
,
J. A. R.
Gallego
,
I.
Grasso
,
A.
Hristov
,
H. D.
Karatza
,
A.
Lastovetsky
,
F.
Marozzo
,
D.
Petcu
,
G. L.
Stavrinides
,
D.
Talia
,
P.
Trunfio
, and
H.
Astsatryan
, “
Exascale machines require new programming paradigms and runtimes
,”
Supercomput. Front. Innovations
2
,
6
27
(
2015
).
14.
K.
Raghavachari
,
G. W.
Trucks
,
J. A.
Pople
, and
M.
Head-Gordon
, “
A fifth-order perturbation comparison of electron correlation theories
,”
Chem. Phys. Lett.
157
,
479
483
(
1989
).
15.
G. M.
Amdahl
, “
Validity of the single processor approach to achieving large scale computing capabilities
,” in
Proceedings of the April 18–20, 1967, Spring Joint Computer Conference, AFIPS ’67 (Spring)
(
Association for Computing Machinery
,
New York
,
1967
), pp.
483
485
.
16.
R.
Chandra
,
L.
Dagum
,
D.
Kohr
,
R.
Menon
,
D.
Maydan
, and
J.
McDonald
,
Parallel Programming in OpenMP
(
Morgan Kaufmann
,
2001
).
18.
See https://bssw.io/ for better scientific software; accessed 30 December 2022.
19.
See https://de-rse.org/de/index.html for German society for research software engineers; accessed 30 December 2022.
20.
See https://molssi.org/ for the molecular sciences software institute; accessed 28 December 2022.
21.
See https://nordic-rse.org/ for the Nordic research software engineers association; accessed 30 December 2022.
22.
See https://www.researchsoft.org/ for research software alliance; accessed 30 December 2022.
23.
See https://rse-aunz.github.io/ for the RSE association of Australia and New Zealand; accessed 30 December 2022.
24.
See https://society-rse.org for the society of research software engineering; accessed 30 December 2022.
25.
See https://se4science.org/ for Software engineering for science; accessed 30 December 2022.
26.
See https://www.software.ac.uk/ for the software sustainability institute; accessed 30 December 2022.
27.
See https://us-rse.org/ for the united states research software engineer association; accessed 30 December 2022.
28.
See https://wssspe.researchcomputing.org.uk/ for Working towards sustainable software for science: Practice and experiencies; accessed 30 December 2022.
29.
T.
Gamblin
,
M.
LeGendre
,
M. R.
Collette
,
G. L.
Lee
,
A.
Moody
,
B. R.
de Supinski
, and
S.
Futral
, “
The Spack package manager: Bringing order to HPC software chaos
,” in
Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis
(
IEEE
,
Austin, TX
,
2015
), lLNL-CONF-669890.
30.
D. E.
Bernholdt
,
B. A.
Allan
,
R.
Armstrong
,
F.
Bertrand
,
K.
Chiu
,
T. L.
Dahlgren
,
K.
Damevski
,
W. R.
Elwasif
,
T. W.
Epperly
,
M.
Govindaraju
,
D. S.
Katz
,
J. A.
Kohl
,
M.
Krishnan
,
G.
Kumfert
,
J. W.
Larson
,
S.
Lefantzi
,
M. J.
Lewis
,
A. D.
Malony
,
L. C.
McInnes
,
J.
Nieplocha
,
B.
Norris
,
S. G.
Parker
,
J.
Ray
,
S.
Shende
,
T. L.
Windus
, and
S.
Zhou
, “
A component architecture for high-performance scientific computing
,”
Int. J. High-Perform. Comput. Appl.
20
,
163
202
(
2006
).
31.
T. P.
Gulabani
, “
Development of high performance scientific components for interoperability of computing packages
,” Ph.D. thesis,
Iowa State University
,
2008
.
32.
J. P.
Kenny
,
C. L.
Janssen
,
E. F.
Valeev
, and
T. L.
Windus
, “
Components for integral evaluation in quantum chemistry
,”
J. Comput. Chem.
29
,
562
577
(
2008
).
33.
C. L.
Janssen
,
E. T.
Seidl
, and
M. E.
Colvin
, “
Object-oriented implementation of parallel ab initio programs
,” in
Parallel Computing in Computational Chemistry
(
American Chemical Society
,
1995
), Chap. 4, pp.
47
61
.
34.
C.
Peng
,
C.
Lewis
,
X.
Wang
,
M.
Clement
,
F.
Pavosevic
,
J.
Zhang
,
V.
Rishi
,
N.
Teke
,
K.
Pierce
,
J.
Calvin
,
J.
Kenny
,
E.
Seidl
,
C.
Janssen
, and
E.
Valeev
, The massively parallel quantum chemistry program (MPQC), version 4.0.0-beta.1, http://github.com/ValeevGroup/mpqc; accessed 29 December 2022.
35.
J. M.
Turney
,
A. C.
Simmonett
,
R. M.
Parrish
,
E. G.
Hohenstein
,
F. A.
Evangelista
,
J. T.
Fermann
,
B. J.
Mintz
,
L. A.
Burns
,
J. J.
Wilke
,
M. L.
Abrams
,
N. J.
Russ
,
M. L.
Leininger
,
C. L.
Janssen
,
E. T.
Seidl
,
W. D.
Allen
,
H. F.
Schaefer
,
R. A.
King
,
E. F.
Valeev
,
C. D.
Sherrill
, and
T. D.
Crawford
, “
Psi4: An open-source ab initio electronic structure program
,”
Wiley Interdiscip. Rev.: Comput. Mol. Sci.
2
,
556
565
(
2012
).
36.
R. M.
Parrish
,
L. A.
Burns
,
D. G. A.
Smith
,
A. C.
Simmonett
,
A.
Eugene DePrince
,
E. G.
Hohenstein
,
U.
Bozkaya
,
A. Y.
Sokolov
,
R.
Di Remigio
,
R. M.
Richard
,
J. F.
Gonthier
,
A. M.
James
,
H. R.
McAlexander
,
A.
Kumar
,
M.
Saitow
,
X.
Wang
,
B. P.
Pritchard
,
P.
Verma
,
H. F.
Schaefer
,
K.
Patkowski
,
R. A.
King
,
E. F.
Valeev
,
F. A.
Evangelista
,
J. M.
Turney
,
T. D.
Crawford
, and
C. D.
Sherrill
, “
Psi4 1.1: An open-source electronic structure program emphasizing automation, advanced libraries, and interoperability
,”
J. Chem. Theory Comput.
13
,
3185
3197
(
2017
).
37.
D. G. A.
Smith
,
L. A.
Burns
,
A. C.
Simmonett
,
R. M.
Parrish
,
M. C.
Schieber
,
R.
Galvelis
,
P.
Kraus
,
H.
Kruse
,
R.
Di Remigio
,
A.
Alenaizan
,
A. M.
James
,
S.
Lehtola
,
J. P.
Misiewicz
,
M.
Scheurer
,
R. A.
Shaw
,
J. B.
Schriber
,
Y.
Xie
,
Z. L.
Glick
,
D. A.
Sirianni
,
J. S.
O’Brien
,
J. M.
Waldrop
,
A.
Kumar
,
E. G.
Hohenstein
,
B. P.
Pritchard
,
B. R.
Brooks
,
H. F.
Schaefer
,
A. Y.
Sokolov
,
K.
Patkowski
,
A. E.
DePrince
,
U.
Bozkaya
,
R. A.
King
,
F. A.
Evangelista
,
J. M.
Turney
,
T. D.
Crawford
, and
C. D.
Sherrill
, “
PSI4 1.4: Open-source software for high-throughput quantum chemistry
,”
J. Chem. Phys.
152
,
184108
(
2020
).
38.
Q.
Sun
,
T. C.
Berkelbach
,
N. S.
Blunt
,
G. H.
Booth
,
S.
Guo
,
Z.
Li
,
J.
Liu
,
J. D.
McClain
,
E. R.
Sayfutyarova
,
S.
Sharma
,
S.
Wouters
, and
G. K.-L.
Chan
, “
PySCF: The Python-based simulations of chemistry framework
,”
Wiley Interdiscip. Rev.: Comput. Mol. Sci.
8
,
e1340
(
2018
).
39.
A.
Hjorth Larsen
,
J.
Jørgen Mortensen
,
J.
Blomqvist
,
I. E.
Castelli
,
R.
Christensen
,
M.
Dułak
,
J.
Friis
,
M. N.
Groves
,
B.
Hammer
,
C.
Hargus
,
E. D.
Hermes
,
P. C.
Jennings
,
P.
Bjerre Jensen
,
J.
Kermode
,
J. R.
Kitchin
,
E.
Leonhard Kolsbjerg
,
J.
Kubal
,
K.
Kaasbjerg
,
S.
Lysgaard
,
J.
Bergmann Maronsson
,
T.
Maxson
,
T.
Olsen
,
L.
Pastewka
,
A.
Peterson
,
C.
Rostgaard
,
J.
Schiøtz
,
O.
Schütt
,
M.
Strange
,
K. S.
Thygesen
,
T.
Vegge
,
L.
Vilhelmsen
,
M.
Walter
,
Z.
Zeng
, and
K. W.
Jacobsen
, “
The atomic simulation environment—A Python library for working with atoms
,”
J. Phys.: Condens. Matter
29
,
273002
(
2017
).
40.
See https://github.com/MolSSI-MDI/MDI_Library for MolSSI Driver Interface (MDI) Library; accessed 30 December 2022.
41.
C. R.
Jacob
,
S. M.
Beyhan
,
R. E.
Bulo
,
A. S. P.
Gomes
,
A. W.
Götz
,
K.
Kiewisch
,
J.
Sikkema
, and
L.
Visscher
, “
PyADF—A scripting framework for multiscale quantum chemistry
,”
J. Comput. Chem.
32
,
2328
2338
(
2011
).
42.
S. P.
Ong
,
W. D.
Richards
,
A.
Jain
,
G.
Hautier
,
M.
Kocher
,
S.
Cholia
,
D.
Gunter
,
V. L.
Chevrier
,
K. A.
Persson
, and
G.
Ceder
, “
Python materials genomics (pymatgen): A robust, open-source Python library for materials analysis
,”
Comput. Mater. Sci.
68
,
314
319
(
2013
).
43.
D. G. A.
Smith
,
D.
Altarawy
,
L. A.
Burns
,
M.
Welborn
,
L. N.
Naden
,
L.
Ward
,
S.
Ellis
,
B. P.
Pritchard
, and
T. D.
Crawford
, “
The MolSSI QCArchive project: An open-source platform to compute, organize, and share quantum chemistry data
,”
Wiley Interdiscip. Rev.: Comput. Mol. Sci.
11
,
e1491
(
2021
).
44.
V. M.
Ingman
,
A. J.
Schaefer
,
L. R.
Andreola
, and
S. E.
Wheeler
, “
QChASM: Quantum chemistry automation and structure manipulation
,”
Wiley Interdiscip. Rev.: Comput. Mol. Sci.
11
,
e1510
(
2021
).
45.
R. E.
Johnson
and
B.
Foote
, “
Designing reusable classes
,”
J. Object Oriented Programming
1
,
22
35
(
1988
).
46.
See https://github.com/leapmotion/autowiring for Autowiring: A C++ inversion of control framework; accessed 28 December 2022.
47.
See https://github.com/unixdev0/ioc for ioc: Inversion of control container C++11; accessed 28 December 2022.
48.
See https://github.com/mrts/ioc-cpp for ioc-cpp: Inversion of control/depen-dency injection container for C++03; accessed 28 December 2022.
49.
See https://code.google.com/archive/p/pococapsule for Pococapsule: An IoC and DSM framework for C/C++ applications; accessed 28 December 2022.
50.
See https://github.com/pulsar-chem for pulsar computational chemistry framework; accessed 6 February 2023.
51.
R. M.
Richard
,
C.
Bertoni
,
J. S.
Boschen
,
K.
Keipert
,
B.
Pritchard
,
E. F.
Valeev
,
R. J.
Harrison
,
W. A.
de Jong
, and
T. L.
Windus
, “
Developing a computational chemistry framework for the exascale era
,”
Comput. Sci. Eng.
21
,
48
58
(
2019
).
52.
W. T. L. P.
Lavrijsen
and
A.
Dutta
, “
High-performance Python-C++ bindings with PyPy and cling
,” in
Proceedings of the 6th Workshop on Python for High-Performance and Scientific Computing, PyHPC ’16
(
IEEE Press
,
2016
), pp.
27
35
.
53.
W.
Jakob
,
J.
Rhinelander
, and
D.
Moldovan
, pybind11—Seamless operability between C++11 and Python,
2017
, https://github.com/pybind/pybind11.
54.
N. Organization, NWChemEx Organization, “
ParallelZone: Parallel runtime for NWChemEx
(2020)
, https://github.com/NWChemEx-Project/ParallelZone.
55.
N. Organization, NWChemEx Organization, “
PluginPlay
(2023)
, https://github.com/NWChemEx-Project/ParallelZone.
56.
P.
Leach
,
M.
Mealling
, and
R.
Salz
, “
A universally unique identifier (UUID) URN namespace
,” RFC Report No. 4122 (2005), https://www.rfc-editor.org/info/rfc4122.
57.
See https://www.sphinx-doc.org/en/master/index.html for sphinx Python documentation generator; accessed 22 February 2023.
58.
J.
MacFarlane
, Pandoc: A universal document converter,
2006
, https://pandoc.org/index.html.
59.
See https://www.intel.com/content/www/us/en/develop/documentation/vtune-help/top.html for Intel VTune profiler user guide; accessed 27 February 2023.
60.
R. M.
Richard
, Ghostfragment,
2020
, https://github.com/rmrresearch/GhostFragment.
You do not currently have access to this content.