ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Calorimeter
CaloRecGPU
src
BasicGPUClusterInfoCalculator.cxx
Go to the documentation of this file.
1
//
2
// Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3
//
4
// Dear emacs, this is -*- c++ -*-
5
//
6
7
#include "
BasicGPUClusterInfoCalculator.h
"
8
#include "
BasicGPUClusterInfoCalculatorImpl.h
"
9
10
#include "boost/chrono/chrono.hpp"
11
#include "boost/chrono/thread_clock.hpp"
12
13
using namespace
CaloRecGPU
;
14
using namespace
BasicClusterInfoCalculator
;
15
16
BasicGPUClusterInfoCalculator::BasicGPUClusterInfoCalculator
(
const
std::string &
type
,
const
std::string & name,
const
IInterface * parent):
17
base_class(
type
, name, parent),
18
CaloGPUTimed
(this)
19
{
20
}
21
22
StatusCode
BasicGPUClusterInfoCalculator::initialize_non_CUDA
()
23
{
24
ATH_CHECK
(
m_kernelSizeOptimizer
.retrieve() );
25
return
StatusCode::SUCCESS;
26
}
27
28
StatusCode
BasicGPUClusterInfoCalculator::initialize_CUDA
()
29
{
30
register_kernels
( *(
m_kernelSizeOptimizer
.get()) );
31
return
StatusCode::SUCCESS;
32
}
33
34
StatusCode
BasicGPUClusterInfoCalculator::execute
(
const
EventContext & ctx,
const
ConstantDataHolder
& constant_data,
35
EventDataHolder
& event_data,
void
*
/*temporary_buffer*/
)
const
36
{
37
using
clock_type = boost::chrono::thread_clock;
38
auto
time_cast = [](
const
auto
& before,
const
auto
& after)
39
{
40
return
boost::chrono::duration_cast<boost::chrono::microseconds>(after - before).count();
41
};
42
43
const
auto
start = clock_type::now();
44
45
const
auto
before_seed_properties = clock_type::now();
46
47
updateSeedCellProperties
(event_data, constant_data, *(
m_kernelSizeOptimizer
.get()),
m_measureTimes
);
48
49
const
auto
before_calculating = clock_type::now();
50
51
calculateClusterProperties
(event_data, constant_data, *(
m_kernelSizeOptimizer
.get()),
m_measureTimes
,
m_cutClustersInAbsE
,
m_clusterETThreshold
);
52
53
const
auto
end = clock_type::now();
54
55
56
if
(
m_measureTimes
)
57
{
58
record_times
(ctx.evt(),
59
time_cast(start, before_seed_properties),
60
time_cast(before_seed_properties, before_calculating),
61
time_cast(before_calculating, end)
62
);
63
}
64
65
66
return
StatusCode::SUCCESS;
67
68
}
69
70
71
StatusCode
BasicGPUClusterInfoCalculator::finalize
()
72
{
73
if
(
m_measureTimes
)
74
{
75
print_times
(
"Preprocessing Seed_Cell_Properties_Updating Cluster_Properties_Calculation"
, 3);
76
}
77
return
StatusCode::SUCCESS;
78
}
79
ATH_CHECK
#define ATH_CHECK
Evaluate an expression and check for errors.
Definition
AthCheckMacros.h:40
BasicGPUClusterInfoCalculatorImpl.h
BasicGPUClusterInfoCalculator.h
BasicGPUClusterInfoCalculator::m_kernelSizeOptimizer
ServiceHandle< IGPUKernelSizeOptimizerSvc > m_kernelSizeOptimizer
Handle to the CUDA kernel block and grid size optimization service.
Definition
BasicGPUClusterInfoCalculator.h:77
BasicGPUClusterInfoCalculator::m_cutClustersInAbsE
Gaudi::Property< bool > m_cutClustersInAbsE
if set to true cluster cuts are on , if false on .
Definition
BasicGPUClusterInfoCalculator.h:65
BasicGPUClusterInfoCalculator::execute
virtual StatusCode execute(const EventContext &ctx, const CaloRecGPU::ConstantDataHolder &constant_data, CaloRecGPU::EventDataHolder &event_data, void *temporary_buffer) const override
Definition
BasicGPUClusterInfoCalculator.cxx:34
BasicGPUClusterInfoCalculator::BasicGPUClusterInfoCalculator
BasicGPUClusterInfoCalculator(const std::string &type, const std::string &name, const IInterface *parent)
Definition
BasicGPUClusterInfoCalculator.cxx:16
BasicGPUClusterInfoCalculator::initialize_non_CUDA
virtual StatusCode initialize_non_CUDA() override
Initialization that does not invoke CUDA functions.
Definition
BasicGPUClusterInfoCalculator.cxx:22
BasicGPUClusterInfoCalculator::initialize_CUDA
virtual StatusCode initialize_CUDA() override
Initialization that invokes CUDA functions.
Definition
BasicGPUClusterInfoCalculator.cxx:28
BasicGPUClusterInfoCalculator::m_clusterETThreshold
Gaudi::Property< float > m_clusterETThreshold
cut on the clusters.
Definition
BasicGPUClusterInfoCalculator.h:74
BasicGPUClusterInfoCalculator::finalize
virtual StatusCode finalize() override
Definition
BasicGPUClusterInfoCalculator.cxx:71
CaloGPUTimed::m_measureTimes
Gaudi::Property< bool > m_measureTimes
If true, times are recorded to the file given by m_timeFileName.
Definition
CaloGPUTimed.h:46
CaloGPUTimed::CaloGPUTimed
CaloGPUTimed(T *ptr)
Definition
CaloGPUTimed.h:55
CaloGPUTimed::print_times
void print_times(const std::string &header, const size_t time_size) const
Definition
CaloGPUTimed.h:143
CaloGPUTimed::record_times
void record_times(const size_t event_num, const std::vector< size_t > ×) const
Definition
CaloGPUTimed.h:86
CaloRecGPU::ConstantDataHolder
Holds CPU and GPU versions of the geometry and cell noise information, which are assumed to be consta...
Definition
DataHolders.h:27
CaloRecGPU::EventDataHolder
Holds the mutable per-event information (clusters and cells) and provides utilities to convert betwee...
Definition
DataHolders.h:73
BasicClusterInfoCalculator
Definition
BasicGPUClusterInfoCalculatorImpl.h:16
BasicClusterInfoCalculator::calculateClusterProperties
void calculateClusterProperties(CaloRecGPU::EventDataHolder &holder, const CaloRecGPU::ConstantDataHolder &instance_data, const IGPUKernelSizeOptimizer &optimizer, const bool synchronize=false, const bool cut_in_absolute_ET=true, const float absolute_ET_threshold=-1, CaloRecGPU::CUDA_Helpers::CUDAStreamPtrHolder stream_to_use={})
BasicClusterInfoCalculator::updateSeedCellProperties
void updateSeedCellProperties(CaloRecGPU::EventDataHolder &holder, const CaloRecGPU::ConstantDataHolder &instance_data, const IGPUKernelSizeOptimizer &optimizer, const bool synchronize=false, CaloRecGPU::CUDA_Helpers::CUDAStreamPtrHolder stream_to_use={})
BasicClusterInfoCalculator::register_kernels
void register_kernels(IGPUKernelSizeOptimizer &optimizer)
CaloRecGPU
Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration.
Definition
BaseDefinitions.h:11
type
Generated on
for ATLAS Offline Software by
1.17.0