| The Gaudi Framework v29r0 (ff2e7097)

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

- Class List
- Class Index
- Class Hierarchy
- Class Members

Classes | Public Member Functions | Private Member Functions | Private Attributes | List of all members
IntelProfilerAuditor Class Reference
Inheritance diagram for IntelProfilerAuditor:
[legend]
Collaboration diagram for IntelProfilerAuditor:
[legend]

## Classes
struct | stack_entity

## Public Member Functions
StatusCode | initialize () override
void | handle (const Incident &incident) override
void | before (StandardEventType type, INamedInterface *i) override
void | after (StandardEventType type, INamedInterface *i, const StatusCode &sc) override
Public Member Functions inherited from extends< Auditor, IIncidentListener >
void * | i_cast (const InterfaceID &tid) const override
| Implementation of IInterface::i_cast. More...
StatusCode | queryInterface (const InterfaceID &ti, void **pp) override
| Implementation of IInterface::queryInterface. More...
std::vector< std::string > | getInterfaceNames () const override
| Implementation of IInterface::getInterfaceNames. More...
| ~extends () override=default
| Virtual destructor. More...
Public Member Functions inherited from Auditor
| Auditor (const std::string &name, ISvcLocator *svcloc)
| Constructor. More...
| Auditor (const Auditor &a)=delete
Auditor & | operator= (const Auditor &rhs)=delete
StatusCode | sysInitialize () override
| Initialization method invoked by the framework. More...
StatusCode | sysFinalize () override
| Finalization method invoked by the framework. More...
void | before (StandardEventType, INamedInterface *) override
| The following methods are meant to be implemented by the child class... More...
void | before (StandardEventType, const std::string &) override
void | before (CustomEventTypeRef, INamedInterface *) override
void | before (CustomEventTypeRef, const std::string &) override
void | after (StandardEventType, INamedInterface *, const StatusCode &) override
void | after (StandardEventType, const std::string &, const StatusCode &) override
void | after (CustomEventTypeRef, INamedInterface *, const StatusCode &) override
void | after (CustomEventTypeRef, const std::string &, const StatusCode &) override
void | beforeInitialize (INamedInterface *) override
void | afterInitialize (INamedInterface *) override
void | beforeReinitialize (INamedInterface *) override
void | afterReinitialize (INamedInterface *) override
void | beforeExecute (INamedInterface *) override
void | afterExecute (INamedInterface *, const StatusCode &) override
void | beforeFinalize (INamedInterface *) override
void | afterFinalize (INamedInterface *) override
void | beforeBeginRun (INamedInterface *) override
void | afterBeginRun (INamedInterface *) override
void | beforeEndRun (INamedInterface *) override
void | afterEndRun (INamedInterface *) override
virtual StatusCode | finalize ()
const std::string & | name () const override
bool | isEnabled () const override
SmartIF< ISvcLocator > & | serviceLocator () const override
| The standard service locator. More...
template<class T >
StatusCode | service (const std::string &name, T *&svc, bool createIf=false) const
| Access a service by name, creating it if it doesn't already exist. More...
template<class T = IService>
SmartIF< T > | service (const std::string &name, bool createIf=false) const
StatusCode | setProperties ()
| Set the auditor's properties. More...
Public Member Functions inherited from PropertyHolder< CommonMessaging< implements< IAuditor, IProperty > > >
| PropertyHolder ()=default
| ~PropertyHolder () override=default
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Details::PropertyBase &prop)
| Declare a property. More...
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, TYPE &value, const std::string &doc="none")
| Helper to wrap a regular data member and use it as a regular property. More...
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, TYPE &value, const std::string &doc="none") const
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, Gaudi::Property< TYPE, VERIFIER, HANDLERS > &prop, const std::string &doc="none")
| Declare a PropertyBase instance setting name and documentation. More...
Gaudi::Details::PropertyBase * | declareRemoteProperty (const std::string &name, IProperty *rsvc, const std::string &rname="")
| Declare a remote property. More...
StatusCode | setProperty (const Gaudi::Details::PropertyBase &p) override
| set the property form another property More...
StatusCode | setProperty (const std::string &s) override
| set the property from the formatted string More...
StatusCode | setProperty (const std::string &n, const std::string &v) override
| set the property from name and the value More...
StatusCode | setProperty (const std::string &name, const TYPE &value)
| set the property form the value More...
StatusCode | getProperty (Gaudi::Details::PropertyBase *p) const override
| get the property More...
const Gaudi::Details::PropertyBase & | getProperty (const std::string &name) const override
| get the property by name More...
StatusCode | getProperty (const std::string &n, std::string &v) const override
| convert the property to the string More...
const std::vector< Gaudi::Details::PropertyBase * > & | getProperties () const override
| get all properties More...
bool | hasProperty (const std::string &name) const override
| Return true if we have a property with the given name. More...
| PropertyHolder (const PropertyHolder &)=delete
PropertyHolder & | operator= (const PropertyHolder &)=delete
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, GaudiHandleBase &ref, const std::string &doc="none")
| Specializations for various GaudiHandles. More...
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, GaudiHandleArrayBase &ref, const std::string &doc="none")
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, DataObjectHandleBase &ref, const std::string &doc="none")
Public Member Functions inherited from CommonMessagingBase
virtual | ~CommonMessagingBase ()=default
| Virtual destructor. More...
SmartIF< IMessageSvc > & | msgSvc () const
| The standard message service. More...
MsgStream & | msgStream () const
| Return an uninitialized MsgStream. More...
MsgStream & | msgStream (const MSG::Level level) const
| Predefined configurable message stream for the efficient printouts. More...
MsgStream & | always () const
| shortcut for the method msgStream(MSG::ALWAYS) More...
MsgStream & | fatal () const
| shortcut for the method msgStream(MSG::FATAL) More...
MsgStream & | err () const
| shortcut for the method msgStream(MSG::ERROR) More...
MsgStream & | error () const
| shortcut for the method msgStream(MSG::ERROR) More...
MsgStream & | warning () const
| shortcut for the method msgStream(MSG::WARNING) More...
MsgStream & | info () const
| shortcut for the method msgStream(MSG::INFO) More...
MsgStream & | debug () const
| shortcut for the method msgStream(MSG::DEBUG) More...
MsgStream & | verbose () const
| shortcut for the method msgStream(MSG::VERBOSE) More...
MsgStream & | msg () const
| shortcut for the method msgStream(MSG::INFO) More...
MSG::Level | msgLevel () const
| get the output level from the embedded MsgStream More...
MSG::Level | outputLevel () const __attribute__((deprecated))
| Backward compatibility function for getting the output level. More...
bool | msgLevel (MSG::Level lvl) const
| get the output level from the embedded MsgStream More...
Public Member Functions inherited from extend_interfaces< Interfaces... >
| ~extend_interfaces () override=default
| Virtual destructor. More...

