Title: CMaize: Simplifying inter-package modularity from the build up

Journal Article · · Journal of Chemical Physics
DOI: https://doi.org/10.1063/5.0196384 · OSTI ID:2323929

There is a growing desire for inter-package modularity within the chemistry software community to reuse encapsulated code units across a variety of software packages. Most comprehensive efforts at achieving inter-package modularity will quickly run afoul of a very practical problem, being able to cohesively build the modules. Writing and maintaining build systems has long been an issue for many scientific software packages that rely on compiled languages such as C/C++. The push for inter-package modularity compounds this issue by additionally requiring binary artifacts from disparate developers to interoperate at a binary level. Thankfully, the de facto build tool for C/C++, CMake, is more than capable of supporting the myriad of edge cases that complicate writing robust build systems. Unfortunately, writing and maintaining a robust CMake build system can be a laborious endeavor because CMake provides few abstractions to aid the developer. Further, the need to significantly simplify the process of writing robust CMake-based build systems, especially in inter-package builds, motivated us to write CMaize. In addition to describing the architecture and design of CMaize, the article also demonstrates how CMaize is used in production-level software.

Research Organization:
Ames Laboratory (AMES), Ames, IA (United States)
Sponsoring Organization:
USDOE National Nuclear Security Administration (NNSA); USDOE Office of Science (SC)
Grant/Contract Number:
AC02-07CH11358
OSTI ID:
2323929
Report Number(s):
IS-J-11,288
Journal Information:
Journal of Chemical Physics, Journal Name: Journal of Chemical Physics Journal Issue: 9 Vol. 160; ISSN 0021-9606
Publisher:
American Institute of Physics (AIP)Copyright Statement
Country of Publication:
United States
Language:
English

References (18)

PCMSolver: An open-source library for solvation modeling: DI REMIGIO et al.
  • Di Remigio, Roberto; Steindal, Arnfinn Hykkerud; Mozgawa, Krzysztof
  • International Journal of Quantum Chemistry, Vol. 119, Issue 1 https://doi.org/10.1002/qua.25685
journal October 2018
Sustainable packaging of quantum chemistry software with the Nix package manager journal January 2022
Free and open source software for computational chemistry education journal March 2022
Achieving performance portability in Gaussian basis set density functional theory on accelerator based architectures in NWChemEx journal December 2021
Recent developments in libxc — A comprehensive library of functionals for density functional theory journal January 2018
A Perspective on Sustainable Computational Chemistry Software Development and Integration journal September 2023
What Is the Price of Open-Source Software? journal July 2015
Perspective: Computational chemistry software and its advancement as illustrated through three grand challenge cases for molecular science journal November 2018
The CECAM electronic structure library and the modular software development paradigm journal July 2020
Electronic structure software journal August 2020
PluginPlay: Enabling exascale scientific software one module at a time journal May 2023
Distributed memory, GPU accelerated Fock construction for hybrid, Gaussian basis density functional theory journal June 2023
A call to arms: Making the case for more reusable libraries journal November 2023
An efficient implementation of two-component relativistic density functional theory with torque-free auxiliary variables journal July 2018
A Component Architecture for High-Performance Scientific Computing journal May 2006
CMinx: A CMake Documentation Generator journal September 2022
CMakePPLang: An object-oriented extension to CMake journal September 2023
On the Efficient Evaluation of the Exchange Correlation Potential on Graphics Processing Unit Clusters journal December 2020