CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Friends
NVProfilerService Class Reference

Classes

struct  Domains
 

Public Member Functions

 NVProfilerService (const edm::ParameterSet &, edm::ActivityRegistry &)
 
void postBeginJob ()
 
void postCloseFile (std::string const &, bool)
 
void postEndJob ()
 
void postEvent (edm::StreamContext const &)
 
void postEventReadFromSource (edm::StreamContext const &, edm::ModuleCallingContext const &)
 
void postGlobalBeginLumi (edm::GlobalContext const &)
 
void postGlobalBeginRun (edm::GlobalContext const &)
 
void postGlobalEndLumi (edm::GlobalContext const &)
 
void postGlobalEndRun (edm::GlobalContext const &)
 
void postModuleBeginJob (edm::ModuleDescription const &)
 
void postModuleBeginStream (edm::StreamContext const &, edm::ModuleCallingContext const &)
 
void postModuleConstruction (edm::ModuleDescription const &)
 
void postModuleEndJob (edm::ModuleDescription const &)
 
void postModuleEndStream (edm::StreamContext const &, edm::ModuleCallingContext const &)
 
void postModuleEvent (edm::StreamContext const &, edm::ModuleCallingContext const &)
 
void postModuleEventAcquire (edm::StreamContext const &, edm::ModuleCallingContext const &)
 
void postModuleEventDelayedGet (edm::StreamContext const &, edm::ModuleCallingContext const &)
 
void postModuleEventPrefetching (edm::StreamContext const &, edm::ModuleCallingContext const &)
 
void postModuleGlobalBeginLumi (edm::GlobalContext const &, edm::ModuleCallingContext const &)
 
void postModuleGlobalBeginRun (edm::GlobalContext const &, edm::ModuleCallingContext const &)
 
void postModuleGlobalEndLumi (edm::GlobalContext const &, edm::ModuleCallingContext const &)
 
void postModuleGlobalEndRun (edm::GlobalContext const &, edm::ModuleCallingContext const &)
 
void postModuleStreamBeginLumi (edm::StreamContext const &, edm::ModuleCallingContext const &)
 
void postModuleStreamBeginRun (edm::StreamContext const &, edm::ModuleCallingContext const &)
 
void postModuleStreamEndLumi (edm::StreamContext const &, edm::ModuleCallingContext const &)
 
void postModuleStreamEndRun (edm::StreamContext const &, edm::ModuleCallingContext const &)
 
void postOpenFile (std::string const &, bool)
 
void postPathEvent (edm::StreamContext const &, edm::PathContext const &, edm::HLTPathStatus const &)
 
void postSourceConstruction (edm::ModuleDescription const &)
 
void postSourceEvent (edm::StreamID)
 
void postSourceLumi (edm::LuminosityBlockIndex)
 
void postSourceRun (edm::RunIndex)
 
void postStreamBeginLumi (edm::StreamContext const &)
 
void postStreamBeginRun (edm::StreamContext const &)
 
void postStreamEndLumi (edm::StreamContext const &)
 
void postStreamEndRun (edm::StreamContext const &)
 
void preallocate (edm::service::SystemBounds const &)
 
void preBeginJob (edm::PathsAndConsumesOfModulesBase const &, edm::ProcessContext const &)
 
void preCloseFile (std::string const &, bool)
 
void preEvent (edm::StreamContext const &)
 
void preEventReadFromSource (edm::StreamContext const &, edm::ModuleCallingContext const &)
 
void preGlobalBeginLumi (edm::GlobalContext const &)
 
void preGlobalBeginRun (edm::GlobalContext const &)
 
void preGlobalEndLumi (edm::GlobalContext const &)
 
void preGlobalEndRun (edm::GlobalContext const &)
 
void preModuleBeginJob (edm::ModuleDescription const &)
 
void preModuleBeginStream (edm::StreamContext const &, edm::ModuleCallingContext const &)
 
void preModuleConstruction (edm::ModuleDescription const &)
 
void preModuleEndJob (edm::ModuleDescription const &)
 
void preModuleEndStream (edm::StreamContext const &, edm::ModuleCallingContext const &)
 
void preModuleEvent (edm::StreamContext const &, edm::ModuleCallingContext const &)
 
void preModuleEventAcquire (edm::StreamContext const &, edm::ModuleCallingContext const &)
 
void preModuleEventDelayedGet (edm::StreamContext const &, edm::ModuleCallingContext const &)
 
void preModuleEventPrefetching (edm::StreamContext const &, edm::ModuleCallingContext const &)
 
void preModuleGlobalBeginLumi (edm::GlobalContext const &, edm::ModuleCallingContext const &)
 
void preModuleGlobalBeginRun (edm::GlobalContext const &, edm::ModuleCallingContext const &)
 
void preModuleGlobalEndLumi (edm::GlobalContext const &, edm::ModuleCallingContext const &)
 
void preModuleGlobalEndRun (edm::GlobalContext const &, edm::ModuleCallingContext const &)
 
void preModuleStreamBeginLumi (edm::StreamContext const &, edm::ModuleCallingContext const &)
 
void preModuleStreamBeginRun (edm::StreamContext const &, edm::ModuleCallingContext const &)
 
void preModuleStreamEndLumi (edm::StreamContext const &, edm::ModuleCallingContext const &)
 
void preModuleStreamEndRun (edm::StreamContext const &, edm::ModuleCallingContext const &)
 
void preOpenFile (std::string const &, bool)
 
void prePathEvent (edm::StreamContext const &, edm::PathContext const &)
 
void preSourceConstruction (edm::ModuleDescription const &)
 
void preSourceEvent (edm::StreamID)
 
void preSourceLumi (edm::LuminosityBlockIndex)
 
void preSourceRun (edm::RunIndex)
 
void preStreamBeginLumi (edm::StreamContext const &)
 
void preStreamBeginRun (edm::StreamContext const &)
 
void preStreamEndLumi (edm::StreamContext const &)
 
void preStreamEndRun (edm::StreamContext const &)
 
 ~NVProfilerService ()
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 

Private Member Functions

nvtxDomainHandle_t global_domain ()
 
bool highlight (std::string const &label) const
 
uint32_t labelColor (std::string const &label) const
 
uint32_t labelColorLight (std::string const &label) const
 
nvtxDomainHandle_t stream_domain (unsigned int sid)
 

Private Attributes

unsigned int concurrentStreams_
 
tbb::enumerable_thread_specific< Domainsdomains_
 
std::vector< nvtxRangeId_t > event_
 
tbb::concurrent_vector< nvtxRangeId_t > global_modules_
 
std::atomic< bool > globalFirstEventDone_ = false
 
std::vector< std::string > highlightModules_
 
const bool showModulePrefetching_
 
bool skipFirstEvent_
 
std::vector< std::vector< nvtxRangeId_t > > stream_modules_
 
std::vector< std::atomic< bool > > streamFirstEventDone_
 

Friends

struct Domains
 

Detailed Description

Definition at line 126 of file NVProfilerService.cc.

Constructor & Destructor Documentation

NVProfilerService::NVProfilerService ( const edm::ParameterSet ,
edm::ActivityRegistry  
)

Definition at line 343 of file NVProfilerService.cc.

References highlightModules_, postBeginJob(), postCloseFile(), postEndJob(), postEvent(), postEventReadFromSource(), postGlobalBeginLumi(), postGlobalBeginRun(), postGlobalEndLumi(), postGlobalEndRun(), postModuleBeginJob(), postModuleBeginStream(), postModuleConstruction(), postModuleEndJob(), postModuleEndStream(), postModuleEvent(), postModuleEventAcquire(), postModuleEventDelayedGet(), postModuleEventPrefetching(), postModuleGlobalBeginLumi(), postModuleGlobalBeginRun(), postModuleGlobalEndLumi(), postModuleGlobalEndRun(), postModuleStreamBeginLumi(), postModuleStreamBeginRun(), postModuleStreamEndLumi(), postModuleStreamEndRun(), postOpenFile(), postPathEvent(), postSourceConstruction(), postSourceEvent(), postSourceLumi(), postSourceRun(), postStreamBeginLumi(), postStreamBeginRun(), postStreamEndLumi(), postStreamEndRun(), preallocate(), preBeginJob(), preCloseFile(), preEvent(), preEventReadFromSource(), preGlobalBeginLumi(), preGlobalBeginRun(), preGlobalEndLumi(), preGlobalEndRun(), preModuleBeginJob(), preModuleBeginStream(), preModuleConstruction(), preModuleEndJob(), preModuleEndStream(), preModuleEvent(), preModuleEventAcquire(), preModuleEventDelayedGet(), preModuleEventPrefetching(), preModuleGlobalBeginLumi(), preModuleGlobalBeginRun(), preModuleGlobalEndLumi(), preModuleGlobalEndRun(), preModuleStreamBeginLumi(), preModuleStreamBeginRun(), preModuleStreamEndLumi(), preModuleStreamEndRun(), preOpenFile(), prePathEvent(), preSourceConstruction(), preSourceEvent(), preSourceLumi(), preSourceRun(), preStreamBeginLumi(), preStreamBeginRun(), preStreamEndLumi(), preStreamEndRun(), showModulePrefetching_, skipFirstEvent_, edm::ActivityRegistry::watchPostBeginJob(), edm::ActivityRegistry::watchPostCloseFile(), edm::ActivityRegistry::watchPostEndJob(), edm::ActivityRegistry::watchPostEvent(), edm::ActivityRegistry::watchPostEventReadFromSource(), edm::ActivityRegistry::watchPostGlobalBeginLumi(), edm::ActivityRegistry::watchPostGlobalBeginRun(), edm::ActivityRegistry::watchPostGlobalEndLumi(), edm::ActivityRegistry::watchPostGlobalEndRun(), edm::ActivityRegistry::watchPostModuleBeginJob(), edm::ActivityRegistry::watchPostModuleBeginStream(), edm::ActivityRegistry::watchPostModuleConstruction(), edm::ActivityRegistry::watchPostModuleEndJob(), edm::ActivityRegistry::watchPostModuleEndStream(), edm::ActivityRegistry::watchPostModuleEvent(), edm::ActivityRegistry::watchPostModuleEventAcquire(), edm::ActivityRegistry::watchPostModuleEventDelayedGet(), edm::ActivityRegistry::watchPostModuleEventPrefetching(), edm::ActivityRegistry::watchPostModuleGlobalBeginLumi(), edm::ActivityRegistry::watchPostModuleGlobalBeginRun(), edm::ActivityRegistry::watchPostModuleGlobalEndLumi(), edm::ActivityRegistry::watchPostModuleGlobalEndRun(), edm::ActivityRegistry::watchPostModuleStreamBeginLumi(), edm::ActivityRegistry::watchPostModuleStreamBeginRun(), edm::ActivityRegistry::watchPostModuleStreamEndLumi(), edm::ActivityRegistry::watchPostModuleStreamEndRun(), edm::ActivityRegistry::watchPostOpenFile(), edm::ActivityRegistry::watchPostPathEvent(), edm::ActivityRegistry::watchPostSourceConstruction(), edm::ActivityRegistry::watchPostSourceEvent(), edm::ActivityRegistry::watchPostSourceLumi(), edm::ActivityRegistry::watchPostSourceRun(), edm::ActivityRegistry::watchPostStreamBeginLumi(), edm::ActivityRegistry::watchPostStreamBeginRun(), edm::ActivityRegistry::watchPostStreamEndLumi(), edm::ActivityRegistry::watchPostStreamEndRun(), edm::ActivityRegistry::watchPreallocate(), edm::ActivityRegistry::watchPreBeginJob(), edm::ActivityRegistry::watchPreCloseFile(), edm::ActivityRegistry::watchPreEvent(), edm::ActivityRegistry::watchPreEventReadFromSource(), edm::ActivityRegistry::watchPreGlobalBeginLumi(), edm::ActivityRegistry::watchPreGlobalBeginRun(), edm::ActivityRegistry::watchPreGlobalEndLumi(), edm::ActivityRegistry::watchPreGlobalEndRun(), edm::ActivityRegistry::watchPreModuleBeginJob(), edm::ActivityRegistry::watchPreModuleBeginStream(), edm::ActivityRegistry::watchPreModuleConstruction(), edm::ActivityRegistry::watchPreModuleEndJob(), edm::ActivityRegistry::watchPreModuleEndStream(), edm::ActivityRegistry::watchPreModuleEvent(), edm::ActivityRegistry::watchPreModuleEventAcquire(), edm::ActivityRegistry::watchPreModuleEventDelayedGet(), edm::ActivityRegistry::watchPreModuleEventPrefetching(), edm::ActivityRegistry::watchPreModuleGlobalBeginLumi(), edm::ActivityRegistry::watchPreModuleGlobalBeginRun(), edm::ActivityRegistry::watchPreModuleGlobalEndLumi(), edm::ActivityRegistry::watchPreModuleGlobalEndRun(), edm::ActivityRegistry::watchPreModuleStreamBeginLumi(), edm::ActivityRegistry::watchPreModuleStreamBeginRun(), edm::ActivityRegistry::watchPreModuleStreamEndLumi(), edm::ActivityRegistry::watchPreModuleStreamEndRun(), edm::ActivityRegistry::watchPreOpenFile(), edm::ActivityRegistry::watchPrePathEvent(), edm::ActivityRegistry::watchPreSourceConstruction(), edm::ActivityRegistry::watchPreSourceEvent(), edm::ActivityRegistry::watchPreSourceLumi(), edm::ActivityRegistry::watchPreSourceRun(), edm::ActivityRegistry::watchPreStreamBeginLumi(), edm::ActivityRegistry::watchPreStreamBeginRun(), edm::ActivityRegistry::watchPreStreamEndLumi(), and edm::ActivityRegistry::watchPreStreamEndRun().

