Devastator: A Scalable Parallel Discrete Event Simulation Framework for Modern C++

July 26, 2024
Authors: John Bachan, Lawrence Berkeley National Laboratory, Jianlan Ye, Arizona State University, Xuan Jiang, UC Berkeley, Tan Nguyen, Lawrence Berkeley National Laboratory, Mahesh Natarajan, Lawrence Berkeley National Laboratory, Maximilian Bremer, Lawrence Berkeley National Laboratory, Cy Chan, Lawrence Berkeley National Laboratory
Source: Proceedings of the 38th ACM SIGSIM Conference on Principles of Advanced Discrete Simulation
Description: Parallel discrete event simulation is a fundamental simulation technology that is essential to the parallelization of event-based models including hardware and transportation systems. Parallelization is often difficult due to dynamic data-dependencies and limited computational work for hiding runtime overheads. We present Devastator, a scalable parallel discrete event simulation framework for modern C++. Devastator provides a productive API that leverages C++’s type system to eliminate boilerplate code. Devastator has been designed to specifically optimize performance on distributed many-core architectures with deepening memory hierarchies. Devastator relies on the GASNet-Ex communication runtime as well as lock-free message queues to achieve highly competitive performance. We perform strong and weak scaling studies on NERSC’s Perlmutter up to 32,698 cores and demonstrate an up to 5x speed-up over the ROSS simulator for workloads with substantial locality.