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 123 of file NVProfilerService.cc.

Constructor & Destructor Documentation

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

Definition at line 333 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().

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

494 { cudaProfilerStop(); }

Member Function Documentation

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

Definition at line 496 of file NVProfilerService.cc.

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

496  {
498  desc.addUntracked<std::vector<std::string>>("highlightModules", {})->setComment("");
499  desc.addUntracked<bool>("showModulePrefetching", false)
500  ->setComment("Show the stack of dependencies that requested to run a module.");
501  desc.addUntracked<bool>("skipFirstEvent", false)
502  ->setComment(
503  "Start profiling after the first event has completed.\nWith multiple streams, ignore transitions belonging "
504  "to events started in parallel to the first event.\nRequires running nvprof with the '--profile-from-start "
505  "off' option.");
506  descriptions.add("NVProfilerService", desc);
507  descriptions.setComment(R"(This Service provides CMSSW-aware annotations to nvprof/nvvm.
508 
509 Notes on nvprof options:
510  - the option '--profile-from-start off' should be used if skipFirstEvent is True.
511  - the option '--cpu-profiling on' currently results in cmsRun being stuck at the beginning of the job.
512  - the option '--cpu-thread-tracing on' is not compatible with jemalloc, and should only be used with cmsRunGlibC.)");
513 }
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 276 of file NVProfilerService.cc.

References label.

276  {
277  return (std::binary_search(highlightModules_.begin(), highlightModules_.end(), label));
278  }
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 282 of file NVProfilerService.cc.

Referenced by preModuleEventPrefetching().

282  {
283  return highlight(label) ? nvtxLightAmber : nvtxLightGreen;
284  }
bool highlight(std::string const &label) const
char const * label
void NVProfilerService::postBeginJob ( )

Definition at line 550 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

550  {
552  nvtxDomainMark(global_domain(), "postBeginJob");
553  }
554 }
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 616 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

616  {
618  nvtxDomainRangePop(global_domain());
619  }
620 }
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 556 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

556  {
558  nvtxDomainMark(global_domain(), "postEndJob");
559  }
560 }
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 771 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

771  {
772  auto sid = sc.streamID();
774  nvtxDomainRangeEnd(stream_domain(sid), event_[sid]);
775  event_[sid] = nvtxInvalidRangeId;
776  } else {
777  streamFirstEventDone_[sid] = true;
778  auto identity = [](bool x) { return x; };
779  if (std::all_of(streamFirstEventDone_.begin(), streamFirstEventDone_.end(), identity)) {
780  bool expected = false;
781  if (globalFirstEventDone_.compare_exchange_strong(expected, true))
782  cudaProfilerStart();
783  }
784  }
785 }
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 951 of file NVProfilerService.cc.

Referenced by NVProfilerService().

951  {
952  /* FIXME
953  auto sid = sc.streamID();
954  if (not skipFirstEvent_ or streamFirstEventDone_[sid]) {
955  auto mid = mcc.moduleDescription()->id();
956  nvtxDomainRangeEnd(stream_domain(sid), stream_modules_[sid][mid]);
957  stream_modules_[sid][mid] = nvtxInvalidRangeId;
958  }
959  */
960 }
void NVProfilerService::postGlobalBeginLumi ( edm::GlobalContext const &  gc)

Definition at line 720 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

720  {
722  nvtxDomainRangePop(global_domain());
723  }
724 }
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 668 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

668  {
670  nvtxDomainRangePop(global_domain());
671  }
672 }
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 732 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

732  {
734  nvtxDomainRangePop(global_domain());
735  }
736 }
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 680 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

680  {
682  nvtxDomainRangePop(global_domain());
683  }
684 }
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 850 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

850  {
851  if (not skipFirstEvent_) {
852  auto mid = desc.id();
853  nvtxDomainRangeEnd(global_domain(), global_modules_[mid]);
854  global_modules_[mid] = nvtxInvalidRangeId;
855  }
856 }
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 633 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().