343  :
344  highlightModules_(config.getUntrackedParameter<std::vector<std::string>>("highlightModules")),
345  showModulePrefetching_(config.getUntrackedParameter<bool>("showModulePrefetching")),
346  skipFirstEvent_(config.getUntrackedParameter<bool>("skipFirstEvent")),
348  domains_(this)
349 {
350  std::sort(highlightModules_.begin(), highlightModules_.end());
351 
352  // enables profile collection; if profiling is already enabled it has no effect
353  if (not skipFirstEvent_) {
354  cudaProfilerStart();
355  }
356 
357  registry.watchPreallocate(this, &NVProfilerService::preallocate);
358 
359  // these signal pair are NOT guaranteed to be called by the same thread
360  registry.watchPreBeginJob(this, &NVProfilerService::preBeginJob);
361  registry.watchPostBeginJob(this, &NVProfilerService::postBeginJob);
362 
363  // there is no preEndJob() signal
364  registry.watchPostEndJob(this, &NVProfilerService::postEndJob);
365 
366  // these signal pair are NOT guaranteed to be called by the same thread
367  registry.watchPreGlobalBeginRun(this, &NVProfilerService::preGlobalBeginRun);
368  registry.watchPostGlobalBeginRun(this, &NVProfilerService::postGlobalBeginRun);
369 
370  // these signal pair are NOT guaranteed to be called by the same thread
371  registry.watchPreGlobalEndRun(this, &NVProfilerService::preGlobalEndRun);
372  registry.watchPostGlobalEndRun(this, &NVProfilerService::postGlobalEndRun);
373 
374  // these signal pair are NOT guaranteed to be called by the same thread
375  registry.watchPreStreamBeginRun(this, &NVProfilerService::preStreamBeginRun);
376  registry.watchPostStreamBeginRun(this, &NVProfilerService::postStreamBeginRun);
377 
378  // these signal pair are NOT guaranteed to be called by the same thread
379  registry.watchPreStreamEndRun(this, &NVProfilerService::preStreamEndRun);
380  registry.watchPostStreamEndRun(this, &NVProfilerService::postStreamEndRun);
381 
382  // these signal pair are NOT guaranteed to be called by the same thread
383  registry.watchPreGlobalBeginLumi(this, &NVProfilerService::preGlobalBeginLumi);
384  registry.watchPostGlobalBeginLumi(this, &NVProfilerService::postGlobalBeginLumi);
385 
386  // these signal pair are NOT guaranteed to be called by the same thread
387  registry.watchPreGlobalEndLumi(this, &NVProfilerService::preGlobalEndLumi);
388  registry.watchPostGlobalEndLumi(this, &NVProfilerService::postGlobalEndLumi);
389 
390  // these signal pair are NOT guaranteed to be called by the same thread
391  registry.watchPreStreamBeginLumi(this, &NVProfilerService::preStreamBeginLumi);
392  registry.watchPostStreamBeginLumi(this, &NVProfilerService::postStreamBeginLumi);
393 
394  // these signal pair are NOT guaranteed to be called by the same thread
395  registry.watchPreStreamEndLumi(this, &NVProfilerService::preStreamEndLumi);
396  registry.watchPostStreamEndLumi(this, &NVProfilerService::postStreamEndLumi);
397 
398  // these signal pair are NOT guaranteed to be called by the same thread
399  registry.watchPreEvent(this, &NVProfilerService::preEvent);
400  registry.watchPostEvent(this, &NVProfilerService::postEvent);
401 
402  // these signal pair are NOT guaranteed to be called by the same thread
403  registry.watchPrePathEvent(this, &NVProfilerService::prePathEvent);
404  registry.watchPostPathEvent(this, &NVProfilerService::postPathEvent);
405 
407  // these signal pair are NOT guaranteed to be called by the same thread
408  registry.watchPreModuleEventPrefetching(this, &NVProfilerService::preModuleEventPrefetching);
409  registry.watchPostModuleEventPrefetching(this, &NVProfilerService::postModuleEventPrefetching);
410  }
411 
412  // these signal pair are guaranteed to be called by the same thread
413  registry.watchPreOpenFile(this, &NVProfilerService::preOpenFile);
414  registry.watchPostOpenFile(this, &NVProfilerService::postOpenFile);
415 
416  // these signal pair are guaranteed to be called by the same thread
417  registry.watchPreCloseFile(this, &NVProfilerService::preCloseFile);
418  registry.watchPostCloseFile(this, &NVProfilerService::postCloseFile);
419 
420  // these signal pair are guaranteed to be called by the same thread
421  registry.watchPreSourceConstruction(this, &NVProfilerService::preSourceConstruction);
422  registry.watchPostSourceConstruction(this, &NVProfilerService::postSourceConstruction);
423 
424  // these signal pair are guaranteed to be called by the same thread
425  registry.watchPreSourceRun(this, &NVProfilerService::preSourceRun);
426  registry.watchPostSourceRun(this, &NVProfilerService::postSourceRun);
427 
428  // these signal pair are guaranteed to be called by the same thread
429  registry.watchPreSourceLumi(this, &NVProfilerService::preSourceLumi);
430  registry.watchPostSourceLumi(this, &NVProfilerService::postSourceLumi);
431 
432  // these signal pair are guaranteed to be called by the same thread
433  registry.watchPreSourceEvent(this, &NVProfilerService::preSourceEvent);
434  registry.watchPostSourceEvent(this, &NVProfilerService::postSourceEvent);
435 
436  // these signal pair are guaranteed to be called by the same thread
437  registry.watchPreModuleConstruction(this, &NVProfilerService::preModuleConstruction);
438  registry.watchPostModuleConstruction(this, &NVProfilerService::postModuleConstruction);
439 
440  // these signal pair are guaranteed to be called by the same thread
441  registry.watchPreModuleBeginJob(this, &NVProfilerService::preModuleBeginJob);
442  registry.watchPostModuleBeginJob(this, &NVProfilerService::postModuleBeginJob);
443 
444  // these signal pair are guaranteed to be called by the same thread
445  registry.watchPreModuleEndJob(this, &NVProfilerService::preModuleEndJob);
446  registry.watchPostModuleEndJob(this, &NVProfilerService::postModuleEndJob);
447 
448  // these signal pair are guaranteed to be called by the same thread
449  registry.watchPreModuleBeginStream(this, &NVProfilerService::preModuleBeginStream);
450  registry.watchPostModuleBeginStream(this, &NVProfilerService::postModuleBeginStream);
451 
452  // these signal pair are guaranteed to be called by the same thread
453  registry.watchPreModuleEndStream(this, &NVProfilerService::preModuleEndStream);
454  registry.watchPostModuleEndStream(this, &NVProfilerService::postModuleEndStream);
455 
456  // these signal pair are guaranteed to be called by the same thread
457  registry.watchPreModuleGlobalBeginRun(this, &NVProfilerService::preModuleGlobalBeginRun);
458  registry.watchPostModuleGlobalBeginRun(this, &NVProfilerService::postModuleGlobalBeginRun);
459 
460  // these signal pair are guaranteed to be called by the same thread
461  registry.watchPreModuleGlobalEndRun(this, &NVProfilerService::preModuleGlobalEndRun);
462  registry.watchPostModuleGlobalEndRun(this, &NVProfilerService::postModuleGlobalEndRun);
463 
464  // these signal pair are guaranteed to be called by the same thread
465  registry.watchPreModuleGlobalBeginLumi(this, &NVProfilerService::preModuleGlobalBeginLumi);
466  registry.watchPostModuleGlobalBeginLumi(this, &NVProfilerService::postModuleGlobalBeginLumi);
467 
468  // these signal pair are guaranteed to be called by the same thread
469  registry.watchPreModuleGlobalEndLumi(this, &NVProfilerService::preModuleGlobalEndLumi);
470  registry.watchPostModuleGlobalEndLumi(this, &NVProfilerService::postModuleGlobalEndLumi);
471 
472  // these signal pair are guaranteed to be called by the same thread
473  registry.watchPreModuleStreamBeginRun(this, &NVProfilerService::preModuleStreamBeginRun);
474  registry.watchPostModuleStreamBeginRun(this, &NVProfilerService::postModuleStreamBeginRun);
475 
476  // these signal pair are guaranteed to be called by the same thread
477  registry.watchPreModuleStreamEndRun(this, &NVProfilerService::preModuleStreamEndRun);
478  registry.watchPostModuleStreamEndRun(this, &NVProfilerService::postModuleStreamEndRun);
479 
480  // these signal pair are guaranteed to be called by the same thread
481  registry.watchPreModuleStreamBeginLumi(this, &NVProfilerService::preModuleStreamBeginLumi);
482  registry.watchPostModuleStreamBeginLumi(this, &NVProfilerService::postModuleStreamBeginLumi);
483 
484  // these signal pair are guaranteed to be called by the same thread
485  registry.watchPreModuleStreamEndLumi(this, &NVProfilerService::preModuleStreamEndLumi);
486  registry.watchPostModuleStreamEndLumi(this, &NVProfilerService::postModuleStreamEndLumi);
487 
488  // these signal pair are guaranteed to be called by the same thread
489  registry.watchPreModuleEventAcquire(this, &NVProfilerService::preModuleEventAcquire);
490  registry.watchPostModuleEventAcquire(this, &NVProfilerService::postModuleEventAcquire);
491 
492  // these signal pair are guaranteed to be called by the same thread
493  registry.watchPreModuleEvent(this, &NVProfilerService::preModuleEvent);
494  registry.watchPostModuleEvent(this, &NVProfilerService::postModuleEvent);
495 
496  // these signal pair are guaranteed to be called by the same thread
497  registry.watchPreModuleEventDelayedGet(this, &NVProfilerService::preModuleEventDelayedGet);
498  registry.watchPostModuleEventDelayedGet(this, &NVProfilerService::postModuleEventDelayedGet);
499 
500  // these signal pair are guaranteed to be called by the same thread
501  registry.watchPreEventReadFromSource(this, &NVProfilerService::preEventReadFromSource);
502  registry.watchPostEventReadFromSource(this, &NVProfilerService::postEventReadFromSource);
503 }
void postStreamEndLumi(edm::StreamContext const &)
void preOpenFile(std::string const &, bool)
void preModuleEventPrefetching(edm::StreamContext const &, edm::ModuleCallingContext const &)
void preGlobalBeginRun(edm::GlobalContext const &)
void postGlobalEndRun(edm::GlobalContext const &)
void preGlobalEndLumi(edm::GlobalContext const &)
void postOpenFile(std::string const &, bool)
void postModuleEventDelayedGet(edm::StreamContext const &, edm::ModuleCallingContext const &)
void postModuleStreamBeginLumi(edm::StreamContext const &, edm::ModuleCallingContext const &)
void postModuleEvent(edm::StreamContext const &, edm::ModuleCallingContext const &)
tbb::enumerable_thread_specific< Domains > domains_
void preModuleEndStream(edm::StreamContext const &, edm::ModuleCallingContext const &)
void preModuleEventAcquire(edm::StreamContext const &, edm::ModuleCallingContext const &)
void postCloseFile(std::string const &, bool)
void postModuleEventAcquire(edm::StreamContext const &, edm::ModuleCallingContext const &)
void preStreamBeginLumi(edm::StreamContext const &)
void preModuleEvent(edm::StreamContext const &, edm::ModuleCallingContext const &)
void preSourceRun(edm::RunIndex)
void preModuleStreamBeginLumi(edm::StreamContext const &, edm::ModuleCallingContext const &)
void postSourceConstruction(edm::ModuleDescription const &)
void preModuleStreamBeginRun(edm::StreamContext const &, edm::ModuleCallingContext const &)
void preCloseFile(std::string const &, bool)
void postStreamEndRun(edm::StreamContext const &)
Definition: config.py:1
void postModuleEndJob(edm::ModuleDescription const &)
void postGlobalEndLumi(edm::GlobalContext const &)
void preModuleEndJob(edm::ModuleDescription const &)
void preModuleGlobalBeginLumi(edm::GlobalContext const &, edm::ModuleCallingContext const &)
void preGlobalBeginLumi(edm::GlobalContext const &)
void postSourceLumi(edm::LuminosityBlockIndex)
void preModuleStreamEndLumi(edm::StreamContext const &, edm::ModuleCallingContext const &)
void postModuleConstruction(edm::ModuleDescription const &)
void postModuleEventPrefetching(edm::StreamContext const &, edm::ModuleCallingContext const &)
void preModuleGlobalBeginRun(edm::GlobalContext const &, edm::ModuleCallingContext const &)
void preGlobalEndRun(edm::GlobalContext const &)
void postSourceEvent(edm::StreamID)
void preStreamEndRun(edm::StreamContext const &)
void postModuleGlobalEndLumi(edm::GlobalContext const &, edm::ModuleCallingContext const &)
void preModuleEventDelayedGet(edm::StreamContext const &, edm::ModuleCallingContext const &)
void preSourceConstruction(edm::ModuleDescription const &)
void postModuleGlobalEndRun(edm::GlobalContext const &, edm::ModuleCallingContext const &)
void preModuleGlobalEndRun(edm::GlobalContext const &, edm::ModuleCallingContext const &)
void preBeginJob(edm::PathsAndConsumesOfModulesBase const &, edm::ProcessContext const &)
void postPathEvent(edm::StreamContext const &, edm::PathContext const &, edm::HLTPathStatus const &)
void postStreamBeginLumi(edm::StreamContext const &)
void preStreamEndLumi(edm::StreamContext const &)
void preModuleBeginJob(edm::ModuleDescription const &)
void postGlobalBeginLumi(edm::GlobalContext const &)
void postEventReadFromSource(edm::StreamContext const &, edm::ModuleCallingContext const &)
void postModuleBeginStream(edm::StreamContext const &, edm::ModuleCallingContext const &)
void postModuleGlobalBeginRun(edm::GlobalContext const &, edm::ModuleCallingContext const &)
void preModuleBeginStream(edm::StreamContext const &, edm::ModuleCallingContext const &)
void preSourceEvent(edm::StreamID)
void preModuleConstruction(edm::ModuleDescription const &)
unsigned int concurrentStreams_
void preStreamBeginRun(edm::StreamContext const &)
void postModuleStreamBeginRun(edm::StreamContext const &, edm::ModuleCallingContext const &)
void preModuleStreamEndRun(edm::StreamContext const &, edm::ModuleCallingContext const &)
void postGlobalBeginRun(edm::GlobalContext const &)
void postModuleStreamEndLumi(edm::StreamContext const &, edm::ModuleCallingContext const &)
void postEvent(edm::StreamContext const &)
void postSourceRun(edm::RunIndex)
void preallocate(edm::service::SystemBounds const &)
void postModuleEndStream(edm::StreamContext const &, edm::ModuleCallingContext const &)
void preSourceLumi(edm::LuminosityBlockIndex)
const bool showModulePrefetching_
void preEventReadFromSource(edm::StreamContext const &, edm::ModuleCallingContext const &)
void preEvent(edm::StreamContext const &)
void preModuleGlobalEndLumi(edm::GlobalContext const &, edm::ModuleCallingContext const &)
void postStreamBeginRun(edm::StreamContext const &)
void prePathEvent(edm::StreamContext const &, edm::PathContext const &)
static Interceptor::Registry registry("Interceptor")
void postModuleStreamEndRun(edm::StreamContext const &, edm::ModuleCallingContext const &)
void postModuleGlobalBeginLumi(edm::GlobalContext const &, edm::ModuleCallingContext const &)
std::vector< std::string > highlightModules_
void postModuleBeginJob(edm::ModuleDescription const &)
NVProfilerService::~NVProfilerService ( )