## Private Member Functions
void | start_profiling_component (const std::string &name)
void | skip_profiling_component (const std::string &name)
void | start ()
void | pause ()
void | resume ()
void | stop ()
bool | hasIncludes () const
bool | isIncluded (const std::string &name) const
bool | isExcluded (const std::string &name) const
bool | isRunning () const
int | stackLevel () const
std::string | stackIndent (bool newLevel=false) const
std::string | taskTypeName (const std::string &component_name) const

## Private Attributes
Gaudi::Property< std::vector< std::string > > | m_included {this, "IncludeAlgorithms", {}, "Names of included algorithms."}
Gaudi::Property< std::vector< std::string > > | m_excluded {this, "ExcludeAlgorithms", {}, "Names of excluded algorithms."}
Gaudi::Property< int > | m_nStartFromEvent
Gaudi::Property< int > | m_nStopAtEvent
Gaudi::Property< std::vector< std::string > > | m_algs_for_tasktypes
Gaudi::Property< std::string > | m_alg_delim
Gaudi::Property< bool > | m_enable_frames
Gaudi::Property< int > | m_frames_rate
int | m_nEvents = 0
__itt_domain * | domain = nullptr
bool | m_isStarted = false
std::vector< stack_entity > | m_stack
TaskTypes | m_tasktypes