633  {
634  auto sid = sc.streamID();
636  auto mid = mcc.moduleDescription()->id();
637  nvtxDomainRangeEnd(stream_domain(sid), stream_modules_[sid][mid]);
638  stream_modules_[sid][mid] = nvtxInvalidRangeId;
639  }
640 }
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 833 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

833  {
834  if (not skipFirstEvent_) {
835  auto mid = desc.id();
836  nvtxDomainRangeEnd(global_domain(), global_modules_[mid]);
837  global_modules_[mid] = nvtxInvalidRangeId;
838  }
839 }
nvtxDomainHandle_t global_domain()
tbb::concurrent_vector< nvtxRangeId_t > global_modules_
void NVProfilerService::postModuleEndJob ( edm::ModuleDescription const &  desc)

Definition at line 867 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

867  {
869  auto mid = desc.id();
870  nvtxDomainRangeEnd(global_domain(), global_modules_[mid]);
871  global_modules_[mid] = nvtxInvalidRangeId;
872  }
873 }
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 653 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().

653  {
654  auto sid = sc.streamID();
656  auto mid = mcc.moduleDescription()->id();
657  nvtxDomainRangeEnd(stream_domain(sid), stream_modules_[sid][mid]);
658  stream_modules_[sid][mid] = nvtxInvalidRangeId;
659  }
660 }
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 905 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().

905  {
906  auto sid = sc.streamID();
908  auto mid = mcc.moduleDescription()->id();
909  nvtxDomainRangeEnd(stream_domain(sid), stream_modules_[sid][mid]);
910  stream_modules_[sid][mid] = nvtxInvalidRangeId;
911  }
912 }
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 886 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().

886  {
887  auto sid = sc.streamID();
889  auto mid = mcc.moduleDescription()->id();
890  nvtxDomainRangeEnd(stream_domain(sid), stream_modules_[sid][mid]);
891  stream_modules_[sid][mid] = nvtxInvalidRangeId;
892  }
893 }
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 927 of file NVProfilerService.cc.

Referenced by NVProfilerService().

927  {
928  /* FIXME
929  auto sid = sc.streamID();
930  if (not skipFirstEvent_ or streamFirstEventDone_[sid]) {
931  auto mid = mcc.moduleDescription()->id();
932  nvtxDomainRangeEnd(stream_domain(sid), stream_modules_[sid][mid]);
933  stream_modules_[sid][mid] = nvtxInvalidRangeId;
934  }
935  */
936 }
void NVProfilerService::postModuleEventPrefetching ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 814 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().

814  {
815  auto sid = sc.streamID();
817  auto mid = mcc.moduleDescription()->id();
818  nvtxDomainRangeEnd(stream_domain(sid), stream_modules_[sid][mid]);
819  stream_modules_[sid][mid] = nvtxInvalidRangeId;
820  }
821 }
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 1085 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

1085  {
1087  auto mid = mcc.moduleDescription()->id();
1088  nvtxDomainRangeEnd(global_domain(), global_modules_[mid]);
1089  global_modules_[mid] = nvtxInvalidRangeId;
1090  }
1091 }
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 1051 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

1051  {
1053  auto mid = mcc.moduleDescription()->id();
1054  nvtxDomainRangeEnd(global_domain(), global_modules_[mid]);
1055  global_modules_[mid] = nvtxInvalidRangeId;
1056  }
1057 }
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 1102 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

1102  {
1104  auto mid = mcc.moduleDescription()->id();
1105  nvtxDomainRangeEnd(global_domain(), global_modules_[mid]);
1106  global_modules_[mid] = nvtxInvalidRangeId;
1107  }
1108 }
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 1068 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

1068  {
1070  auto mid = mcc.moduleDescription()->id();
1071  nvtxDomainRangeEnd(global_domain(), global_modules_[mid]);
1072  global_modules_[mid] = nvtxInvalidRangeId;
1073  }
1074 }
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 1013 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().

1013  {
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 }
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 973 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().