Definition at line 505 of file NVProfilerService.cc.

505  {
506  cudaProfilerStop();
507 }

Member Function Documentation

void NVProfilerService::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 510 of file NVProfilerService.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::addUntracked(), and edm::ConfigurationDescriptions::setComment().

510  {
512  desc.addUntracked<std::vector<std::string>>("highlightModules", {})->setComment("");
513  desc.addUntracked<bool>("showModulePrefetching", false)->setComment("Show the stack of dependencies that requested to run a module.");
514  desc.addUntracked<bool>("skipFirstEvent", false)->setComment("Start profiling after the first event has completed.\nWith multiple streams, ignore transitions belonging to events started in parallel to the first event.\nRequires running nvprof with the '--profile-from-start off' option.");
515  descriptions.add("NVProfilerService", desc);
516  descriptions.setComment(R"(This Service provides CMSSW-aware annotations to nvprof/nvvm.
517 
518 Notes on nvprof options:
519  - the option '--profile-from-start off' should be used if skipFirstEvent is True.
520  - the option '--cpu-profiling on' currently results in cmsRun being stuck at the beginning of the job.
521  - the option '--cpu-thread-tracing on' is not compatible with jemalloc, and should only be used with cmsRunGlibC.)");
522 }
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
void setComment(std::string const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
nvtxDomainHandle_t NVProfilerService::global_domain ( )
inlineprivate
bool NVProfilerService::highlight ( std::string const &  label) const
inlineprivate

Definition at line 279 of file NVProfilerService.cc.

References label.

279  {
280  return (std::binary_search(highlightModules_.begin(), highlightModules_.end(), label));
281  }
char const * label
std::vector< std::string > highlightModules_
uint32_t NVProfilerService::labelColor ( std::string const &  label) const
inlineprivate
uint32_t NVProfilerService::labelColorLight ( std::string const &  label) const
inlineprivate

Definition at line 287 of file NVProfilerService.cc.

Referenced by preModuleEventPrefetching().

287  {
288  return highlight(label) ? nvtxLightAmber : nvtxLightGreen;
289  }
bool highlight(std::string const &label) const
char const * label
void NVProfilerService::postBeginJob ( )

Definition at line 562 of file NVProfilerService.cc.

References global_domain(), globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

562  {
564  nvtxDomainMark(global_domain(), "postBeginJob");
565  }
566 }
nvtxDomainHandle_t global_domain()
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
std::atomic< bool > globalFirstEventDone_
void NVProfilerService::postCloseFile ( std::string const &  lfn,
bool   
)

Definition at line 639 of file NVProfilerService.cc.

References global_domain(), globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

639  {
641  nvtxDomainRangePop(global_domain());
642  }
643 }
nvtxDomainHandle_t global_domain()
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
std::atomic< bool > globalFirstEventDone_
void NVProfilerService::postEndJob ( )

Definition at line 569 of file NVProfilerService.cc.

References global_domain(), globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

