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.