## Additional Inherited Members
Public Types inherited from extends< Auditor, IIncidentListener >
using | base_class = extends
| Typedef to this class. More...
using | extend_interfaces_base = extend_interfaces< Interfaces... >
| Typedef to the base of this class. More...
Public Types inherited from Auditor
typedef Gaudi::PluginService::Factory< IAuditor *, const std::string &, ISvcLocator * > | Factory
Public Types inherited from PropertyHolder< CommonMessaging< implements< IAuditor, IProperty > > >
using | PropertyHolderImpl = PropertyHolder< CommonMessaging< implements< IAuditor, IProperty > > >
| Typedef used to refer to this class from derived classes, as in. More...
Public Types inherited from CommonMessaging< implements< IAuditor, IProperty > >
using | base_class = CommonMessaging
Public Types inherited from extend_interfaces< Interfaces... >
using | ext_iids = typename Gaudi::interface_list_cat< typename Interfaces::ext_iids... >::type
| take union of the ext_iids of all Interfaces... More...
Protected Member Functions inherited from PropertyHolder< CommonMessaging< implements< IAuditor, IProperty > > >
Gaudi::Details::PropertyBase * | property (const std::string &name) const
Protected Member Functions inherited from CommonMessaging< implements< IAuditor, IProperty > >
void | updateMsgStreamOutputLevel (int level)
| Update the output level of the cached MsgStream. More...

## Detailed Description

Definition at line 31 of file IntelProfilerAuditor.cpp.

## Member Function Documentation

void IntelProfilerAuditor::after | ( | StandardEventType | type,
|  | INamedInterface * | i,
|  | const StatusCode & | sc
| ) |  |
| override

Definition at line 344 of file IntelProfilerAuditor.cpp.

345 {
346 // Skip unnecessary event types
347 if ( !( ( type == IAuditor::Execute ) && m_isStarted ) ) return;
348
349 if ( ( m_nEvents + 1 ) % m_frames_rate == 0 ) {
350 __itt_frame_end_v3( domain, NULL );
351 }
352
353 // Name of the current component
354 const std::string& name = i->name();
355 stack_entity state = m_stack.back();
356 // Remove component from stack.
357 m_stack.pop_back();
358
359 if ( state.event != 0 ) {
360 debug() << stackIndent( true ) << "End event for " << name << endmsg;
361 __itt_event_end( state.event );
362
363 if ( state.parent_event != 0 ) {
364 debug() << stackIndent() << "Resume event for " << state.parent_event << endmsg;
365 __itt_event_start( state.parent_event );
366 }
367 }
368
369 if ( m_stack.empty() ) {
370 // Pause if there are no parent components (top algorithm).
371 pause();
372 } else if ( state.status ) {
373 // If the profiling is running and we have parent component that is
374 // paused then pause the profiling.
375 if ( !m_stack.back().status ) {
376 pause();
377 }
378 } else {
379 // If the profiling was stopped, but the parent component should be profiled
380 // then resume profiling.
381 if ( m_stack.back().status ) {
382 resume();
383 }
384 }
385 }
compareRootHistos.state
state
Definition: compareRootHistos.py:422
IntelProfilerAuditor::resume
void resume()
Definition: IntelProfilerAuditor.cpp:173
IntelProfilerAuditor::domain
__itt_domain * domain
Definition: IntelProfilerAuditor.cpp:95
IntelProfilerAuditor::m_frames_rate
Gaudi::Property< int > m_frames_rate
Definition: IntelProfilerAuditor.cpp:82
std::string
STL class.
IntelProfilerAuditor::m_nEvents
int m_nEvents
Definition: IntelProfilerAuditor.cpp:93
gaudirun.type
type
Definition: gaudirun.py:133
IntelProfilerAuditor::pause
void pause()
Definition: IntelProfilerAuditor.cpp:180
IntelProfilerAuditor::m_stack
std::vector< stack_entity > m_stack
Definition: IntelProfilerAuditor.cpp:99
IntelProfilerAuditor::stackIndent
std::string stackIndent(bool newLevel=false) const
Definition: IntelProfilerAuditor.cpp:217
CommonMessagingBase::debug
MsgStream & debug() const
shortcut for the method msgStream(MSG::DEBUG)
Definition: CommonMessaging.h:120
IAuditor::Execute
Definition: IAuditor.h:25
Auditor::name
const std::string & name() const override
Definition: Auditor.cpp:202
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209
INamedInterface::name
virtual const std::string & name() const =0
Retrieve the name of the instance.
IntelProfilerAuditor::m_isStarted
bool m_isStarted
Definition: IntelProfilerAuditor.cpp:97

void IntelProfilerAuditor::before | ( | StandardEventType | type,
|  | INamedInterface * | i
| ) |  |
| override

Definition at line 297 of file IntelProfilerAuditor.cpp.