569  {
571  nvtxDomainMark(global_domain(), "postEndJob");
572  }
573 }
nvtxDomainHandle_t global_domain()
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
std::atomic< bool > globalFirstEventDone_
void NVProfilerService::postEvent ( edm::StreamContext const &  sc)

Definition at line 816 of file NVProfilerService.cc.

References event_, globalFirstEventDone_, identity(), or, skipFirstEvent_, stream_domain(), streamFirstEventDone_, edm::StreamContext::streamID(), and x.

Referenced by NVProfilerService().

816  {
817  auto sid = sc.streamID();
819  nvtxDomainRangeEnd(stream_domain(sid), event_[sid]);
820  event_[sid] = nvtxInvalidRangeId;
821  } else {
822  streamFirstEventDone_[sid] = true;
823  auto identity = [](bool x){ return x; };
824  if (std::all_of(streamFirstEventDone_.begin(), streamFirstEventDone_.end(), identity)) {
825  bool expected = false;
826  if (globalFirstEventDone_.compare_exchange_strong(expected, true))
827  cudaProfilerStart();
828  }
829  }
830 }
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
T identity(T t)
std::vector< nvtxRangeId_t > event_
nvtxDomainHandle_t stream_domain(unsigned int sid)
std::atomic< bool > globalFirstEventDone_
std::vector< std::atomic< bool > > streamFirstEventDone_
void NVProfilerService::postEventReadFromSource ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 1012 of file NVProfilerService.cc.

Referenced by NVProfilerService().

1012  {
1013  /* FIXME
1014  auto sid = sc.streamID();
1015  if (not skipFirstEvent_ or streamFirstEventDone_[sid]) {
1016  auto mid = mcc.moduleDescription()->id();
1017  nvtxDomainRangeEnd(stream_domain(sid), stream_modules_[sid][mid]);
1018  stream_modules_[sid][mid] = nvtxInvalidRangeId;
1019  }
1020  */
1021 }
void NVProfilerService::postGlobalBeginLumi ( edm::GlobalContext const &  gc)

Definition at line 757 of file NVProfilerService.cc.

References global_domain(), globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

757  {
759  nvtxDomainRangePop(global_domain());
760  }
761 }
nvtxDomainHandle_t global_domain()
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
std::atomic< bool > globalFirstEventDone_
void NVProfilerService::postGlobalBeginRun ( edm::GlobalContext const &  gc)

Definition at line 697 of file NVProfilerService.cc.

References global_domain(), globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

697  {
699  nvtxDomainRangePop(global_domain());
700  }
701 }
nvtxDomainHandle_t global_domain()
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
std::atomic< bool > globalFirstEventDone_
void NVProfilerService::postGlobalEndLumi ( edm::GlobalContext const &  gc)

Definition at line 771 of file NVProfilerService.cc.

References global_domain(), globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

771  {
773  nvtxDomainRangePop(global_domain());
774  }
775 }
nvtxDomainHandle_t global_domain()
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
std::atomic< bool > globalFirstEventDone_
void NVProfilerService::postGlobalEndRun ( edm::GlobalContext const &  gc)

Definition at line 711 of file NVProfilerService.cc.

References global_domain(), globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

711  {
713  nvtxDomainRangePop(global_domain());
714  }
715 }
nvtxDomainHandle_t global_domain()
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
std::atomic< bool > globalFirstEventDone_
void NVProfilerService::postModuleBeginJob ( edm::ModuleDescription const &  desc)

Definition at line 901 of file NVProfilerService.cc.

References global_domain(), global_modules_, edm::ModuleDescription::id(), and skipFirstEvent_.

Referenced by NVProfilerService().

901  {
902  if (not skipFirstEvent_) {
903  auto mid = desc.id();
904  nvtxDomainRangeEnd(global_domain(), global_modules_[mid]);
905  global_modules_[mid] = nvtxInvalidRangeId;
906  }
907 }
nvtxDomainHandle_t global_domain()
tbb::concurrent_vector< nvtxRangeId_t > global_modules_
void NVProfilerService::postModuleBeginStream ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 658 of file NVProfilerService.cc.

References edm::ModuleDescription::id(), edm::ModuleCallingContext::moduleDescription(), or, skipFirstEvent_, stream_domain(), stream_modules_, streamFirstEventDone_, and edm::StreamContext::streamID().

Referenced by NVProfilerService().

658  {
659  auto sid = sc.streamID();
661  auto mid = mcc.moduleDescription()->id();
662  nvtxDomainRangeEnd(stream_domain(sid), stream_modules_[sid][mid]);
663  stream_modules_[sid][mid] = nvtxInvalidRangeId;
664  }
665 }
std::vector< std::vector< nvtxRangeId_t > > stream_modules_
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
nvtxDomainHandle_t stream_domain(unsigned int sid)
std::vector< std::atomic< bool > > streamFirstEventDone_
void NVProfilerService::postModuleConstruction ( edm::ModuleDescription const &  desc)

Definition at line 882 of file NVProfilerService.cc.

References global_domain(), global_modules_, edm::ModuleDescription::id(), and skipFirstEvent_.

Referenced by NVProfilerService().

882  {
883  if (not skipFirstEvent_) {
884  auto mid = desc.id();
885  nvtxDomainRangeEnd(global_domain(), global_modules_[mid]);
886  global_modules_[mid] = nvtxInvalidRangeId;
887  }
888 }
nvtxDomainHandle_t global_domain()
tbb::concurrent_vector< nvtxRangeId_t > global_modules_
void NVProfilerService::postModuleEndJob ( edm::ModuleDescription const &  desc)

Definition at line 920 of file NVProfilerService.cc.

References global_domain(), global_modules_, globalFirstEventDone_, edm::ModuleDescription::id(), or, and skipFirstEvent_.

Referenced by NVProfilerService().

920  {
922  auto mid = desc.id();
923  nvtxDomainRangeEnd(global_domain(), global_modules_[mid]);
924  global_modules_[mid] = nvtxInvalidRangeId;
925  }
926 }
nvtxDomainHandle_t global_domain()
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
tbb::concurrent_vector< nvtxRangeId_t > global_modules_
std::atomic< bool > globalFirstEventDone_
void NVProfilerService::postModuleEndStream ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 680 of file NVProfilerService.cc.

References edm::ModuleDescription::id(), edm::ModuleCallingContext::moduleDescription(), or, skipFirstEvent_, stream_domain(), stream_modules_, streamFirstEventDone_, and edm::StreamContext::streamID().

Referenced by NVProfilerService().

680  {
681  auto sid = sc.streamID();
683  auto mid = mcc.moduleDescription()->id();
684  nvtxDomainRangeEnd(stream_domain(sid), stream_modules_[sid][mid]);
685  stream_modules_[sid][mid] = nvtxInvalidRangeId;
686  }
687 }
std::vector< std::vector< nvtxRangeId_t > > stream_modules_
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
nvtxDomainHandle_t stream_domain(unsigned int sid)
std::vector< std::atomic< bool > > streamFirstEventDone_
void NVProfilerService::postModuleEvent ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 962 of file NVProfilerService.cc.

References edm::ModuleDescription::id(), edm::ModuleCallingContext::moduleDescription(), or, skipFirstEvent_, stream_domain(), stream_modules_, streamFirstEventDone_, and edm::StreamContext::streamID().

Referenced by NVProfilerService().

962  {
963  auto sid = sc.streamID();
965  auto mid = mcc.moduleDescription()->id();
966  nvtxDomainRangeEnd(stream_domain(sid), stream_modules_[sid][mid]);
967  stream_modules_[sid][mid] = nvtxInvalidRangeId;
968  }
969 }
std::vector< std::vector< nvtxRangeId_t > > stream_modules_
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
nvtxDomainHandle_t stream_domain(unsigned int sid)
std::vector< std::atomic< bool > > streamFirstEventDone_
void NVProfilerService::postModuleEventAcquire ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 941 of file NVProfilerService.cc.

References edm::ModuleDescription::id(), edm::ModuleCallingContext::moduleDescription(), or, skipFirstEvent_, stream_domain(), stream_modules_, streamFirstEventDone_, and edm::StreamContext::streamID().

Referenced by NVProfilerService().

941  {
942  auto sid = sc.streamID();
944  auto mid = mcc.moduleDescription()->id();
945  nvtxDomainRangeEnd(stream_domain(sid), stream_modules_[sid][mid]);
946  stream_modules_[sid][mid] = nvtxInvalidRangeId;
947  }
948 }
std::vector< std::vector< nvtxRangeId_t > > stream_modules_
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
nvtxDomainHandle_t stream_domain(unsigned int sid)
std::vector< std::atomic< bool > > streamFirstEventDone_
void NVProfilerService::postModuleEventDelayedGet ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 986 of file NVProfilerService.cc.

Referenced by NVProfilerService().

986  {
987  /* FIXME
988  auto sid = sc.streamID();
989  if (not skipFirstEvent_ or streamFirstEventDone_[sid]) {
990  auto mid = mcc.moduleDescription()->id();
991  nvtxDomainRangeEnd(stream_domain(sid), stream_modules_[sid][mid]);
992  stream_modules_[sid][mid] = nvtxInvalidRangeId;
993  }
994  */
995 }
void NVProfilerService::postModuleEventPrefetching ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 861 of file NVProfilerService.cc.

References edm::ModuleDescription::id(), edm::ModuleCallingContext::moduleDescription(), or, skipFirstEvent_, stream_domain(), stream_modules_, streamFirstEventDone_, and edm::StreamContext::streamID().

Referenced by NVProfilerService().

