Contributor
tmplt

Improve multi-threading support for CERN’s Allpix-Squared project using dependency graphs


Mentors
Simon Spannagel, Daniel Hynds
Organization
CERN-HSF

Allpix-Squared is a free and open-source simulation framework for silicon tracker and vertex detectors written in modern C++. Its goal is to facilitate in-depth studies of silicon-based particle and radiation detectors widely used in high-energy physics. During simulation, Allpix-Squared run events that contains a series of modules that operate on input data — usually in the form of a previous module’s output data. These events aim to mirror the behavior of a particle interacting with a specific detector hardware. Some modules are independent of others, so they can be run in parallel; this is the current state of the multithreading used in the framework, but it does not make good use of available CPU cores. The aim of this proposal is thus to run full events in parallel instead, greatly enhancing CPU core utilization. This however requires some internal restructure and presents new problems not shared with the current approach, such as the issue of event execution order. I aim to solve this issue with dependency graphs. When done, the new multithreading approach should allow better execution time, independent on core count and simulation parameters.