298 {
299 // Skip unnecessary event types.
300 if ( !( ( type == IAuditor::Execute ) && m_isStarted ) ) return;
301
302 // Name of the current component.
303 const std::string& name = i->name();
304 // debug() << "Before: " << name << " " << type << endmsg;
305
306 if ( isRunning() ) {
307 if ( isExcluded( name ) ) {
308 // If profiling is running and component is explicitly excluded
309 // then skip component.
310 skip_profiling_component( name );
311 } else {
312 // If profiling is running and component is'not explicitly excluded
313 // then start profiling for component (add to stack).
314 start_profiling_component( name );
315 }
316 } else {
317 if ( hasIncludes() ) {
318 // If the profiling is not running and "includes" is explicitly defined ...
319 if ( isIncluded( name ) ) {
320 // and the current component is in the include's list then start the
321 // component profiling.
322 start_profiling_component( name );
323 } else {
324 // and the current component is not in the includes list then skip
325 // a profiling of the component.
326 skip_profiling_component( name );
327 }
328 } else {
329 // If "Includes" property isn't present and the component is ...
330 if ( isExcluded( name ) ) {
331 // in the excludes list then skip a profiling
332 skip_profiling_component( name );
333 } else {
334 // not in the exclude list then start a profiling
335 start_profiling_component( name );
336 }
337 }
338 }
339 if ( m_nEvents % m_frames_rate == 0 ) {
340 __itt_frame_begin_v3( domain, NULL );
341 }
342 }
IntelProfilerAuditor::start_profiling_component
void start_profiling_component(const std::string &name)
Definition: IntelProfilerAuditor.cpp:129
IntelProfilerAuditor::skip_profiling_component
void skip_profiling_component(const std::string &name)
Definition: IntelProfilerAuditor.cpp:187
IntelProfilerAuditor::isRunning
bool isRunning() const
Definition: IntelProfilerAuditor.cpp:213
IntelProfilerAuditor::domain
__itt_domain * domain
Definition: IntelProfilerAuditor.cpp:95
IntelProfilerAuditor::isExcluded
bool isExcluded(const std::string &name) const
Definition: IntelProfilerAuditor.cpp:208
IntelProfilerAuditor::m_frames_rate
Gaudi::Property< int > m_frames_rate
Definition: IntelProfilerAuditor.cpp:82
std::string
STL class.
IntelProfilerAuditor::m_nEvents
int m_nEvents
Definition: IntelProfilerAuditor.cpp:93
gaudirun.type
type
Definition: gaudirun.py:133
IntelProfilerAuditor::hasIncludes
bool hasIncludes() const
Definition: IntelProfilerAuditor.cpp:201
IAuditor::Execute
Definition: IAuditor.h:25
IntelProfilerAuditor::isIncluded
bool isIncluded(const std::string &name) const
Definition: IntelProfilerAuditor.cpp:203
Auditor::name
const std::string & name() const override
Definition: Auditor.cpp:202
INamedInterface::name
virtual const std::string & name() const =0
Retrieve the name of the instance.
IntelProfilerAuditor::m_isStarted
bool m_isStarted
Definition: IntelProfilerAuditor.cpp:97

void IntelProfilerAuditor::handle | ( | const Incident & | incident | ) |
| override

Definition at line 280 of file IntelProfilerAuditor.cpp.

281 {
282 if ( IncidentType::BeginEvent != incident.type() ) return;
283 // Increment the event counter
284 ++m_nEvents;
285
286 if ( m_nStartFromEvent == m_nEvents ) {
287 info() << "Start profiling (event #" << m_nEvents << ")" << endmsg;
288 start();
289 }
290
291 if ( m_nStopAtEvent == m_nEvents ) {
292 info() << "Stop profiling (event #" << m_nEvents << ")" << endmsg;
293 stop();
294 }
295 }
IntelProfilerAuditor::m_nStartFromEvent
Gaudi::Property< int > m_nStartFromEvent
Definition: IntelProfilerAuditor.cpp:66
IntelProfilerAuditor::m_nStopAtEvent
Gaudi::Property< int > m_nStopAtEvent
Definition: IntelProfilerAuditor.cpp:68
Incident::type
const std::string & type() const
Access to the incident type.
Definition: Incident.h:41
CommonMessagingBase::info
MsgStream & info() const
shortcut for the method msgStream(MSG::INFO)
Definition: CommonMessaging.h:117
IntelProfilerAuditor::m_nEvents
int m_nEvents
Definition: IntelProfilerAuditor.cpp:93
IntelProfilerAuditor::start
void start()
Definition: IntelProfilerAuditor.cpp:123
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209
IntelProfilerAuditor::stop
void stop()
Definition: IntelProfilerAuditor.cpp:194

