Making PLUMED fly: a tutorial on optimizing performance
Daniele Rapetti, Massimiliano Bonomi, Carlo Camilloni, Giovanni Bussi, Gareth A. Tribello
TL;DR
This work addresses the need for robust, reproducible performance assessment of PLUMED as it handles increasingly heavy calculations. It introduces the plumed benchmark tool and showcases vectorized, linked-list-based, and parallelization-enabled optimizations across distances, angles, torsions, symmetry functions, and Steinhardt parameters, with practical guidance on using MASK, D_MAX, and OpenMP/MPI tuning. The key contributions are a reliable benchmarking workflow, detailed performance benchmarks, and a set of optimization strategies that can be re-implemented by others, along with advocacy for integrating benchmarking into development workflows. The practical impact is a transparent, portable framework for evaluating and improving PLUMED performance across hardware and software environments, potentially aided by automated pipelines and modern numerical backends.
Abstract
PLUMED is an open-source software package that is widely used for analyzing and enhancing molecular dynamics simulations that works in conjunction with most available molecular dynamics softwares. While the computational cost of PLUMED calculations is typically negligible compared to the molecular dynamics code's force evaluation, the software is increasingly being employed for more computationally demanding tasks where performance optimization becomes critical. In this tutorial, we describe a recently implemented tool that can be used to reliably measure code performance. We then use this tool to generate detailed performance benchmarks that show how calculations of large-numbers of distances, angles or torsions can be optimized by using vector-based commands rather than individual scalar operations. We then present benchmarks that illustrate how to optimize calculations of atomic order parameters and secondary structure variables. Throughout the tutorial and in our implementations we endeavor to explain the algorithmic tricks that are being used to optimize the calculations so others can make use of these prescriptions both when they are using PLUMED and when they are writing their own codes.