973  {
974  auto sid = sc.streamID();
976  auto mid = mcc.moduleDescription()->id();
977  nvtxDomainRangeEnd(stream_domain(sid), stream_modules_[sid][mid]);
978  stream_modules_[sid][mid] = nvtxInvalidRangeId;
979  }
980 }
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 1033 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().

1033  {
1034  auto sid = sc.streamID();
1035  if (not skipFirstEvent_ or streamFirstEventDone_[sid]) {
1036  auto mid = mcc.moduleDescription()->id();
1037  nvtxDomainRangeEnd(stream_domain(sid), stream_modules_[sid][mid]);
1038  stream_modules_[sid][mid] = nvtxInvalidRangeId;
1039  }
1040 }
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 993 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().

993  {
994  auto sid = sc.streamID();
996  auto mid = mcc.moduleDescription()->id();
997  nvtxDomainRangeEnd(stream_domain(sid), stream_modules_[sid][mid]);
998  stream_modules_[sid][mid] = nvtxInvalidRangeId;
999  }
1000 }
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 604 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

604  {
606  nvtxDomainRangePop(global_domain());
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::postPathEvent ( edm::StreamContext const &  sc,
edm::PathContext const &  pc,
edm::HLTPathStatus const &  hlts 
)

Definition at line 794 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

796  {
797  auto sid = sc.streamID();
799  nvtxDomainMark(global_domain(), ("after path "s + pc.pathName()).c_str());
800  }
801 }
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 1120 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

1120  {
1121  if (not skipFirstEvent_) {
1122  auto mid = desc.id();
1123  nvtxDomainRangeEnd(global_domain(), global_modules_[mid]);
1124  global_modules_[mid] = nvtxInvalidRangeId;
1125  }
1126 }
nvtxDomainHandle_t global_domain()
tbb::concurrent_vector< nvtxRangeId_t > global_modules_
void NVProfilerService::postSourceEvent ( edm::StreamID  sid)

Definition at line 568 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

568  {
570  nvtxDomainRangePop(stream_domain(sid));
571  }
572 }
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 580 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

580  {
582  nvtxDomainRangePop(global_domain());
583  }
584 }
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 592 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

592  {
594  nvtxDomainRangePop(global_domain());
595  }
596 }
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 745 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

745  {
746  auto sid = sc.streamID();
748  nvtxDomainRangePop(stream_domain(sid));
749  }
750 }
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 693 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

693  {
694  auto sid = sc.streamID();
696  nvtxDomainRangePop(stream_domain(sid));
697  }
698 }
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 757 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

757  {
758  auto sid = sc.streamID();
760  nvtxDomainRangePop(stream_domain(sid));
761  }
762 }
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 707 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

707  {
708  auto sid = sc.streamID();
710  nvtxDomainRangePop(stream_domain(sid));
711  }
712 }
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 515 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 createJobs::tmp.

Referenced by NVProfilerService().

515  {
516  std::stringstream out;
517  out << "preallocate: " << bounds.maxNumberOfConcurrentRuns() << " concurrent runs, "
518  << bounds.maxNumberOfConcurrentLuminosityBlocks() << " luminosity sections, " << bounds.maxNumberOfStreams()
519  << " streams\nrunning on" << bounds.maxNumberOfThreads() << " threads";
520  nvtxDomainMark(global_domain(), out.str().c_str());
521 
522  concurrentStreams_ = bounds.maxNumberOfStreams();
523  for (auto& domain : domains_) {
524  domain.allocate_streams(concurrentStreams_);
525  }
526  event_.resize(concurrentStreams_);
527  stream_modules_.resize(concurrentStreams_);
528  if (skipFirstEvent_) {
529  globalFirstEventDone_ = false;
530  std::vector<std::atomic<bool>> tmp(concurrentStreams_);
531  for (auto& element : tmp)
532  std::atomic_init(&element, false);
534  }
535 }
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::atomic< bool > globalFirstEventDone_
std::vector< std::atomic< bool > > streamFirstEventDone_
tmp
align.sh
Definition: createJobs.py:716
def move(src, dest)
Definition: eostools.py:511
void NVProfilerService::preBeginJob ( edm::PathsAndConsumesOfModulesBase const &  pathsAndConsumes,
edm::ProcessContext const &  pc 
)