bool IntelProfilerAuditor::hasIncludes | ( |  | ) | const
| private

Definition at line 201 of file IntelProfilerAuditor.cpp.

201 { return !m_included.empty(); }
IntelProfilerAuditor::m_included
Gaudi::Property< std::vector< std::string > > m_included
Definition: IntelProfilerAuditor.cpp:64

StatusCode IntelProfilerAuditor::initialize | ( |  | ) |
| override virtual

Reimplemented from Auditor.

Definition at line 235 of file IntelProfilerAuditor.cpp.

236 {
237 info() << "Initialised" << endmsg;
238
239 IIncidentSvc* inSvc = NULL;
240 const StatusCode sc = serviceLocator()->service( "IncidentSvc", inSvc );
241 if ( sc.isFailure() ) return sc;
242 // Useful to start profiling only after some event, we don't need profile
243 // initialization stage. For that we need to count events with BeginEvent
244 // listener.
245 inSvc->addListener( this, IncidentType::BeginEvent );
246 // If the end event number don't setup we finish profiling at the end
247 // of loop. We don't need profiling finalization stage.
248 inSvc->addListener( this, IncidentType::EndProcessing );
249
250 std::string str_excluded, str_included, str_eventtypes;
251 for ( const auto& name : m_excluded ) {
252 str_excluded += " " + name;
253 }
254 for ( const auto& name : m_included ) {
255 str_included += " " + name;
256 }
257 for ( const auto& name : m_algs_for_tasktypes ) {
258 str_eventtypes += " " + name;
259 }
260
261 if ( !m_included.empty() ) {
262 info() << "Included algorithms (" << m_included.size() << "): " << str_included << endmsg;
263 }
264
265 if ( !m_excluded.empty() ) {
266 info() << "Excluded algorithms (" << m_excluded.size() << "): " << str_excluded << endmsg;
267 }
268
269 if ( !m_algs_for_tasktypes.empty() ) {
270 info() << "Event types (" << m_algs_for_tasktypes.size() << "): " << str_eventtypes << endmsg;
271 }
272
273 // Create a profiler domain for detection of slow events.
274 domain = __itt_domain_create( "Event loop" );
275 domain->flags = m_enable_frames;
276
277 return StatusCode::SUCCESS;
278 }
StatusCode::SUCCESS
Definition: StatusCode.h:31
CommonMessagingBase::info
MsgStream & info() const
shortcut for the method msgStream(MSG::INFO)
Definition: CommonMessaging.h:117
IntelProfilerAuditor::m_algs_for_tasktypes
Gaudi::Property< std::vector< std::string > > m_algs_for_tasktypes
Definition: IntelProfilerAuditor.cpp:71
IntelProfilerAuditor::m_included
Gaudi::Property< std::vector< std::string > > m_included
Definition: IntelProfilerAuditor.cpp:64
IntelProfilerAuditor::domain
__itt_domain * domain
Definition: IntelProfilerAuditor.cpp:95
StatusCode::isFailure
bool isFailure() const
Test for a status code of FAILURE.
Definition: StatusCode.h:86
std::string
STL class.
ISvcLocator::service
StatusCode service(const Gaudi::Utils::TypeNameString &name, T *&svc, bool createIf=true)
Templated method to access a service by name.
Definition: ISvcLocator.h:79
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:28
Auditor::serviceLocator
SmartIF< ISvcLocator > & serviceLocator() const override
The standard service locator.
Definition: Auditor.cpp:206
IntelProfilerAuditor::m_excluded
Gaudi::Property< std::vector< std::string > > m_excluded
Definition: IntelProfilerAuditor.cpp:65
IntelProfilerAuditor::m_enable_frames
Gaudi::Property< bool > m_enable_frames
Definition: IntelProfilerAuditor.cpp:80
IIncidentSvc::addListener
virtual void addListener(IIncidentListener *lis, const std::string &type="", long priority=0, bool rethrow=false, bool singleShot=false)=0
Add listener.
Auditor::name
const std::string & name() const override
Definition: Auditor.cpp:202
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209
IIncidentSvc
The interface implemented by the IncidentSvc service.
Definition: IIncidentSvc.h:23

