The Jiangmen Underground Neutrino Observatory (JUNO) is a neutrino experiment to determine neutrino mass hierarchy. It has a central detector used for neutrino detection, which consists of a spherical acrylic vessel containing 20 kt liquid scintillator (LS) and about 18,000 20-inch photomultiplier tubes (PMT) to collect light from LS.
As one of the important parts in JUNO offline software, the single-threaded simulation framework is developed based on SNiPER. It is in charge of physics generator, detector simulation, event mixing and digitization. However Geant4 based detector simulation of such a large detector is time-consuming and challenging. It is necessary to take full advantages of parallel computing to speedup simulation. Starting from version 10.0, Geant4 supports event-level parallelism. Even though based on pthread, it could be extended with other libraries such as Intel TBB and MPI. It is possible to parallelize JUNO simulation framework via integrating Geant4 and SNiPER.
In this proceeding, we present our progress in developing parallelized simulation software. The SNiPER framework can run in sequential mode, Intel TBB mode or other modes. In SNiPER, the SNiPER task component is in charge of event loop, which is like a simplified application manager. Two types of tasks are introduced in the simulation framework, one is global task and another is worker task. The global task will run only once to initialize detector geometry and physics processes before any other tasks spawned. Later it is accessed by other tasks passively. The worker tasks will be spawned after global task is done. In each worker task, a Geant4 run manager is invoked to do real simulation. Therefore the simulation framework and underlying TBB are decoupled. Finally, the software performance of parallelized JUNO simulation software is also presented.