Definition at line 537 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

538  {
539  nvtxDomainMark(global_domain(), "preBeginJob");
540 
541  // FIXME this probably works only in the absence of subprocesses
542  // size() + 1 because pathsAndConsumes.allModules() does not include the source
543  unsigned int modules = pathsAndConsumes.allModules().size() + 1;
544  global_modules_.resize(modules, nvtxInvalidRangeId);
545  for (unsigned int sid = 0; sid < concurrentStreams_; ++sid) {
546  stream_modules_[sid].resize(modules, nvtxInvalidRangeId);
547  }
548 }
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 610 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

610  {
612  nvtxDomainRangePush(global_domain(), ("close file "s + lfn).c_str());
613  }
614 }
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 764 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

764  {
765  auto sid = sc.streamID();
767  event_[sid] = nvtxDomainRangeStartColor(stream_domain(sid), "event", nvtxDarkGreen);
768  }
769 }
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 938 of file NVProfilerService.cc.

Referenced by NVProfilerService().

938  {
939  /* FIXME
940  auto sid = sc.streamID();
941  if (not skipFirstEvent_ or streamFirstEventDone_[sid]) {
942  auto mid = mcc.moduleDescription()->id();
943  auto const & label = mcc.moduleDescription()->moduleLabel();
944  auto const & msg = label + " read from source";
945  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
946  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain(sid), msg.c_str(), labelColorLight(label));
947  }
948  */
949 }
void NVProfilerService::preGlobalBeginLumi ( edm::GlobalContext const &  gc)

Definition at line 714 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

714  {
716  nvtxDomainRangePush(global_domain(), "global begin lumi");
717  }
718 }
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 662 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

662  {
664  nvtxDomainRangePush(global_domain(), "global begin run");
665  }
666 }
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 726 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

726  {
728  nvtxDomainRangePush(global_domain(), "global end lumi");
729  }
730 }
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 674 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

674  {
676  nvtxDomainRangePush(global_domain(), "global end run");
677  }
678 }
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 841 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().

841  {
842  if (not skipFirstEvent_) {
843  auto mid = desc.id();
844  auto const& label = desc.moduleLabel();
845  auto const& msg = label + " begin job";
846  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain(), msg.c_str(), labelColor(label));
847  }
848 }
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:285
void NVProfilerService::preModuleBeginStream ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 622 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().

622  {
623  auto sid = sc.streamID();
625  auto mid = mcc.moduleDescription()->id();
626  auto const& label = mcc.moduleDescription()->moduleLabel();
627  auto const& msg = label + " begin stream";
628  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
629  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain(sid), msg.c_str(), labelColor(label));
630  }
631 }
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:285
nvtxDomainHandle_t stream_domain(unsigned int sid)
std::vector< std::atomic< bool > > streamFirstEventDone_
void NVProfilerService::preModuleConstruction ( edm::ModuleDescription const &  desc)

Definition at line 823 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().

823  {
824  if (not skipFirstEvent_) {
825  auto mid = desc.id();
826  global_modules_.grow_to_at_least(mid + 1);
827  auto const& label = desc.moduleLabel();
828  auto const& msg = label + " construction";
829  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain(), msg.c_str(), labelColor(label));
830  }
831 }
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:285
void NVProfilerService::preModuleEndJob ( edm::ModuleDescription const &  desc)

Definition at line 858 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().

858  {
860  auto mid = desc.id();
861  auto const& label = desc.moduleLabel();
862  auto const& msg = label + " end job";
863  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain(), msg.c_str(), labelColor(label));
864  }
865 }
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:285
std::atomic< bool > globalFirstEventDone_
void NVProfilerService::preModuleEndStream ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 642 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().

