Stateless Geant4 prototype
R&D task number: G4RD2
Development of Geant4 stateless-kernel prototype
This task consists of the development of a Geant4 prototype where the kernel and the physics processes would be ‘stateless’ allowing to study fine-grained parallelism. In the current Geant4 implementation when a particle is being tracked, the tracking and the stepping managers hold the pointer to it until the particle is stopped. Moreover, the stepping manager as well as some physics processes hold the ‘state’ of the step (pre- and post-step information, physics processes, etc). This situation prevents from having a fine-grained control over the simulation flow with the possibility of pausing and grouping particles together for a potential vectorized processing. Our goal here, therefore, is to be able to pause/resume any track at any moment (for instance after selecting the physics process, but before generating the final state) and to be able to process containers of tracks which are about to undergo the same transportation stage. In this approach, the Geant4 event which consisted of a container of tracks which were processed one-by-one from the beginning to the end, would become a set of containers of tracks moving between different stages of transportation.
The different steps of the prototyping consist of:
- removal of track and step members from the managers and change of signature of the managers methods to include the track as argument
- move of the different ‘stepping state’ members from the managers to the track object
- split of the stepping into stages, each of them processing the contents of the container of particles in the given stage
- benchmarking of grouped (vectorized) processing of different stepping stages
Lead and main developers: Andrei Gheata, Witek Pokorski