bool IntelProfilerAuditor::isExcluded | ( | const std::string & | name | ) | const
| private

Definition at line 208 of file IntelProfilerAuditor.cpp.

209 {
210 return std::find( m_excluded.begin(), m_excluded.end(), name ) != m_excluded.end();
211 }
IntelProfilerAuditor::m_excluded
Gaudi::Property< std::vector< std::string > > m_excluded
Definition: IntelProfilerAuditor.cpp:65
std::find
T find(T...args)
Auditor::name
const std::string & name() const override
Definition: Auditor.cpp:202

bool IntelProfilerAuditor::isIncluded | ( | const std::string & | name | ) | const
| private

Definition at line 203 of file IntelProfilerAuditor.cpp.

204 {
205 return std::find( m_included.begin(), m_included.end(), name ) != m_included.end();
206 }
IntelProfilerAuditor::m_included
Gaudi::Property< std::vector< std::string > > m_included
Definition: IntelProfilerAuditor.cpp:64
std::find
T find(T...args)
Auditor::name
const std::string & name() const override
Definition: Auditor.cpp:202

bool IntelProfilerAuditor::isRunning | ( |  | ) | const
| private

Definition at line 213 of file IntelProfilerAuditor.cpp.

213 { return !m_stack.empty() && m_stack.back().status; }
IntelProfilerAuditor::m_stack
std::vector< stack_entity > m_stack
Definition: IntelProfilerAuditor.cpp:99

void IntelProfilerAuditor::pause | ( |  | ) |
| private

Definition at line 180 of file IntelProfilerAuditor.cpp.

181 {
182 if ( !m_isStarted ) return;
183 debug() << stackIndent() << "Pause" << endmsg;
184 __itt_pause();
185 }
IntelProfilerAuditor::stackIndent
std::string stackIndent(bool newLevel=false) const
Definition: IntelProfilerAuditor.cpp:217
CommonMessagingBase::debug
MsgStream & debug() const
shortcut for the method msgStream(MSG::DEBUG)
Definition: CommonMessaging.h:120
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209
IntelProfilerAuditor::m_isStarted
bool m_isStarted
Definition: IntelProfilerAuditor.cpp:97

void IntelProfilerAuditor::resume | ( |  | ) |
| private

Definition at line 173 of file IntelProfilerAuditor.cpp.

174 {
175 if ( !m_isStarted ) return;
176 debug() << stackIndent() << "Resume" << endmsg;
177 __itt_resume();
178 }
IntelProfilerAuditor::stackIndent
std::string stackIndent(bool newLevel=false) const
Definition: IntelProfilerAuditor.cpp:217
CommonMessagingBase::debug
MsgStream & debug() const
shortcut for the method msgStream(MSG::DEBUG)
Definition: CommonMessaging.h:120
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209
IntelProfilerAuditor::m_isStarted
bool m_isStarted
Definition: IntelProfilerAuditor.cpp:97

void IntelProfilerAuditor::skip_profiling_component | ( | const std::string & | name | ) |
| private

Definition at line 187 of file IntelProfilerAuditor.cpp.

188 {
189 if ( !m_isStarted ) return;
190 m_stack.push_back( stack_entity( name, false ) );
191 debug() << stackIndent() << "Skip component " << name << endmsg;
192 }
IntelProfilerAuditor::m_stack
std::vector< stack_entity > m_stack
Definition: IntelProfilerAuditor.cpp:99
IntelProfilerAuditor::stackIndent
std::string stackIndent(bool newLevel=false) const
Definition: IntelProfilerAuditor.cpp:217
CommonMessagingBase::debug
MsgStream & debug() const
shortcut for the method msgStream(MSG::DEBUG)
Definition: CommonMessaging.h:120
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209
IntelProfilerAuditor::m_isStarted
bool m_isStarted
Definition: IntelProfilerAuditor.cpp:97

std::string IntelProfilerAuditor::stackIndent | ( | bool | newLevel = `false` | ) | const
| private

Definition at line 217 of file IntelProfilerAuditor.cpp.

