  | 
  
    ATLAS Offline Software
    
   | 
 
 
 
 
Go to the documentation of this file.
    5 #ifndef ATHCUDASERVICES_KERNELRUNNERSVC_H 
    6 #define ATHCUDASERVICES_KERNELRUNNERSVC_H 
   16 #include "GaudiKernel/ServiceHandle.h" 
   17 #include "Gaudi/Property.h" 
   37       using extends::extends;
 
   69       execute( std::unique_ptr< IKernelTask > task ) 
override;
 
   81       Gaudi::Property< int > 
m_nKernels{ 
this, 
"NParallelKernels", 2,
 
   82          "The number of CUDA kernels to execute in parallel" };
 
   86          "AthCUDA::StreamPoolSvc",
 
   87          "The AthCUDA::StreamPoolSvc instance to use" };
 
  100       std::unique_ptr< KernelRunnerSvcImpl > 
m_impl;
 
  106 #endif // ATHCUDASERVICES_KERNELRUNNERSVC_H 
  
std::atomic_uint m_gpuTasks
The number of tasks sent to the GPU during the job.
 
virtual StatusCode initialize() override
Initialise the service.
 
Service used for executing AthCUDA::IKernelTask tasks.
 
std::unique_ptr< KernelRunnerSvcImpl > m_impl
Implementation helper object.
 
::StatusCode StatusCode
StatusCode definition for legacy code.
 
Gaudi::Property< int > m_nKernels
The number of streams to use.
 
ServiceHandle< IStreamPoolSvc > m_streamPoolSvc
Service managing CUDA the streams.
 
std::atomic_int m_kernelsInFlight
The current number of kernels being executed.
 
std::atomic_uint m_totalTasks
The number of tasks executed during the job in total.
 
virtual StatusCode finalize() override
Finalise the service.
 
virtual StatusCode execute(std::unique_ptr< IKernelTask > task) override
Execute a user specified kernel task.