642  {
643  auto sid = sc.streamID();
645  auto mid = mcc.moduleDescription()->id();
646  auto const& label = mcc.moduleDescription()->moduleLabel();
647  auto const& msg = label + " end stream";
648  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
649  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain(sid), msg.c_str(), labelColor(label));
650  }
651 }
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:285
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 895 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().

895  {
896  auto sid = sc.streamID();
898  auto mid = mcc.moduleDescription()->id();
899  auto const& label = mcc.moduleDescription()->moduleLabel();
900  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
901  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain(sid), label.c_str(), labelColor(label));
902  }
903 }
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 875 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().

875  {
876  auto sid = sc.streamID();
878  auto mid = mcc.moduleDescription()->id();
879  auto const& label = mcc.moduleDescription()->moduleLabel();
880  auto const& msg = label + " acquire";
881  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
882  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain(sid), msg.c_str(), labelColor(label));
883  }
884 }
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:285
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 914 of file NVProfilerService.cc.

Referenced by NVProfilerService().

914  {
915  /* FIXME
916  auto sid = sc.streamID();
917  if (not skipFirstEvent_ or streamFirstEventDone_[sid]) {
918  auto mid = mcc.moduleDescription()->id();
919  auto const & label = mcc.moduleDescription()->moduleLabel();
920  auto const & msg = label + " delayed get";
921  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
922  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain(sid), label.c_str(), labelColorLight(label));
923  }
924  */
925 }
void NVProfilerService::preModuleEventPrefetching ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 803 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().

803  {
804  auto sid = sc.streamID();
806  auto mid = mcc.moduleDescription()->id();
807  auto const& label = mcc.moduleDescription()->moduleLabel();
808  auto const& msg = label + " prefetching";
809  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
810  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain(sid), msg.c_str(), labelColorLight(label));
811  }
812 }
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:285
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 1076 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().

1076  {
1078  auto mid = mcc.moduleDescription()->id();
1079  auto const& label = mcc.moduleDescription()->moduleLabel();
1080  auto const& msg = label + " global begin lumi";
1081  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain(), msg.c_str(), labelColor(label));
1082  }
1083 }
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:285
std::atomic< bool > globalFirstEventDone_
void NVProfilerService::preModuleGlobalBeginRun ( edm::GlobalContext const &  gc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 1042 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().

1042  {
1044  auto mid = mcc.moduleDescription()->id();
1045  auto const& label = mcc.moduleDescription()->moduleLabel();
1046  auto const& msg = label + " global begin run";
1047  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain(), msg.c_str(), labelColor(label));
1048  }
1049 }
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:285
std::atomic< bool > globalFirstEventDone_
void NVProfilerService::preModuleGlobalEndLumi ( edm::GlobalContext const &  gc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 1093 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().

1093  {
1095  auto mid = mcc.moduleDescription()->id();
1096  auto const& label = mcc.moduleDescription()->moduleLabel();
1097  auto const& msg = label + " global end lumi";
1098  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain(), msg.c_str(), labelColor(label));
1099  }
1100 }
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:285
std::atomic< bool > globalFirstEventDone_
void NVProfilerService::preModuleGlobalEndRun ( edm::GlobalContext const &  gc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 1059 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().

1059  {
1061  auto mid = mcc.moduleDescription()->id();
1062  auto const& label = mcc.moduleDescription()->moduleLabel();
1063  auto const& msg = label + " global end run";
1064  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain(), msg.c_str(), labelColor(label));
1065  }
1066 }
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:285
std::atomic< bool > globalFirstEventDone_
void NVProfilerService::preModuleStreamBeginLumi ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 1002 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().

1002  {
1003  auto sid = sc.streamID();
1004  if (not skipFirstEvent_ or streamFirstEventDone_[sid]) {
1005  auto mid = mcc.moduleDescription()->id();
1006  auto const& label = mcc.moduleDescription()->moduleLabel();
1007  auto const& msg = label + " stream begin lumi";
1008  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
1009  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain(sid), msg.c_str(), labelColor(label));
1010  }
1011 }
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:285
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 962 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().