861  {
862  auto sid = sc.streamID();
864  auto mid = mcc.moduleDescription()->id();
865  nvtxDomainRangeEnd(stream_domain(sid), stream_modules_[sid][mid]);
866  stream_modules_[sid][mid] = nvtxInvalidRangeId;
867  }
868 }
std::vector< std::vector< nvtxRangeId_t > > stream_modules_
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
nvtxDomainHandle_t stream_domain(unsigned int sid)
std::vector< std::atomic< bool > > streamFirstEventDone_
void NVProfilerService::postModuleGlobalBeginLumi ( edm::GlobalContext const &  gc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 1160 of file NVProfilerService.cc.

References global_domain(), global_modules_, globalFirstEventDone_, edm::ModuleDescription::id(), edm::ModuleCallingContext::moduleDescription(), or, and skipFirstEvent_.

Referenced by NVProfilerService().

1160  {
1162  auto mid = mcc.moduleDescription()->id();
1163  nvtxDomainRangeEnd(global_domain(), global_modules_[mid]);
1164  global_modules_[mid] = nvtxInvalidRangeId;
1165  }
1166 }
nvtxDomainHandle_t global_domain()
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
tbb::concurrent_vector< nvtxRangeId_t > global_modules_
std::atomic< bool > globalFirstEventDone_
void NVProfilerService::postModuleGlobalBeginRun ( edm::GlobalContext const &  gc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 1122 of file NVProfilerService.cc.

References global_domain(), global_modules_, globalFirstEventDone_, edm::ModuleDescription::id(), edm::ModuleCallingContext::moduleDescription(), or, and skipFirstEvent_.

Referenced by NVProfilerService().

1122  {
1124  auto mid = mcc.moduleDescription()->id();
1125  nvtxDomainRangeEnd(global_domain(), global_modules_[mid]);
1126  global_modules_[mid] = nvtxInvalidRangeId;
1127  }
1128 }
nvtxDomainHandle_t global_domain()
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
tbb::concurrent_vector< nvtxRangeId_t > global_modules_
std::atomic< bool > globalFirstEventDone_
void NVProfilerService::postModuleGlobalEndLumi ( edm::GlobalContext const &  gc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 1179 of file NVProfilerService.cc.

References global_domain(), global_modules_, globalFirstEventDone_, edm::ModuleDescription::id(), edm::ModuleCallingContext::moduleDescription(), or, and skipFirstEvent_.

Referenced by NVProfilerService().

1179  {
1181  auto mid = mcc.moduleDescription()->id();
1182  nvtxDomainRangeEnd(global_domain(), global_modules_[mid]);
1183  global_modules_[mid] = nvtxInvalidRangeId;
1184  }
1185 }
nvtxDomainHandle_t global_domain()
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
tbb::concurrent_vector< nvtxRangeId_t > global_modules_
std::atomic< bool > globalFirstEventDone_
void NVProfilerService::postModuleGlobalEndRun ( edm::GlobalContext const &  gc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 1141 of file NVProfilerService.cc.

References global_domain(), global_modules_, globalFirstEventDone_, edm::ModuleDescription::id(), edm::ModuleCallingContext::moduleDescription(), or, and skipFirstEvent_.

Referenced by NVProfilerService().

1141  {
1143  auto mid = mcc.moduleDescription()->id();
1144  nvtxDomainRangeEnd(global_domain(), global_modules_[mid]);
1145  global_modules_[mid] = nvtxInvalidRangeId;
1146  }
1147 }
nvtxDomainHandle_t global_domain()
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
tbb::concurrent_vector< nvtxRangeId_t > global_modules_
std::atomic< bool > globalFirstEventDone_
void NVProfilerService::postModuleStreamBeginLumi ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 1080 of file NVProfilerService.cc.

References edm::ModuleDescription::id(), edm::ModuleCallingContext::moduleDescription(), or, skipFirstEvent_, stream_domain(), stream_modules_, streamFirstEventDone_, and edm::StreamContext::streamID().

Referenced by NVProfilerService().

1080  {
1081  auto sid = sc.streamID();
1082  if (not skipFirstEvent_ or streamFirstEventDone_[sid]) {
1083  auto mid = mcc.moduleDescription()->id();
1084  nvtxDomainRangeEnd(stream_domain(sid), stream_modules_[sid][mid]);
1085  stream_modules_[sid][mid] = nvtxInvalidRangeId;
1086  }
1087 }
std::vector< std::vector< nvtxRangeId_t > > stream_modules_
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
nvtxDomainHandle_t stream_domain(unsigned int sid)
std::vector< std::atomic< bool > > streamFirstEventDone_
void NVProfilerService::postModuleStreamBeginRun ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 1036 of file NVProfilerService.cc.

References edm::ModuleDescription::id(), edm::ModuleCallingContext::moduleDescription(), or, skipFirstEvent_, stream_domain(), stream_modules_, streamFirstEventDone_, and edm::StreamContext::streamID().

Referenced by NVProfilerService().

1036  {
1037  auto sid = sc.streamID();
1038  if (not skipFirstEvent_ or streamFirstEventDone_[sid]) {
1039  auto mid = mcc.moduleDescription()->id();
1040  nvtxDomainRangeEnd(stream_domain(sid), stream_modules_[sid][mid]);
1041  stream_modules_[sid][mid] = nvtxInvalidRangeId;
1042  }
1043 }
std::vector< std::vector< nvtxRangeId_t > > stream_modules_
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
nvtxDomainHandle_t stream_domain(unsigned int sid)
std::vector< std::atomic< bool > > streamFirstEventDone_
void NVProfilerService::postModuleStreamEndLumi ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 1102 of file NVProfilerService.cc.

References edm::ModuleDescription::id(), edm::ModuleCallingContext::moduleDescription(), or, skipFirstEvent_, stream_domain(), stream_modules_, streamFirstEventDone_, and edm::StreamContext::streamID().

Referenced by NVProfilerService().

1102  {
1103  auto sid = sc.streamID();
1104  if (not skipFirstEvent_ or streamFirstEventDone_[sid]) {
1105  auto mid = mcc.moduleDescription()->id();
1106  nvtxDomainRangeEnd(stream_domain(sid), stream_modules_[sid][mid]);
1107  stream_modules_[sid][mid] = nvtxInvalidRangeId;
1108  }
1109 }
std::vector< std::vector< nvtxRangeId_t > > stream_modules_
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
nvtxDomainHandle_t stream_domain(unsigned int sid)
std::vector< std::atomic< bool > > streamFirstEventDone_
void NVProfilerService::postModuleStreamEndRun ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 1058 of file NVProfilerService.cc.

References edm::ModuleDescription::id(), edm::ModuleCallingContext::moduleDescription(), or, skipFirstEvent_, stream_domain(), stream_modules_, streamFirstEventDone_, and edm::StreamContext::streamID().

Referenced by NVProfilerService().

1058  {
1059  auto sid = sc.streamID();
1060  if (not skipFirstEvent_ or streamFirstEventDone_[sid]) {
1061  auto mid = mcc.moduleDescription()->id();
1062  nvtxDomainRangeEnd(stream_domain(sid), stream_modules_[sid][mid]);
1063  stream_modules_[sid][mid] = nvtxInvalidRangeId;
1064  }
1065 }
std::vector< std::vector< nvtxRangeId_t > > stream_modules_
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
nvtxDomainHandle_t stream_domain(unsigned int sid)
std::vector< std::atomic< bool > > streamFirstEventDone_
void NVProfilerService::postOpenFile ( std::string const &  lfn,
bool   
)

Definition at line 625 of file NVProfilerService.cc.

References global_domain(), globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

625  {
627  nvtxDomainRangePop(global_domain());
628  }
629 }
nvtxDomainHandle_t global_domain()
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
std::atomic< bool > globalFirstEventDone_
void NVProfilerService::postPathEvent ( edm::StreamContext const &  sc,
edm::PathContext const &  pc,
edm::HLTPathStatus const &  hlts 
)

Definition at line 841 of file NVProfilerService.cc.

References global_domain(), or, edm::PathContext::pathName(), alignCSCRings::s, skipFirstEvent_, streamFirstEventDone_, and edm::StreamContext::streamID().

Referenced by NVProfilerService().

841  {
842  auto sid = sc.streamID();
844  nvtxDomainMark(global_domain(), ("after path "s + pc.pathName()).c_str());
845  }
846 }
nvtxDomainHandle_t global_domain()
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
std::vector< std::atomic< bool > > streamFirstEventDone_
void NVProfilerService::postSourceConstruction ( edm::ModuleDescription const &  desc)

Definition at line 1199 of file NVProfilerService.cc.

References DEFINE_FWK_SERVICE, global_domain(), global_modules_, edm::ModuleDescription::id(), and skipFirstEvent_.

Referenced by NVProfilerService().

1199  {
1200  if (not skipFirstEvent_) {
1201  auto mid = desc.id();
1202  nvtxDomainRangeEnd(global_domain(), global_modules_[mid]);
1203  global_modules_[mid] = nvtxInvalidRangeId;
1204  }
1205 }
nvtxDomainHandle_t global_domain()
tbb::concurrent_vector< nvtxRangeId_t > global_modules_
void NVProfilerService::postSourceEvent ( edm::StreamID  sid)

Definition at line 583 of file NVProfilerService.cc.

References or, skipFirstEvent_, stream_domain(), and streamFirstEventDone_.

Referenced by NVProfilerService().

583  {
585  nvtxDomainRangePop(stream_domain(sid));
586  }
587 }
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
nvtxDomainHandle_t stream_domain(unsigned int sid)
std::vector< std::atomic< bool > > streamFirstEventDone_
void NVProfilerService::postSourceLumi ( edm::LuminosityBlockIndex  index)

Definition at line 597 of file NVProfilerService.cc.

References global_domain(), globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

597  {
599  nvtxDomainRangePop(global_domain());
600  }
601 }
nvtxDomainHandle_t global_domain()
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
std::atomic< bool > globalFirstEventDone_
void NVProfilerService::postSourceRun ( edm::RunIndex  index)

Definition at line 611 of file NVProfilerService.cc.

References global_domain(), globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

611  {
613  nvtxDomainRangePop(global_domain());
614  }
615 }
nvtxDomainHandle_t global_domain()
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
std::atomic< bool > globalFirstEventDone_
void NVProfilerService::postStreamBeginLumi ( edm::StreamContext const &  sc)

Definition at line 786 of file NVProfilerService.cc.

References or, skipFirstEvent_, stream_domain(), streamFirstEventDone_, and edm::StreamContext::streamID().

Referenced by NVProfilerService().

786  {
787  auto sid = sc.streamID();
789  nvtxDomainRangePop(stream_domain(sid));
790  }
791 }
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
nvtxDomainHandle_t stream_domain(unsigned int sid)
std::vector< std::atomic< bool > > streamFirstEventDone_
void NVProfilerService::postStreamBeginRun ( edm::StreamContext const &  sc)

Definition at line 726 of file NVProfilerService.cc.

References or, skipFirstEvent_, stream_domain(), streamFirstEventDone_, and edm::StreamContext::streamID().

Referenced by NVProfilerService().

726  {
727  auto sid = sc.streamID();
729  nvtxDomainRangePop(stream_domain(sid));
730  }
731 }
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
nvtxDomainHandle_t stream_domain(unsigned int sid)
std::vector< std::atomic< bool > > streamFirstEventDone_
void NVProfilerService::postStreamEndLumi ( edm::StreamContext const &  sc)

Definition at line 800 of file NVProfilerService.cc.

References or, skipFirstEvent_, stream_domain(), streamFirstEventDone_, and edm::StreamContext::streamID().

Referenced by NVProfilerService().

800  {
801  auto sid = sc.streamID();
803  nvtxDomainRangePop(stream_domain(sid));
804  }
805 }
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
nvtxDomainHandle_t stream_domain(unsigned int sid)
std::vector< std::atomic< bool > > streamFirstEventDone_
void NVProfilerService::postStreamEndRun ( edm::StreamContext const &  sc)

Definition at line 742 of file NVProfilerService.cc.

