GPUKernelSizeOptimizerSvc Node1 GPUKernelSizeOptimizerSvc - m_dynpar_support - m_coopgroup_support - m_kernelFiles - m_outputSizes - m_outputFile + GPUKernelSizeOptimizerSvc() + register_kernels() + get_launch_configuration() + can_use_cooperative _groups() + can_use_dynamic_parallelism() + should_use_minimal _kernel_sizes() + initialize() + initialize_CUDA() + finalize() - get_GPU_usage() Node2 extends< AthService, IGPUKernelSizeOptimizerSvc > Node2->Node1 Node3 CaloGPUCUDAInitialization + handle() + ~CaloGPUCUDAInitialization() # initialize_non_CUDA() # initialize_CUDA() # initialize() Node3->Node1 Node4 IIncidentListener Node4->Node3 Node5 std::unordered_map < std::string, std:: vector< GPUKernelSizeOptimizer Svc::KernelRecord > > Node5->Node1 -m_kernel_map Node6 std::vector< GPUKernelSize OptimizerSvc::KernelRecord > Node6->Node5 +elements Node7 GPUKernelSizeOptimizerSvc ::KernelRecord + add_configuration() Node7->Node6 +elements Node8 CUDAKernelLaunchConfiguration + grid_x + grid_y + grid_z + block_x + block_y + block_z Node8->Node7 +configs Node9 std::string Node9->Node5 +keys Node10 std::basic_string< char > Node10->Node9