Skip to content

CaloRecGPU: Multiprocessing and Cleanup

To ensure we can run with multi-processing, we need to ensure all CUDA-related calls only take place after the fork, which means that we must separate the initialization into non-CUDA and CUDA parts. We ensure each is called at the correct point in a new CaloGPUCUDAInitialization.h base class, though it is a temporary and rather inelegant design to be replaced once/if more comprehensive support for accelerators exists natively in the Athena classes.

Since I was changing things in the classes and initialization, I took the opportunity to also implement the changes that were discussed in !69434 (merged) in regards to the non-defaulted destructors and RECOVERABLE status codes.

Merge request reports