References or, skipFirstEvent_, stream_domain(), streamFirstEventDone_, and edm::StreamContext::streamID().

Referenced by NVProfilerService().

742  {
743  auto sid = sc.streamID();
745  nvtxDomainRangePop(stream_domain(sid));
746  }
747 }
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
nvtxDomainHandle_t stream_domain(unsigned int sid)
std::vector< std::atomic< bool > > streamFirstEventDone_
void NVProfilerService::preallocate ( edm::service::SystemBounds const &  bounds)

Definition at line 525 of file NVProfilerService.cc.

References concurrentStreams_, domains_, event_, global_domain(), globalFirstEventDone_, edm::service::SystemBounds::maxNumberOfConcurrentLuminosityBlocks(), edm::service::SystemBounds::maxNumberOfConcurrentRuns(), edm::service::SystemBounds::maxNumberOfStreams(), edm::service::SystemBounds::maxNumberOfThreads(), eostools::move(), MillePedeFileConverter_cfg::out, skipFirstEvent_, stream_modules_, streamFirstEventDone_, and tmp.

Referenced by NVProfilerService().

525  {
526  std::stringstream out;
527  out << "preallocate: " << bounds.maxNumberOfConcurrentRuns() << " concurrent runs, "
528  << bounds.maxNumberOfConcurrentLuminosityBlocks() << " luminosity sections, "
529  << bounds.maxNumberOfStreams() << " streams\nrunning on"
530  << bounds.maxNumberOfThreads() << " threads";
531  nvtxDomainMark(global_domain(), out.str().c_str());
532 
533  concurrentStreams_ = bounds.maxNumberOfStreams();
534  for (auto& domain: domains_) {
535  domain.allocate_streams(concurrentStreams_);
536  }
537  event_.resize(concurrentStreams_);
538  stream_modules_.resize(concurrentStreams_);
539  if (skipFirstEvent_) {
540  globalFirstEventDone_ = false;
541  std::vector<std::atomic<bool>> tmp(concurrentStreams_);
542  for (auto & element: tmp)
543  std::atomic_init(&element, false);
545  }
546 }
tbb::enumerable_thread_specific< Domains > domains_
nvtxDomainHandle_t global_domain()
std::vector< std::vector< nvtxRangeId_t > > stream_modules_
std::vector< nvtxRangeId_t > event_
unsigned int concurrentStreams_
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
std::atomic< bool > globalFirstEventDone_
std::vector< std::atomic< bool > > streamFirstEventDone_
def move(src, dest)
Definition: eostools.py:511
void NVProfilerService::preBeginJob ( edm::PathsAndConsumesOfModulesBase const &  pathsAndConsumes,
edm::ProcessContext const &  pc 
)

Definition at line 549 of file NVProfilerService.cc.

References edm::PathsAndConsumesOfModulesBase::allModules(), concurrentStreams_, global_domain(), global_modules_, and stream_modules_.

Referenced by NVProfilerService().

549  {
550  nvtxDomainMark(global_domain(), "preBeginJob");
551 
552  // FIXME this probably works only in the absence of subprocesses
553  // size() + 1 because pathsAndConsumes.allModules() does not include the source
554  unsigned int modules = pathsAndConsumes.allModules().size() + 1;
555  global_modules_.resize(modules, nvtxInvalidRangeId);
556  for (unsigned int sid = 0; sid < concurrentStreams_; ++sid) {
557  stream_modules_[sid].resize(modules, nvtxInvalidRangeId);
558  }
559 }
nvtxDomainHandle_t global_domain()
std::vector< std::vector< nvtxRangeId_t > > stream_modules_
tbb::concurrent_vector< nvtxRangeId_t > global_modules_
unsigned int concurrentStreams_
void NVProfilerService::preCloseFile ( std::string const &  lfn,
bool   
)

Definition at line 632 of file NVProfilerService.cc.

References global_domain(), globalFirstEventDone_, or, alignCSCRings::s, and skipFirstEvent_.

Referenced by NVProfilerService().

632  {
634  nvtxDomainRangePush(global_domain(), ("close file "s + lfn).c_str());
635  }
636 }
nvtxDomainHandle_t global_domain()
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
std::atomic< bool > globalFirstEventDone_
void NVProfilerService::preEvent ( edm::StreamContext const &  sc)

Definition at line 808 of file NVProfilerService.cc.

References event_, or, skipFirstEvent_, stream_domain(), streamFirstEventDone_, and edm::StreamContext::streamID().

Referenced by NVProfilerService().

808  {
809  auto sid = sc.streamID();
811  event_[sid] = nvtxDomainRangeStartColor(stream_domain(sid), "event", nvtxDarkGreen);
812  }
813 }
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
std::vector< nvtxRangeId_t > event_
nvtxDomainHandle_t stream_domain(unsigned int sid)
std::vector< std::atomic< bool > > streamFirstEventDone_
void NVProfilerService::preEventReadFromSource ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 998 of file NVProfilerService.cc.

Referenced by NVProfilerService().

998  {
999  /* FIXME
1000  auto sid = sc.streamID();
1001  if (not skipFirstEvent_ or streamFirstEventDone_[sid]) {
1002  auto mid = mcc.moduleDescription()->id();
1003  auto const & label = mcc.moduleDescription()->moduleLabel();
1004  auto const & msg = label + " read from source";
1005  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
1006  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain(sid), msg.c_str(), labelColorLight(label));
1007  }
1008  */
1009 }
void NVProfilerService::preGlobalBeginLumi ( edm::GlobalContext const &  gc)

Definition at line 750 of file NVProfilerService.cc.

References global_domain(), globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

750  {
752  nvtxDomainRangePush(global_domain(), "global begin lumi");
753  }
754 }
nvtxDomainHandle_t global_domain()
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
std::atomic< bool > globalFirstEventDone_
void NVProfilerService::preGlobalBeginRun ( edm::GlobalContext const &  gc)

Definition at line 690 of file NVProfilerService.cc.

References global_domain(), globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

690  {
692  nvtxDomainRangePush(global_domain(), "global begin run");
693  }
694 }
nvtxDomainHandle_t global_domain()
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
std::atomic< bool > globalFirstEventDone_
void NVProfilerService::preGlobalEndLumi ( edm::GlobalContext const &  gc)

Definition at line 764 of file NVProfilerService.cc.

References global_domain(), globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

764  {
766  nvtxDomainRangePush(global_domain(), "global end lumi");
767  }
768 }
nvtxDomainHandle_t global_domain()
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
std::atomic< bool > globalFirstEventDone_
void NVProfilerService::preGlobalEndRun ( edm::GlobalContext const &  gc)

Definition at line 704 of file NVProfilerService.cc.

References global_domain(), globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

704  {
706  nvtxDomainRangePush(global_domain(), "global end run");
707  }
708 }
nvtxDomainHandle_t global_domain()
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
std::atomic< bool > globalFirstEventDone_
void NVProfilerService::preModuleBeginJob ( edm::ModuleDescription const &  desc)

Definition at line 891 of file NVProfilerService.cc.

References global_domain(), global_modules_, edm::ModuleDescription::id(), label, labelColor(), edm::ModuleDescription::moduleLabel(), mps_check::msg, and skipFirstEvent_.

Referenced by NVProfilerService().

891  {
892  if (not skipFirstEvent_) {
893  auto mid = desc.id();
894  auto const & label = desc.moduleLabel();
895  auto const & msg = label + " begin job";
896  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain(), msg.c_str(), labelColor(label));
897  }
898 }
nvtxDomainHandle_t global_domain()
char const * label
uint32_t labelColor(std::string const &label) const
tbb::concurrent_vector< nvtxRangeId_t > global_modules_
tuple msg
Definition: mps_check.py:279
void NVProfilerService::preModuleBeginStream ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 646 of file NVProfilerService.cc.

References edm::ModuleDescription::id(), label, labelColor(), edm::ModuleCallingContext::moduleDescription(), edm::ModuleDescription::moduleLabel(), mps_check::msg, or, skipFirstEvent_, stream_domain(), stream_modules_, streamFirstEventDone_, and edm::StreamContext::streamID().

Referenced by NVProfilerService().

646  {
647  auto sid = sc.streamID();
649  auto mid = mcc.moduleDescription()->id();
650  auto const & label = mcc.moduleDescription()->moduleLabel();
651  auto const & msg = label + " begin stream";
652  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
653  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain(sid), msg.c_str(), labelColor(label));
654  }
655 }
std::vector< std::vector< nvtxRangeId_t > > stream_modules_
char const * label
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
uint32_t labelColor(std::string const &label) const
tuple msg
Definition: mps_check.py:279
nvtxDomainHandle_t stream_domain(unsigned int sid)
std::vector< std::atomic< bool > > streamFirstEventDone_
void NVProfilerService::preModuleConstruction ( edm::ModuleDescription const &  desc)

Definition at line 871 of file NVProfilerService.cc.

References global_domain(), global_modules_, edm::ModuleDescription::id(), label, labelColor(), edm::ModuleDescription::moduleLabel(), mps_check::msg, and skipFirstEvent_.

Referenced by NVProfilerService().

871  {
872  if (not skipFirstEvent_) {
873  auto mid = desc.id();
874  global_modules_.grow_to_at_least(mid+1);
875  auto const & label = desc.moduleLabel();
876  auto const & msg = label + " construction";
877  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain(), msg.c_str(), labelColor(label));
878  }
879 }
nvtxDomainHandle_t global_domain()
char const * label
uint32_t labelColor(std::string const &label) const
tbb::concurrent_vector< nvtxRangeId_t > global_modules_
tuple msg
Definition: mps_check.py:279
void NVProfilerService::preModuleEndJob ( edm::ModuleDescription const &  desc)

Definition at line 910 of file NVProfilerService.cc.

References global_domain(), global_modules_, globalFirstEventDone_, edm::ModuleDescription::id(), label, labelColor(), edm::ModuleDescription::moduleLabel(), mps_check::msg, or, and skipFirstEvent_.

Referenced by NVProfilerService().

910  {
912  auto mid = desc.id();
913  auto const & label = desc.moduleLabel();
914  auto const & msg = label + " end job";
915  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain(), msg.c_str(), labelColor(label));
916  }
917 }
nvtxDomainHandle_t global_domain()
char const * label
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
uint32_t labelColor(std::string const &label) const
tbb::concurrent_vector< nvtxRangeId_t > global_modules_
tuple msg
Definition: mps_check.py:279
std::atomic< bool > globalFirstEventDone_
void NVProfilerService::preModuleEndStream ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 668 of file NVProfilerService.cc.

References edm::ModuleDescription::id(), label, labelColor(), edm::ModuleCallingContext::moduleDescription(), edm::ModuleDescription::moduleLabel(), mps_check::msg, or, skipFirstEvent_, stream_domain(), stream_modules_, streamFirstEventDone_, and edm::StreamContext::streamID().