218 {
219 std::stringstream indent( std::stringstream::out );
220 indent << std::setw( stackLevel() * 2 + ( newLevel ? 2 : 0 ) ) << " ";
221 return indent.str();
222 }
std::stringstream
STL class.
std::setw
T setw(T...args)
IntelProfilerAuditor::stackLevel
int stackLevel() const
Definition: IntelProfilerAuditor.cpp:215

int IntelProfilerAuditor::stackLevel | ( |  | ) | const
| private

Definition at line 215 of file IntelProfilerAuditor.cpp.

215 { return m_stack.size(); }
IntelProfilerAuditor::m_stack
std::vector< stack_entity > m_stack
Definition: IntelProfilerAuditor.cpp:99

void IntelProfilerAuditor::start | ( |  | ) |
| private

Definition at line 123 of file IntelProfilerAuditor.cpp.

124 {
125 m_isStarted = true;
126 __itt_resume();
127 }
IntelProfilerAuditor::m_isStarted
bool m_isStarted
Definition: IntelProfilerAuditor.cpp:97

void IntelProfilerAuditor::start_profiling_component | ( | const std::string & | name | ) |
| private

Definition at line 129 of file IntelProfilerAuditor.cpp.

130 {
131 if ( !m_isStarted ) return;
132 std::string typeName = taskTypeName( name );
133 __itt_event taskId = 0;
134 TaskTypes::const_iterator iter = m_tasktypes.find( typeName );
135 if ( iter != m_tasktypes.end() ) {
136 taskId = iter->second;
137 }
138
139 if ( !taskId && m_algs_for_tasktypes.empty() ) {
140 // Create event
141 taskId = __itt_event_create( typeName.c_str(), typeName.size() );
142 m_tasktypes.insert( TaskTypes::value_type( typeName, taskId ) );
143 }
144
145 stack_entity state = stack_entity( name, true, taskId );
146 stack_entity* parent = !m_stack.empty() ? &m_stack.back() : NULL;
147
148 if ( parent != NULL ) {
149 if ( parent->event ) {
150 state.parent_event = parent->event;
151 } else {
152 state.parent_event = parent->parent_event;
153 }
154 }
155
156 if ( taskId && state.parent_event ) {
157 debug() << stackIndent() << "Pause event " << state.parent_event << endmsg;
158 __itt_event_end( state.parent_event );
159 }
160 m_stack.push_back( state );
161
162 debug() << stackIndent() << "Start profiling component " << typeName << endmsg;
163
164 if ( taskId ) {
165 // Start event
166 debug() << stackIndent() << "Start event type " << state.event << " for " << typeName << endmsg;
167 __itt_event_start( state.event );
168 }
169
170 __itt_resume();
171 }
compareRootHistos.state
state
Definition: compareRootHistos.py:422
IntelProfilerAuditor::m_algs_for_tasktypes
Gaudi::Property< std::vector< std::string > > m_algs_for_tasktypes
Definition: IntelProfilerAuditor.cpp:71
std::map::end
T end(T...args)
std::string
STL class.
IntelProfilerAuditor::m_tasktypes
TaskTypes m_tasktypes
Definition: IntelProfilerAuditor.cpp:101
IntelProfilerAuditor::m_stack
std::vector< stack_entity > m_stack
Definition: IntelProfilerAuditor.cpp:99
IntelProfilerAuditor::stackIndent
std::string stackIndent(bool newLevel=false) const
Definition: IntelProfilerAuditor.cpp:217
std::map::insert
T insert(T...args)
std::map::find
T find(T...args)
IntelProfilerAuditor::taskTypeName
std::string taskTypeName(const std::string &component_name) const
Definition: IntelProfilerAuditor.cpp:224
std::string::size
T size(T...args)
CommonMessagingBase::debug
MsgStream & debug() const
shortcut for the method msgStream(MSG::DEBUG)
Definition: CommonMessaging.h:120
std::string::c_str
T c_str(T...args)
GaudiDict::typeName
std::string typeName(const std::type_info &typ)
Definition: Dictionary.cpp:23
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209
IntelProfilerAuditor::m_isStarted
bool m_isStarted
Definition: IntelProfilerAuditor.cpp:97

void IntelProfilerAuditor::stop | ( |  | ) |
| private

Definition at line 194 of file IntelProfilerAuditor.cpp.

195 {
196 if ( !m_isStarted ) return;
197 m_isStarted = false;
198 __itt_pause();
199 }
IntelProfilerAuditor::m_isStarted
bool m_isStarted
Definition: IntelProfilerAuditor.cpp:97

