| The Gaudi Framework v30r0 (c919700c)

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

CPUCruncher.h
Go to the documentation of this file.
1
2 #include "GaudiAlg/GaudiAlgorithm.h"
3 #include "GaudiKernel/IRndmGenSvc.h"
4 #include "GaudiKernel/RegistryEntry.h"
5 #include "GaudiKernel/RndmGenerators.h"
6
7 #include <tbb/concurrent_hash_map.h>
8
9 //------------------------------------------------------------------------------
10
18 class CPUCruncher : public GaudiAlgorithm
19 {
20
21 public:
22 typedef tbb::concurrent_hash_map<std::string, unsigned int> CHM;
23
24 bool isClonable() const override { return true; }
25
27 StatusCode execute() override;
29 StatusCode initialize() override;
31 StatusCode finalize() override;
32
33 double get_runtime() const { return m_avg_runtime; }
34
35 CPUCruncher( const std::string& name, // the algorithm instance name
36 ISvcLocator* pSvc ); // the Service Locator
37
39 virtual ~CPUCruncher(); // virtual & protected desctrustor
40
41 private:
43 CPUCruncher(); // no default constructor
45 CPUCruncher( const CPUCruncher& ); // no copy constructor
47 CPUCruncher& operator=( const CPUCruncher& ); // no assignement
49 void findPrimes( const unsigned long int );
50
52 void calibrate();
53 long unsigned int getNCaliIters( double );
54
56 void declareRuntimeRequestedOutputs();
57 bool m_declAugmented{false};
58 Gaudi::Property<bool> m_loader{this, "Loader", false, "Declare the algorithm to be a data loader"};
59
60 Gaudi::Property<std::vector<std::string>> m_inpKeys{this, "inpKeys", {}, ""};
61 Gaudi::Property<std::vector<std::string>> m_outKeys{this, "outKeys", {}, ""};
62
63 Gaudi::Property<double> m_avg_runtime{this, "avgRuntime", 1., "Average runtime of the module."};
64 Gaudi::Property<double> m_var_runtime{this, "varRuntime", 0.01, "Variance of the runtime of the module."};
65 Gaudi::Property<bool> m_local_rndm_gen{this, "localRndm", true, "Decide if the local random generator is to be used"};
66 Gaudi::Property<bool> m_shortCalib{this, "shortCalib", false, "Enable coarse grained calibration"};
67 Gaudi::Property<unsigned int> m_rwRepetitions{this, "RwRepetitions", 1, "Increase access to the WB"};
68 Gaudi::Property<float> m_sleepFraction{
69 this, "SleepFraction", 0.0f,
70 "Fraction of time, between 0 and 1, when an algorithm is actually sleeping instead of crunching"};
71 Gaudi::Property<bool> m_invertCFD{this, "InvertDecision", false, "Invert control flow decision."};
72
73 // To calib only once
74 static std::vector<unsigned int> m_niters_vect;
75 static std::vector<double> m_times_vect;
76
77 // For the concurrency
78 const uint MAX_INPUTS = 40;
79 const uint MAX_OUTPUTS = 10;
80
81 std::vector<DataObjectHandle<DataObject>*> m_inputHandles;
82 std::vector<DataObjectHandle<DataObject>*> m_outputHandles;
83
84 static CHM m_name_ncopies_map;
85 };
CPUCruncher::execute
StatusCode execute() override
the execution of the algorithm
Definition: CPUCruncher.cpp:217
CPUCruncher::m_sleepFraction
Gaudi::Property< float > m_sleepFraction
Definition: CPUCruncher.h:68
ISvcLocator
The ISvcLocator is the interface implemented by the Service Factory in the Application Manager to loc...
Definition: ISvcLocator.h:25
Algorithm::name
const std::string & name() const override
The identifying name of the algorithm object.
Definition: Algorithm.cpp:737
CPUCruncher
A class that implements a search for prime numbers.
Definition: CPUCruncher.h:18
Gaudi::Property
Implementation of property with value of concrete type.
Definition: Property.h:319
CPUCruncher::m_loader
Gaudi::Property< bool > m_loader
Definition: CPUCruncher.h:58
CPUCruncher::MAX_OUTPUTS
const uint MAX_OUTPUTS
Definition: CPUCruncher.h:79
CPUCruncher::~CPUCruncher
virtual ~CPUCruncher()
virtual & protected desctrustor
Definition: CPUCruncher.cpp:40
GaudiAlgorithm.h
Header file for class GaudiAlgorithm.
CPUCruncher::findPrimes
void findPrimes(const unsigned long int)
The CPU intensive function.
Definition: CPUCruncher.cpp:149
CPUCruncher::m_rwRepetitions
Gaudi::Property< unsigned int > m_rwRepetitions
Definition: CPUCruncher.h:67
CPUCruncher::get_runtime
double get_runtime() const
Definition: CPUCruncher.h:33
CPUCruncher::m_outputHandles
std::vector< DataObjectHandle< DataObject > * > m_outputHandles
Definition: CPUCruncher.h:82
CPUCruncher::operator=
CPUCruncher & operator=(const CPUCruncher &)
the assignement operator is disabled
CPUCruncher::calibrate
void calibrate()
Calibrate.
Definition: CPUCruncher.cpp:86
CPUCruncher::getNCaliIters
long unsigned int getNCaliIters(double)
Definition: CPUCruncher.cpp:115
std::string
STL class.
CPUCruncher::CHM
tbb::concurrent_hash_map< std::string, unsigned int > CHM
Definition: CPUCruncher.h:22
CPUCruncher::m_niters_vect
static std::vector< unsigned int > m_niters_vect
Definition: CPUCruncher.h:74
CPUCruncher::m_name_ncopies_map
static CHM m_name_ncopies_map
Definition: CPUCruncher.h:84
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
CPUCruncher::m_invertCFD
Gaudi::Property< bool > m_invertCFD
Definition: CPUCruncher.h:71
GaudiAlgorithm
The useful base class for data processing algorithms.
Definition: GaudiAlgorithm.h:94
CPUCruncher::m_inputHandles
std::vector< DataObjectHandle< DataObject > * > m_inputHandles
Definition: CPUCruncher.h:81
RndmGenerators.h
CPUCruncher::m_times_vect
static std::vector< double > m_times_vect
Definition: CPUCruncher.h:75
RegistryEntry.h
CPUCruncher::isClonable
bool isClonable() const override
Definition: CPUCruncher.h:24
CPUCruncher::m_shortCalib
Gaudi::Property< bool > m_shortCalib
Definition: CPUCruncher.h:66
CPUCruncher::declareRuntimeRequestedOutputs
void declareRuntimeRequestedOutputs()
Pick up late-attributed data outputs.
Definition: CPUCruncher.cpp:200
std::vector< unsigned int >
IRndmGenSvc.h
CPUCruncher::m_avg_runtime
Gaudi::Property< double > m_avg_runtime
Definition: CPUCruncher.h:63
CPUCruncher::initialize
StatusCode initialize() override
Its initialization.
Definition: CPUCruncher.cpp:47
CPUCruncher::CPUCruncher
CPUCruncher()
the default constructor is disabled
CPUCruncher::m_outKeys
Gaudi::Property< std::vector< std::string > > m_outKeys
Definition: CPUCruncher.h:61
CPUCruncher::m_inpKeys
Gaudi::Property< std::vector< std::string > > m_inpKeys
Definition: CPUCruncher.h:60
CPUCruncher::MAX_INPUTS
const uint MAX_INPUTS
Definition: CPUCruncher.h:78
CPUCruncher::finalize
StatusCode finalize() override
the finalization of the algorithm
Definition: CPUCruncher.cpp:346
CPUCruncher::m_local_rndm_gen
Gaudi::Property< bool > m_local_rndm_gen
Definition: CPUCruncher.h:65
CPUCruncher::m_var_runtime
Gaudi::Property< double > m_var_runtime
Definition: CPUCruncher.h:64
CPUCruncher::m_declAugmented
bool m_declAugmented
Definition: CPUCruncher.h:57