Referenced by NVProfilerService().

668  {
669  auto sid = sc.streamID();
671  auto mid = mcc.moduleDescription()->id();
672  auto const & label = mcc.moduleDescription()->moduleLabel();
673  auto const & msg = label + " end stream";
674  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
675  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain(sid), msg.c_str(), labelColor(label));
676  }
677 }
std::vector< std::vector< nvtxRangeId_t > > stream_modules_
char const * label
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
uint32_t labelColor(std::string const &label) const
tuple msg
Definition: mps_check.py:279
nvtxDomainHandle_t stream_domain(unsigned int sid)
std::vector< std::atomic< bool > > streamFirstEventDone_
void NVProfilerService::preModuleEvent ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 951 of file NVProfilerService.cc.

References edm::ModuleDescription::id(), label, labelColor(), edm::ModuleCallingContext::moduleDescription(), edm::ModuleDescription::moduleLabel(), or, skipFirstEvent_, stream_domain(), stream_modules_, streamFirstEventDone_, and edm::StreamContext::streamID().

Referenced by NVProfilerService().

951  {
952  auto sid = sc.streamID();
954  auto mid = mcc.moduleDescription()->id();
955  auto const & label = mcc.moduleDescription()->moduleLabel();
956  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
957  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain(sid), label.c_str(), labelColor(label));
958  }
959 }
std::vector< std::vector< nvtxRangeId_t > > stream_modules_
char const * label
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
uint32_t labelColor(std::string const &label) const
nvtxDomainHandle_t stream_domain(unsigned int sid)
std::vector< std::atomic< bool > > streamFirstEventDone_
void NVProfilerService::preModuleEventAcquire ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 929 of file NVProfilerService.cc.

References edm::ModuleDescription::id(), label, labelColor(), edm::ModuleCallingContext::moduleDescription(), edm::ModuleDescription::moduleLabel(), mps_check::msg, or, skipFirstEvent_, stream_domain(), stream_modules_, streamFirstEventDone_, and edm::StreamContext::streamID().

Referenced by NVProfilerService().

929  {
930  auto sid = sc.streamID();
932  auto mid = mcc.moduleDescription()->id();
933  auto const & label = mcc.moduleDescription()->moduleLabel();
934  auto const & msg = label + " acquire";
935  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
936  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain(sid), msg.c_str(), labelColor(label));
937  }
938 }
std::vector< std::vector< nvtxRangeId_t > > stream_modules_
char const * label
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
uint32_t labelColor(std::string const &label) const
tuple msg
Definition: mps_check.py:279
nvtxDomainHandle_t stream_domain(unsigned int sid)
std::vector< std::atomic< bool > > streamFirstEventDone_
void NVProfilerService::preModuleEventDelayedGet ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 972 of file NVProfilerService.cc.

Referenced by NVProfilerService().

972  {
973  /* FIXME
974  auto sid = sc.streamID();
975  if (not skipFirstEvent_ or streamFirstEventDone_[sid]) {
976  auto mid = mcc.moduleDescription()->id();
977  auto const & label = mcc.moduleDescription()->moduleLabel();
978  auto const & msg = label + " delayed get";
979  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
980  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain(sid), label.c_str(), labelColorLight(label));
981  }
982  */
983 }
void NVProfilerService::preModuleEventPrefetching ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 849 of file NVProfilerService.cc.

References edm::ModuleDescription::id(), label, labelColorLight(), edm::ModuleCallingContext::moduleDescription(), edm::ModuleDescription::moduleLabel(), mps_check::msg, or, skipFirstEvent_, stream_domain(), stream_modules_, streamFirstEventDone_, and edm::StreamContext::streamID().

Referenced by NVProfilerService().

849  {
850  auto sid = sc.streamID();
852  auto mid = mcc.moduleDescription()->id();
853  auto const & label = mcc.moduleDescription()->moduleLabel();
854  auto const & msg = label + " prefetching";
855  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
856  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain(sid), msg.c_str(), labelColorLight(label));
857  }
858 }
uint32_t labelColorLight(std::string const &label) const
std::vector< std::vector< nvtxRangeId_t > > stream_modules_
char const * label
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
tuple msg
Definition: mps_check.py:279
nvtxDomainHandle_t stream_domain(unsigned int sid)
std::vector< std::atomic< bool > > streamFirstEventDone_
void NVProfilerService::preModuleGlobalBeginLumi ( edm::GlobalContext const &  gc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 1150 of file NVProfilerService.cc.

References global_domain(), global_modules_, globalFirstEventDone_, edm::ModuleDescription::id(), label, labelColor(), edm::ModuleCallingContext::moduleDescription(), edm::ModuleDescription::moduleLabel(), mps_check::msg, or, and skipFirstEvent_.

Referenced by NVProfilerService().

1150  {
1152  auto mid = mcc.moduleDescription()->id();
1153  auto const & label = mcc.moduleDescription()->moduleLabel();
1154  auto const & msg = label + " global begin lumi";
1155  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain(), msg.c_str(), labelColor(label));
1156  }
1157 }
nvtxDomainHandle_t global_domain()
char const * label
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
uint32_t labelColor(std::string const &label) const
tbb::concurrent_vector< nvtxRangeId_t > global_modules_
tuple msg
Definition: mps_check.py:279
std::atomic< bool > globalFirstEventDone_
void NVProfilerService::preModuleGlobalBeginRun ( edm::GlobalContext const &  gc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 1112 of file NVProfilerService.cc.

References global_domain(), global_modules_, globalFirstEventDone_, edm::ModuleDescription::id(), label, labelColor(), edm::ModuleCallingContext::moduleDescription(), edm::ModuleDescription::moduleLabel(), mps_check::msg, or, and skipFirstEvent_.

Referenced by NVProfilerService().

1112  {
1114  auto mid = mcc.moduleDescription()->id();
1115  auto const & label = mcc.moduleDescription()->moduleLabel();
1116  auto const & msg = label + " global begin run";
1117  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain(), msg.c_str(), labelColor(label));
1118  }
1119 }
nvtxDomainHandle_t global_domain()
char const * label
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
uint32_t labelColor(std::string const &label) const
tbb::concurrent_vector< nvtxRangeId_t > global_modules_
tuple msg
Definition: mps_check.py:279
std::atomic< bool > globalFirstEventDone_
void NVProfilerService::preModuleGlobalEndLumi ( edm::GlobalContext const &  gc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 1169 of file NVProfilerService.cc.

References global_domain(), global_modules_, globalFirstEventDone_, edm::ModuleDescription::id(), label, labelColor(), edm::ModuleCallingContext::moduleDescription(), edm::ModuleDescription::moduleLabel(), mps_check::msg, or, and skipFirstEvent_.

Referenced by NVProfilerService().

1169  {
1171  auto mid = mcc.moduleDescription()->id();
1172  auto const & label = mcc.moduleDescription()->moduleLabel();
1173  auto const & msg = label + " global end lumi";
1174  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain(), msg.c_str(), labelColor(label));
1175  }
1176 }
nvtxDomainHandle_t global_domain()
char const * label
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
uint32_t labelColor(std::string const &label) const
tbb::concurrent_vector< nvtxRangeId_t > global_modules_
tuple msg
Definition: mps_check.py:279
std::atomic< bool > globalFirstEventDone_
void NVProfilerService::preModuleGlobalEndRun ( edm::GlobalContext const &  gc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 1131 of file NVProfilerService.cc.

References global_domain(), global_modules_, globalFirstEventDone_, edm::ModuleDescription::id(), label, labelColor(), edm::ModuleCallingContext::moduleDescription(), edm::ModuleDescription::moduleLabel(), mps_check::msg, or, and skipFirstEvent_.

Referenced by NVProfilerService().

1131  {
1133  auto mid = mcc.moduleDescription()->id();
1134  auto const & label = mcc.moduleDescription()->moduleLabel();
1135  auto const & msg = label + " global end run";
1136  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain(), msg.c_str(), labelColor(label));
1137  }
1138 }
nvtxDomainHandle_t global_domain()
char const * label
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
uint32_t labelColor(std::string const &label) const
tbb::concurrent_vector< nvtxRangeId_t > global_modules_
tuple msg
Definition: mps_check.py:279
std::atomic< bool > globalFirstEventDone_
void NVProfilerService::preModuleStreamBeginLumi ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 1068 of file NVProfilerService.cc.

References edm::ModuleDescription::id(), label, labelColor(), edm::ModuleCallingContext::moduleDescription(), edm::ModuleDescription::moduleLabel(), mps_check::msg, or, skipFirstEvent_, stream_domain(), stream_modules_, streamFirstEventDone_, and edm::StreamContext::streamID().

Referenced by NVProfilerService().

1068  {
1069  auto sid = sc.streamID();
1070  if (not skipFirstEvent_ or streamFirstEventDone_[sid]) {
1071  auto mid = mcc.moduleDescription()->id();
1072  auto const & label = mcc.moduleDescription()->moduleLabel();
1073  auto const & msg = label + " stream begin lumi";
1074  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
1075  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain(sid), msg.c_str(), labelColor(label));
1076  }
1077 }
std::vector< std::vector< nvtxRangeId_t > > stream_modules_
char const * label
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
uint32_t labelColor(std::string const &label) const
tuple msg
Definition: mps_check.py:279
nvtxDomainHandle_t stream_domain(unsigned int sid)
std::vector< std::atomic< bool > > streamFirstEventDone_
void NVProfilerService::preModuleStreamBeginRun ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 1024 of file NVProfilerService.cc.

References edm::ModuleDescription::id(), label, labelColor(), edm::ModuleCallingContext::moduleDescription(), edm::ModuleDescription::moduleLabel(), mps_check::msg, or, skipFirstEvent_, stream_domain(), stream_modules_, streamFirstEventDone_, and edm::StreamContext::streamID().

Referenced by NVProfilerService().

1024  {
1025  auto sid = sc.streamID();
1026  if (not skipFirstEvent_ or streamFirstEventDone_[sid]) {
1027  auto mid = mcc.moduleDescription()->id();
1028  auto const & label = mcc.moduleDescription()->moduleLabel();
1029  auto const & msg = label + " stream begin run";
1030  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
1031  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain(sid), msg.c_str(), labelColor(label));
1032  }
1033 }
std::vector< std::vector< nvtxRangeId_t > > stream_modules_
char const * label
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
uint32_t labelColor(std::string const &label) const
tuple msg
Definition: mps_check.py:279
nvtxDomainHandle_t stream_domain(unsigned int sid)
std::vector< std::atomic< bool > > streamFirstEventDone_
void NVProfilerService::preModuleStreamEndLumi ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 1090 of file NVProfilerService.cc.

