|
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.