962  {
963  auto sid = sc.streamID();
965  auto mid = mcc.moduleDescription()->id();
966  auto const& label = mcc.moduleDescription()->moduleLabel();
967  auto const& msg = label + " stream begin run";
968  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
969  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain(sid), msg.c_str(), labelColor(label));
970  }
971 }
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:285
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 1022 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().

1022  {
1023  auto sid = sc.streamID();
1024  if (not skipFirstEvent_ or streamFirstEventDone_[sid]) {
1025  auto mid = mcc.moduleDescription()->id();
1026  auto const& label = mcc.moduleDescription()->moduleLabel();
1027  auto const& msg = label + " stream end lumi";
1028  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
1029  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain(sid), msg.c_str(), labelColor(label));
1030  }
1031 }
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:285
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 982 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().

982  {
983  auto sid = sc.streamID();
985  auto mid = mcc.moduleDescription()->id();
986  auto const& label = mcc.moduleDescription()->moduleLabel();
987  auto const& msg = label + " stream end run";
988  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
989  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain(sid), msg.c_str(), labelColor(label));
990  }
991 }
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:285
nvtxDomainHandle_t stream_domain(unsigned int sid)
std::vector< std::atomic< bool > > streamFirstEventDone_
void NVProfilerService::preOpenFile ( std::string const &  lfn,
bool   
)

Definition at line 598 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

598  {
600  nvtxDomainRangePush(global_domain(), ("open file "s + lfn).c_str());
601  }
602 }
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 787 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

787  {
788  auto sid = sc.streamID();
790  nvtxDomainMark(global_domain(), ("before path "s + pc.pathName()).c_str());
791  }
792 }
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 1110 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().

1110  {
1111  if (not skipFirstEvent_) {
1112  auto mid = desc.id();
1113  global_modules_.grow_to_at_least(mid + 1);
1114  auto const& label = desc.moduleLabel();
1115  auto const& msg = label + " construction";
1116  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain(), msg.c_str(), labelColor(label));
1117  }
1118 }
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:285
void NVProfilerService::preSourceEvent ( edm::StreamID  sid)

Definition at line 562 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

562  {
564  nvtxDomainRangePush(stream_domain(sid), "source");
565  }
566 }
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 574 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

574  {
576  nvtxDomainRangePush(global_domain(), "source lumi");
577  }
578 }
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 586 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

586  {
588  nvtxDomainRangePush(global_domain(), "source run");
589  }
590 }
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 738 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

738  {
739  auto sid = sc.streamID();
741  nvtxDomainRangePush(stream_domain(sid), "stream begin lumi");
742  }
743 }
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 686 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

686  {
687  auto sid = sc.streamID();
689  nvtxDomainRangePush(stream_domain(sid), "stream begin run");
690  }
691 }
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 752 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

752  {
753  auto sid = sc.streamID();
754  nvtxDomainRangePush(stream_domain(sid), "stream end lumi");
755 }
nvtxDomainHandle_t stream_domain(unsigned int sid)
void NVProfilerService::preStreamEndRun ( edm::StreamContext const &  sc)

Definition at line 700 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

700  {
701  auto sid = sc.streamID();
703  nvtxDomainRangePush(stream_domain(sid), "stream end run");
704  }
705 }
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 324 of file NVProfilerService.cc.

Member Data Documentation

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

Definition at line 326 of file NVProfilerService.cc.

Referenced by preallocate().

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

Definition at line 293 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 286 of file NVProfilerService.cc.

Referenced by NVProfilerService().

const bool NVProfilerService::showModulePrefetching_
private

Definition at line 287 of file NVProfilerService.cc.

Referenced by NVProfilerService().

bool NVProfilerService::skipFirstEvent_
private

Definition at line 288 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