std::string IntelProfilerAuditor::taskTypeName | ( | const std::string & | component_name | ) | const
| private

Definition at line 224 of file IntelProfilerAuditor.cpp.

225 {
226 std::string result;
227 std::string delim = "";
228 for ( const auto& value : m_stack ) {
229 result += delim + value.name;
230 delim = m_alg_delim;
231 }
232 return result + m_alg_delim + component_name;
233 }
std::string
STL class.
IntelProfilerAuditor::m_stack
std::vector< stack_entity > m_stack
Definition: IntelProfilerAuditor.cpp:99
IntelProfilerAuditor::m_alg_delim
Gaudi::Property< std::string > m_alg_delim
Definition: IntelProfilerAuditor.cpp:77

## Member Data Documentation

__itt_domain* IntelProfilerAuditor::domain = nullptr
| private

Definition at line 95 of file IntelProfilerAuditor.cpp.

Gaudi::Property<std::string> IntelProfilerAuditor::m_alg_delim
| private

Initial value:
{this, "TaskTypeNameDelimeter", " ",
"The String delimiter between sequences/algorithms names in "
"\"Task Type\" grouping at Amplifier. Default=\" \"."}

Definition at line 77 of file IntelProfilerAuditor.cpp.

Gaudi::Property<std::vector<std::string> > IntelProfilerAuditor::m_algs_for_tasktypes
| private

Initial value:
{
this,
"ComponentsForTaskTypes",
{},
"Algorithm name, for which intel amplifier task type will be created."
"By default all algorithms have a corresponding task type."}

Definition at line 71 of file IntelProfilerAuditor.cpp.

Gaudi::Property<bool> IntelProfilerAuditor::m_enable_frames
| private

Initial value:
{this, "EnableFrames", false,
"Enable frames (needed for detecting slow events). Default=false."}

Definition at line 80 of file IntelProfilerAuditor.cpp.

Gaudi::Property<std::vector<std::string> > IntelProfilerAuditor::m_excluded {this, "ExcludeAlgorithms", {}, "Names of excluded algorithms."}
| private

Definition at line 65 of file IntelProfilerAuditor.cpp.

Gaudi::Property<int> IntelProfilerAuditor::m_frames_rate
| private

Initial value:
{this, "FramesRate", 100,
"Frames rate. The recommended maximum rate for calling the Frame API is "
"1000 frames (events) per second. A higher rate may result in large product"
" memory consumption and slow finalization. "
"You need update \"slow-frames-threshold\" and \"fast-frames-threshold\" "
"parameters of amplxe-cl tool to separate slow, medium and fast events. "
"For use frames you need to switch on \"EnableFrames\". "
"Default=100"}

Definition at line 82 of file IntelProfilerAuditor.cpp.

Gaudi::Property<std::vector<std::string> > IntelProfilerAuditor::m_included {this, "IncludeAlgorithms", {}, "Names of included algorithms."}
| private

Definition at line 64 of file IntelProfilerAuditor.cpp.

bool IntelProfilerAuditor::m_isStarted = false
| private

Definition at line 97 of file IntelProfilerAuditor.cpp.

int IntelProfilerAuditor::m_nEvents = 0
| private

Definition at line 93 of file IntelProfilerAuditor.cpp.

Gaudi::Property<int> IntelProfilerAuditor::m_nStartFromEvent
| private

Initial value:
{
this, "StartFromEventN", 1, "After what event we stop profiling. If 0 than we also profile finalization stage."}

Definition at line 66 of file IntelProfilerAuditor.cpp.

Gaudi::Property<int> IntelProfilerAuditor::m_nStopAtEvent
| private

Initial value:
{
this, "StopAtEventN", 0,
"After what event we stop profiling. If 0 than we also profile finalization stage. Default = 0."}

Definition at line 68 of file IntelProfilerAuditor.cpp.

std::vector<stack_entity> IntelProfilerAuditor::m_stack
| private

Definition at line 99 of file IntelProfilerAuditor.cpp.

TaskTypes IntelProfilerAuditor::m_tasktypes
| private

Definition at line 101 of file IntelProfilerAuditor.cpp.

The documentation for this class was generated from the following file:

- GaudiProfiling/src/component/intel/IntelProfilerAuditor.cpp