References edm::ModuleDescription::id(), label, labelColor(), edm::ModuleCallingContext::moduleDescription(), edm::ModuleDescription::moduleLabel(), mps_check::msg, or, skipFirstEvent_, stream_domain(), stream_modules_, streamFirstEventDone_, and edm::StreamContext::streamID().

Referenced by NVProfilerService().

1090  {
1091  auto sid = sc.streamID();
1092  if (not skipFirstEvent_ or streamFirstEventDone_[sid]) {
1093  auto mid = mcc.moduleDescription()->id();
1094  auto const & label = mcc.moduleDescription()->moduleLabel();
1095  auto const & msg = label + " stream end lumi";
1096  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
1097  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain(sid), msg.c_str(), labelColor(label));
1098  }
1099 }
std::vector< std::vector< nvtxRangeId_t > > stream_modules_
char const * label
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
uint32_t labelColor(std::string const &label) const
tuple msg
Definition: mps_check.py:279
nvtxDomainHandle_t stream_domain(unsigned int sid)
std::vector< std::atomic< bool > > streamFirstEventDone_
void NVProfilerService::preModuleStreamEndRun ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 1046 of file NVProfilerService.cc.

References edm::ModuleDescription::id(), label, labelColor(), edm::ModuleCallingContext::moduleDescription(), edm::ModuleDescription::moduleLabel(), mps_check::msg, or, skipFirstEvent_, stream_domain(), stream_modules_, streamFirstEventDone_, and edm::StreamContext::streamID().

Referenced by NVProfilerService().

1046  {
1047  auto sid = sc.streamID();
1048  if (not skipFirstEvent_ or streamFirstEventDone_[sid]) {
1049  auto mid = mcc.moduleDescription()->id();
1050  auto const & label = mcc.moduleDescription()->moduleLabel();
1051  auto const & msg = label + " stream end run";
1052  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
1053  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain(sid), msg.c_str(), labelColor(label));
1054  }
1055 }
std::vector< std::vector< nvtxRangeId_t > > stream_modules_
char const * label
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
uint32_t labelColor(std::string const &label) const
tuple msg
Definition: mps_check.py:279
nvtxDomainHandle_t stream_domain(unsigned int sid)
std::vector< std::atomic< bool > > streamFirstEventDone_
void NVProfilerService::preOpenFile ( std::string const &  lfn,
bool   
)

Definition at line 618 of file NVProfilerService.cc.

References global_domain(), globalFirstEventDone_, or, alignCSCRings::s, and skipFirstEvent_.

Referenced by NVProfilerService().

618  {
620  nvtxDomainRangePush(global_domain(), ("open file "s + lfn).c_str());
621  }
622 }
nvtxDomainHandle_t global_domain()
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
std::atomic< bool > globalFirstEventDone_
void NVProfilerService::prePathEvent ( edm::StreamContext const &  sc,
edm::PathContext const &  pc 
)

Definition at line 833 of file NVProfilerService.cc.

References global_domain(), or, edm::PathContext::pathName(), alignCSCRings::s, skipFirstEvent_, streamFirstEventDone_, and edm::StreamContext::streamID().

Referenced by NVProfilerService().

833  {
834  auto sid = sc.streamID();
836  nvtxDomainMark(global_domain(), ("before path "s + pc.pathName()).c_str());
837  }
838 }
nvtxDomainHandle_t global_domain()
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
std::vector< std::atomic< bool > > streamFirstEventDone_
void NVProfilerService::preSourceConstruction ( edm::ModuleDescription const &  desc)

Definition at line 1188 of file NVProfilerService.cc.

References global_domain(), global_modules_, edm::ModuleDescription::id(), label, labelColor(), edm::ModuleDescription::moduleLabel(), mps_check::msg, and skipFirstEvent_.

Referenced by NVProfilerService().

1188  {
1189  if (not skipFirstEvent_) {
1190  auto mid = desc.id();
1191  global_modules_.grow_to_at_least(mid+1);
1192  auto const & label = desc.moduleLabel();
1193  auto const & msg = label + " construction";
1194  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain(), msg.c_str(), labelColor(label));
1195  }
1196 }
nvtxDomainHandle_t global_domain()
char const * label
uint32_t labelColor(std::string const &label) const
tbb::concurrent_vector< nvtxRangeId_t > global_modules_
tuple msg
Definition: mps_check.py:279
void NVProfilerService::preSourceEvent ( edm::StreamID  sid)

Definition at line 576 of file NVProfilerService.cc.

References or, skipFirstEvent_, stream_domain(), and streamFirstEventDone_.

Referenced by NVProfilerService().

576  {
578  nvtxDomainRangePush(stream_domain(sid), "source");
579  }
580 }
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
nvtxDomainHandle_t stream_domain(unsigned int sid)
std::vector< std::atomic< bool > > streamFirstEventDone_
void NVProfilerService::preSourceLumi ( edm::LuminosityBlockIndex  index)

Definition at line 590 of file NVProfilerService.cc.

References global_domain(), globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

590  {
592  nvtxDomainRangePush(global_domain(), "source lumi");
593  }
594 }
nvtxDomainHandle_t global_domain()
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
std::atomic< bool > globalFirstEventDone_
void NVProfilerService::preSourceRun ( edm::RunIndex  index)

Definition at line 604 of file NVProfilerService.cc.

References global_domain(), globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

604  {
606  nvtxDomainRangePush(global_domain(), "source run");
607  }
608 }
nvtxDomainHandle_t global_domain()
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
std::atomic< bool > globalFirstEventDone_
void NVProfilerService::preStreamBeginLumi ( edm::StreamContext const &  sc)

Definition at line 778 of file NVProfilerService.cc.

References or, skipFirstEvent_, stream_domain(), streamFirstEventDone_, and edm::StreamContext::streamID().

Referenced by NVProfilerService().

778  {
779  auto sid = sc.streamID();
781  nvtxDomainRangePush(stream_domain(sid), "stream begin lumi");
782  }
783 }
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
nvtxDomainHandle_t stream_domain(unsigned int sid)
std::vector< std::atomic< bool > > streamFirstEventDone_
void NVProfilerService::preStreamBeginRun ( edm::StreamContext const &  sc)

Definition at line 718 of file NVProfilerService.cc.

References or, skipFirstEvent_, stream_domain(), streamFirstEventDone_, and edm::StreamContext::streamID().

Referenced by NVProfilerService().

718  {
719  auto sid = sc.streamID();
721  nvtxDomainRangePush(stream_domain(sid), "stream begin run");
722  }
723 }
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
nvtxDomainHandle_t stream_domain(unsigned int sid)
std::vector< std::atomic< bool > > streamFirstEventDone_
void NVProfilerService::preStreamEndLumi ( edm::StreamContext const &  sc)

Definition at line 794 of file NVProfilerService.cc.

References stream_domain(), and edm::StreamContext::streamID().

Referenced by NVProfilerService().

794  {
795  auto sid = sc.streamID();
796  nvtxDomainRangePush(stream_domain(sid), "stream end lumi");
797 }
nvtxDomainHandle_t stream_domain(unsigned int sid)
void NVProfilerService::preStreamEndRun ( edm::StreamContext const &  sc)

Definition at line 734 of file NVProfilerService.cc.

References or, skipFirstEvent_, stream_domain(), streamFirstEventDone_, and edm::StreamContext::streamID().

Referenced by NVProfilerService().

734  {
735  auto sid = sc.streamID();
737  nvtxDomainRangePush(stream_domain(sid), "stream end run");
738  }
739 }
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
nvtxDomainHandle_t stream_domain(unsigned int sid)
std::vector< std::atomic< bool > > streamFirstEventDone_
nvtxDomainHandle_t NVProfilerService::stream_domain ( unsigned int  sid)
inlineprivate

Friends And Related Function Documentation

friend struct Domains
friend

Definition at line 329 of file NVProfilerService.cc.

Member Data Documentation

unsigned int NVProfilerService::concurrentStreams_
private
tbb::enumerable_thread_specific<Domains> NVProfilerService::domains_
private

Definition at line 331 of file NVProfilerService.cc.

Referenced by preallocate().

std::vector<nvtxRangeId_t> NVProfilerService::event_
private

Definition at line 298 of file NVProfilerService.cc.

Referenced by postEvent(), preallocate(), and preEvent().

tbb::concurrent_vector<nvtxRangeId_t> NVProfilerService::global_modules_
private
std::atomic<bool> NVProfilerService::globalFirstEventDone_ = false
private
std::vector<std::string> NVProfilerService::highlightModules_
private

Definition at line 291 of file NVProfilerService.cc.

Referenced by NVProfilerService().

const bool NVProfilerService::showModulePrefetching_
private

Definition at line 292 of file NVProfilerService.cc.

Referenced by NVProfilerService().

bool NVProfilerService::skipFirstEvent_
private

Definition at line 293 of file NVProfilerService.cc.

Referenced by NVProfilerService(), postBeginJob(), postCloseFile(), postEndJob(), postEvent(), postGlobalBeginLumi(), postGlobalBeginRun(), postGlobalEndLumi(), postGlobalEndRun(), postModuleBeginJob(), postModuleBeginStream(), postModuleConstruction(), postModuleEndJob(), postModuleEndStream(), postModuleEvent(), postModuleEventAcquire(), postModuleEventPrefetching(), postModuleGlobalBeginLumi(), postModuleGlobalBeginRun(), postModuleGlobalEndLumi(), postModuleGlobalEndRun(), postModuleStreamBeginLumi(), postModuleStreamBeginRun(), postModuleStreamEndLumi(), postModuleStreamEndRun(), postOpenFile(), postPathEvent(), postSourceConstruction(), postSourceEvent(), postSourceLumi(), postSourceRun(), postStreamBeginLumi(), postStreamBeginRun(), postStreamEndLumi(), postStreamEndRun(), preallocate(), preCloseFile(), preEvent(), preGlobalBeginLumi(), preGlobalBeginRun(), preGlobalEndLumi(), preGlobalEndRun(), preModuleBeginJob(), preModuleBeginStream(), preModuleConstruction(), preModuleEndJob(), preModuleEndStream(), preModuleEvent(), preModuleEventAcquire(), preModuleEventPrefetching(), preModuleGlobalBeginLumi(), preModuleGlobalBeginRun(), preModuleGlobalEndLumi(), preModuleGlobalEndRun(), preModuleStreamBeginLumi(), preModuleStreamBeginRun(), preModuleStreamEndLumi(), preModuleStreamEndRun(), preOpenFile(), prePathEvent(), preSourceConstruction(), preSourceEvent(), preSourceLumi(), preSourceRun(), preStreamBeginLumi(), preStreamBeginRun(), and preStreamEndRun().

std::vector<std::vector<nvtxRangeId_t> > NVProfilerService::stream_modules_
private
std::vector<std::atomic<bool> > NVProfilerService::streamFirstEventDone_
private