CMS 3D CMS Logo

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

Public Member Functions

 NVProfilerService (const edm::ParameterSet &, edm::ActivityRegistry &)
 
void postBeginJob ()
 
void postCloseFile (std::string const &)
 
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 postModuleDestruction (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 &)
 
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 &)
 
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 preModuleDestruction (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 &)
 
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

bool highlight (std::string const &label) const
 
uint32_t labelColor (std::string const &label) const
 
uint32_t labelColorLight (std::string const &label) const
 

Private Attributes

ProcessCallGraph callgraph_
 
std::vector< nvtxRangeId_t > event_
 
nvtxDomainHandle_t global_domain_
 
tbb::concurrent_vector< nvtxRangeId_t > global_modules_
 
std::atomic< bool > globalFirstEventDone_ = false
 
std::vector< std::string > highlightModules_
 
const bool showModulePrefetching_
 
const bool skipFirstEvent_
 
std::vector< nvtxDomainHandle_t > stream_domain_
 
std::vector< std::vector< nvtxRangeId_t > > stream_modules_
 
std::vector< std::atomic< bool > > streamFirstEventDone_
 

Detailed Description

Definition at line 119 of file NVProfilerService.cc.

Constructor & Destructor Documentation

◆ NVProfilerService()

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

Definition at line 304 of file NVProfilerService.cc.

References ecalDigis_cff::cuda, global_domain_, highlightModules_, or, postBeginJob(), postCloseFile(), postEndJob(), postEvent(), postEventReadFromSource(), postGlobalBeginLumi(), postGlobalBeginRun(), postGlobalEndLumi(), postGlobalEndRun(), postModuleBeginJob(), postModuleBeginStream(), postModuleConstruction(), postModuleDestruction(), 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(), preModuleDestruction(), 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_, jetUpdater_cfi::sort, 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::watchPostModuleDestruction(), 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::watchPreModuleDestruction(), 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().

305  : highlightModules_(config.getUntrackedParameter<std::vector<std::string>>("highlightModules")),
306  showModulePrefetching_(config.getUntrackedParameter<bool>("showModulePrefetching")),
307  skipFirstEvent_(config.getUntrackedParameter<bool>("skipFirstEvent")) {
308  // make sure that CUDA is initialised, and that the CUDAInterface destructor is called after this service's destructor
310  if (not cuda or not cuda->enabled())
311  return;
312 
314 
315  // create the NVTX domain for global EDM transitions
316  global_domain_ = nvtxDomainCreate("EDM Global");
317 
318  // enables profile collection; if profiling is already enabled it has no effect
319  if (not skipFirstEvent_) {
320  cudaProfilerStart();
321  }
322 
324 
325  // these signal pair are NOT guaranteed to be called by the same thread
328 
329  // there is no preEndJob() signal
331 
332  // these signal pair are NOT guaranteed to be called by the same thread
335 
336  // these signal pair are NOT guaranteed to be called by the same thread
339 
340  // these signal pair are NOT guaranteed to be called by the same thread
343 
344  // these signal pair are NOT guaranteed to be called by the same thread
347 
348  // these signal pair are NOT guaranteed to be called by the same thread
351 
352  // these signal pair are NOT guaranteed to be called by the same thread
355 
356  // these signal pair are NOT guaranteed to be called by the same thread
359 
360  // these signal pair are NOT guaranteed to be called by the same thread
363 
364  // these signal pair are NOT guaranteed to be called by the same thread
367 
368  // these signal pair are NOT guaranteed to be called by the same thread
371 
373  // these signal pair are NOT guaranteed to be called by the same thread
376  }
377 
378  // these signal pair are guaranteed to be called by the same thread
381 
382  // these signal pair are guaranteed to be called by the same thread
385 
386  // these signal pair are guaranteed to be called by the same thread
389 
390  // these signal pair are guaranteed to be called by the same thread
393 
394  // these signal pair are guaranteed to be called by the same thread
397 
398  // these signal pair are guaranteed to be called by the same thread
401 
402  // these signal pair are guaranteed to be called by the same thread
405 
406  // these signal pair are guaranteed to be called by the same thread
409 
410  // these signal pair are guaranteed to be called by the same thread
413 
414  // these signal pair are guaranteed to be called by the same thread
417 
418  // these signal pair are guaranteed to be called by the same thread
421 
422  // these signal pair are guaranteed to be called by the same thread
425 
426  // these signal pair are guaranteed to be called by the same thread
429 
430  // these signal pair are guaranteed to be called by the same thread
433 
434  // these signal pair are guaranteed to be called by the same thread
437 
438  // these signal pair are guaranteed to be called by the same thread
441 
442  // these signal pair are guaranteed to be called by the same thread
445 
446  // these signal pair are guaranteed to be called by the same thread
449 
450  // these signal pair are guaranteed to be called by the same thread
453 
454  // these signal pair are guaranteed to be called by the same thread
457 
458  // these signal pair are guaranteed to be called by the same thread
461 
462  // these signal pair are guaranteed to be called by the same thread
465 
466  // these signal pair are guaranteed to be called by the same thread
469 
470  // these signal pair are guaranteed to be called by the same thread
473 }
void watchPostModuleGlobalEndLumi(PostModuleGlobalEndLumi::slot_type const &iSlot)
void watchPostModuleConstruction(PostModuleConstruction::slot_type const &iSlot)
void watchPreModuleGlobalBeginRun(PreModuleGlobalBeginRun::slot_type const &iSlot)
void watchPreEvent(PreEvent::slot_type const &iSlot)
void postStreamEndLumi(edm::StreamContext const &)
void preModuleEventPrefetching(edm::StreamContext const &, edm::ModuleCallingContext const &)
void preGlobalBeginRun(edm::GlobalContext const &)
void postGlobalEndRun(edm::GlobalContext const &)
void preGlobalEndLumi(edm::GlobalContext const &)
void postModuleEventDelayedGet(edm::StreamContext const &, edm::ModuleCallingContext const &)
void postModuleStreamBeginLumi(edm::StreamContext const &, edm::ModuleCallingContext const &)
void watchPrePathEvent(PrePathEvent::slot_type const &iSlot)
void watchPreallocate(Preallocate::slot_type const &iSlot)
void postModuleEvent(edm::StreamContext const &, edm::ModuleCallingContext const &)
void watchPreModuleEventAcquire(PreModuleEventAcquire::slot_type const &iSlot)
void watchPostEndJob(PostEndJob::slot_type const &iSlot)
void preModuleEndStream(edm::StreamContext const &, edm::ModuleCallingContext const &)
void preModuleEventAcquire(edm::StreamContext const &, edm::ModuleCallingContext const &)
void watchPostModuleEndStream(PostModuleEndStream::slot_type const &iSlot)
void watchPreModuleEvent(PreModuleEvent::slot_type const &iSlot)
void postModuleEventAcquire(edm::StreamContext const &, edm::ModuleCallingContext const &)
void watchPreModuleConstruction(PreModuleConstruction::slot_type const &iSlot)
void watchPreGlobalEndLumi(PreGlobalEndLumi::slot_type const &iSlot)
void watchPostEvent(PostEvent::slot_type const &iSlot)
void preStreamBeginLumi(edm::StreamContext const &)
void preModuleEvent(edm::StreamContext const &, edm::ModuleCallingContext const &)
void watchPreStreamEndRun(PreStreamEndRun::slot_type const &iSlot)
void watchPreSourceConstruction(PreSourceConstruction::slot_type const &iSlot)
void preSourceRun(edm::RunIndex)
void watchPostSourceConstruction(PostSourceConstruction::slot_type const &iSlot)
void watchPostStreamEndLumi(PostStreamEndLumi::slot_type const &iSlot)
void watchPreGlobalBeginLumi(PreGlobalBeginLumi::slot_type const &iSlot)
void preModuleStreamBeginLumi(edm::StreamContext const &, edm::ModuleCallingContext const &)
void postSourceConstruction(edm::ModuleDescription const &)
void preModuleStreamBeginRun(edm::StreamContext const &, edm::ModuleCallingContext const &)
void watchPreEventReadFromSource(PreEventReadFromSource::slot_type const &iSlot)
void watchPreModuleDestruction(PreModuleDestruction::slot_type const &iSlot)
void watchPostPathEvent(PostPathEvent::slot_type const &iSlot)
void watchPostModuleEvent(PostModuleEvent::slot_type const &iSlot)
void watchPostModuleGlobalBeginLumi(PostModuleGlobalBeginLumi::slot_type const &iSlot)
void watchPostModuleStreamEndLumi(PostModuleStreamEndLumi::slot_type const &iSlot)
void watchPostGlobalBeginLumi(PostGlobalBeginLumi::slot_type const &iSlot)
void watchPostModuleStreamBeginRun(PostModuleStreamBeginRun::slot_type const &iSlot)
void watchPostSourceEvent(PostSourceEvent::slot_type const &iSlot)
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 watchPreModuleBeginStream(PreModuleBeginStream::slot_type const &iSlot)
void preGlobalBeginLumi(edm::GlobalContext const &)
void postSourceLumi(edm::LuminosityBlockIndex)
void watchPreStreamEndLumi(PreStreamEndLumi::slot_type const &iSlot)
void watchPreModuleGlobalEndRun(PreModuleGlobalEndRun::slot_type const &iSlot)
void watchPreModuleEventPrefetching(PreModuleEventPrefetching::slot_type const &iSlot)
void preModuleStreamEndLumi(edm::StreamContext const &, edm::ModuleCallingContext const &)
void postCloseFile(std::string 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 watchPostModuleEventPrefetching(PostModuleEventPrefetching::slot_type const &iSlot)
void preStreamEndRun(edm::StreamContext const &)
void postModuleGlobalEndLumi(edm::GlobalContext const &, edm::ModuleCallingContext const &)
void watchPreOpenFile(PreOpenFile::slot_type const &iSlot)
void watchPostGlobalBeginRun(PostGlobalBeginRun::slot_type const &iSlot)
void watchPostCloseFile(PostCloseFile::slot_type const &iSlot)
void postModuleDestruction(edm::ModuleDescription const &)
void watchPreGlobalEndRun(PreGlobalEndRun::slot_type const &iSlot)
void preModuleEventDelayedGet(edm::StreamContext const &, edm::ModuleCallingContext const &)
void watchPostSourceRun(PostSourceRun::slot_type const &iSlot)
void watchPostStreamBeginLumi(PostStreamBeginLumi::slot_type const &iSlot)
void preSourceConstruction(edm::ModuleDescription const &)
void watchPreSourceLumi(PreSourceLumi::slot_type const &iSlot)
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
void postModuleGlobalEndRun(edm::GlobalContext const &, edm::ModuleCallingContext const &)
void watchPreModuleEventDelayedGet(PreModuleEventDelayedGet::slot_type const &iSlot)
void preModuleGlobalEndRun(edm::GlobalContext const &, edm::ModuleCallingContext const &)
void preBeginJob(edm::PathsAndConsumesOfModulesBase const &, edm::ProcessContext const &)
void watchPostModuleEventAcquire(PostModuleEventAcquire::slot_type const &iSlot)
void watchPreModuleEndJob(PreModuleEndJob::slot_type const &iSlot)
void preCloseFile(std::string const &)
void postPathEvent(edm::StreamContext const &, edm::PathContext const &, edm::HLTPathStatus const &)
void postStreamBeginLumi(edm::StreamContext const &)
void preStreamEndLumi(edm::StreamContext const &)
void watchPostGlobalEndLumi(PostGlobalEndLumi::slot_type const &iSlot)
void watchPreSourceRun(PreSourceRun::slot_type const &iSlot)
void preModuleBeginJob(edm::ModuleDescription const &)
void watchPreModuleBeginJob(PreModuleBeginJob::slot_type const &iSlot)
void postGlobalBeginLumi(edm::GlobalContext const &)
void watchPostStreamEndRun(PostStreamEndRun::slot_type const &iSlot)
void postEventReadFromSource(edm::StreamContext const &, edm::ModuleCallingContext const &)
void postModuleBeginStream(edm::StreamContext const &, edm::ModuleCallingContext const &)
void watchPostModuleStreamEndRun(PostModuleStreamEndRun::slot_type const &iSlot)
void watchPreModuleGlobalBeginLumi(PreModuleGlobalBeginLumi::slot_type const &iSlot)
void postModuleGlobalBeginRun(edm::GlobalContext const &, edm::ModuleCallingContext const &)
void preModuleBeginStream(edm::StreamContext const &, edm::ModuleCallingContext const &)
void preSourceEvent(edm::StreamID)
void watchPreGlobalBeginRun(PreGlobalBeginRun::slot_type const &iSlot)
void watchPreModuleStreamBeginLumi(PreModuleStreamBeginLumi::slot_type const &iSlot)
nvtxDomainHandle_t global_domain_
void preOpenFile(std::string const &)
void watchPostModuleBeginStream(PostModuleBeginStream::slot_type const &iSlot)
void preModuleConstruction(edm::ModuleDescription const &)
void watchPostSourceLumi(PostSourceLumi::slot_type const &iSlot)
void watchPreCloseFile(PreCloseFile::slot_type const &iSlot)
void watchPostModuleEventDelayedGet(PostModuleEventDelayedGet::slot_type const &iSlot)
void watchPostModuleGlobalEndRun(PostModuleGlobalEndRun::slot_type const &iSlot)
void watchPostModuleStreamBeginLumi(PostModuleStreamBeginLumi::slot_type const &iSlot)
void preStreamBeginRun(edm::StreamContext const &)
void postModuleStreamBeginRun(edm::StreamContext const &, edm::ModuleCallingContext const &)
void preModuleStreamEndRun(edm::StreamContext const &, edm::ModuleCallingContext const &)
void watchPreModuleStreamEndLumi(PreModuleStreamEndLumi::slot_type const &iSlot)
void watchPreModuleStreamBeginRun(PreModuleStreamBeginRun::slot_type const &iSlot)
void watchPostGlobalEndRun(PostGlobalEndRun::slot_type const &iSlot)
void watchPreStreamBeginLumi(PreStreamBeginLumi::slot_type const &iSlot)
void watchPostOpenFile(PostOpenFile::slot_type const &iSlot)
void watchPreModuleEndStream(PreModuleEndStream::slot_type const &iSlot)
void postGlobalBeginRun(edm::GlobalContext const &)
void watchPreBeginJob(PreBeginJob::slot_type const &iSlot)
convenience function for attaching to signal
void postModuleStreamEndLumi(edm::StreamContext const &, edm::ModuleCallingContext const &)
void postEvent(edm::StreamContext const &)
void watchPostStreamBeginRun(PostStreamBeginRun::slot_type const &iSlot)
void postSourceRun(edm::RunIndex)
void watchPreStreamBeginRun(PreStreamBeginRun::slot_type const &iSlot)
void watchPostModuleDestruction(PostModuleDestruction::slot_type const &iSlot)
void postOpenFile(std::string const &)
void preallocate(edm::service::SystemBounds const &)
void watchPreModuleStreamEndRun(PreModuleStreamEndRun::slot_type const &iSlot)
void postModuleEndStream(edm::StreamContext const &, edm::ModuleCallingContext const &)
void preSourceLumi(edm::LuminosityBlockIndex)
void watchPostModuleBeginJob(PostModuleBeginJob::slot_type const &iSlot)
void watchPostEventReadFromSource(PostEventReadFromSource::slot_type const &iSlot)
void watchPostModuleGlobalBeginRun(PostModuleGlobalBeginRun::slot_type const &iSlot)
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 watchPreSourceEvent(PreSourceEvent::slot_type const &iSlot)
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 &)
void watchPostModuleEndJob(PostModuleEndJob::slot_type const &iSlot)
std::vector< std::string > highlightModules_
void preModuleDestruction(edm::ModuleDescription const &)
void watchPreModuleGlobalEndLumi(PreModuleGlobalEndLumi::slot_type const &iSlot)
void postModuleBeginJob(edm::ModuleDescription const &)
void watchPostBeginJob(PostBeginJob::slot_type const &iSlot)
convenience function for attaching to signal

◆ ~NVProfilerService()

NVProfilerService::~NVProfilerService ( )

Definition at line 475 of file NVProfilerService.cc.

References global_domain_, and stream_domain_.

475  {
476  for (unsigned int sid = 0; sid < stream_domain_.size(); ++sid) {
477  nvtxDomainDestroy(stream_domain_[sid]);
478  }
479  nvtxDomainDestroy(global_domain_);
480  cudaProfilerStop();
481 }
std::vector< nvtxDomainHandle_t > stream_domain_
nvtxDomainHandle_t global_domain_

Member Function Documentation

◆ fillDescriptions()

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

Definition at line 483 of file NVProfilerService.cc.

References edm::ConfigurationDescriptions::add(), submitPVResolutionJobs::desc, and edm::ConfigurationDescriptions::setComment().

483  {
485  desc.addUntracked<std::vector<std::string>>("highlightModules", {})->setComment("");
486  desc.addUntracked<bool>("showModulePrefetching", false)
487  ->setComment("Show the stack of dependencies that requested to run a module.");
488  desc.addUntracked<bool>("skipFirstEvent", false)
489  ->setComment(
490  "Start profiling after the first event has completed.\nWith multiple streams, ignore transitions belonging "
491  "to events started in parallel to the first event.\nRequires running nvprof with the '--profile-from-start "
492  "off' option.");
493  descriptions.add("NVProfilerService", desc);
494  descriptions.setComment(R"(This Service provides CMSSW-aware annotations to nvprof/nvvm.
495 
496 Notes on nvprof options:
497  - the option '--profile-from-start off' should be used if skipFirstEvent is True.
498  - the option '--cpu-profiling on' currently results in cmsRun being stuck at the beginning of the job.
499  - the option '--cpu-thread-tracing on' is not compatible with jemalloc, and should only be used with cmsRunGlibC.)");
500 }
void setComment(std::string const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)

◆ highlight()

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_

◆ labelColor()

uint32_t NVProfilerService::labelColor ( std::string const &  label) const
inlineprivate

◆ labelColorLight()

uint32_t NVProfilerService::labelColorLight ( std::string const &  label) const
inlineprivate

Definition at line 282 of file NVProfilerService.cc.

References label.

Referenced by preModuleEventPrefetching().

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

◆ postBeginJob()

void NVProfilerService::postBeginJob ( )

Definition at line 541 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

541  {
543  nvtxDomainMark(global_domain_, "postBeginJob");
544  }
545 }
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 global_domain_
std::atomic< bool > globalFirstEventDone_

◆ postCloseFile()

void NVProfilerService::postCloseFile ( std::string const &  lfn)

Definition at line 607 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

607  {
609  nvtxDomainRangePop(global_domain_);
610  }
611 }
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 global_domain_
std::atomic< bool > globalFirstEventDone_

◆ postEndJob()

void NVProfilerService::postEndJob ( )

Definition at line 547 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

547  {
549  nvtxDomainMark(global_domain_, "postEndJob");
550  }
551 }
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 global_domain_
std::atomic< bool > globalFirstEventDone_

◆ postEvent()

void NVProfilerService::postEvent ( edm::StreamContext const &  sc)

Definition at line 762 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

762  {
763  auto sid = sc.streamID();
765  nvtxDomainRangeEnd(stream_domain_[sid], event_[sid]);
766  event_[sid] = nvtxInvalidRangeId;
767  } else {
768  streamFirstEventDone_[sid] = true;
769  auto identity = [](bool x) { return x; };
770  if (std::all_of(streamFirstEventDone_.begin(), streamFirstEventDone_.end(), identity)) {
771  bool expected = false;
772  if (globalFirstEventDone_.compare_exchange_strong(expected, true))
773  cudaProfilerStart();
774  }
775  }
776 }
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_
std::vector< nvtxDomainHandle_t > stream_domain_
std::atomic< bool > globalFirstEventDone_
std::vector< std::atomic< bool > > streamFirstEventDone_

◆ postEventReadFromSource()

void NVProfilerService::postEventReadFromSource ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 960 of file NVProfilerService.cc.

Referenced by NVProfilerService().

960  {
961  /* FIXME
962  auto sid = sc.streamID();
963  if (not skipFirstEvent_ or streamFirstEventDone_[sid]) {
964  auto mid = mcc.moduleDescription()->id();
965  nvtxDomainRangeEnd(stream_domain_[sid], stream_modules_[sid][mid]);
966  stream_modules_[sid][mid] = nvtxInvalidRangeId;
967  }
968  */
969 }

◆ postGlobalBeginLumi()

void NVProfilerService::postGlobalBeginLumi ( edm::GlobalContext const &  gc)

Definition at line 711 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

711  {
713  nvtxDomainRangePop(global_domain_);
714  }
715 }
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 global_domain_
std::atomic< bool > globalFirstEventDone_

◆ postGlobalBeginRun()

void NVProfilerService::postGlobalBeginRun ( edm::GlobalContext const &  gc)

Definition at line 659 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

659  {
661  nvtxDomainRangePop(global_domain_);
662  }
663 }
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 global_domain_
std::atomic< bool > globalFirstEventDone_

◆ postGlobalEndLumi()

void NVProfilerService::postGlobalEndLumi ( edm::GlobalContext const &  gc)

Definition at line 723 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

723  {
725  nvtxDomainRangePop(global_domain_);
726  }
727 }
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 global_domain_
std::atomic< bool > globalFirstEventDone_

◆ postGlobalEndRun()

void NVProfilerService::postGlobalEndRun ( edm::GlobalContext const &  gc)

Definition at line 671 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

671  {
673  nvtxDomainRangePop(global_domain_);
674  }
675 }
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 global_domain_
std::atomic< bool > globalFirstEventDone_

◆ postModuleBeginJob()

void NVProfilerService::postModuleBeginJob ( edm::ModuleDescription const &  desc)

Definition at line 859 of file NVProfilerService.cc.

References submitPVResolutionJobs::desc, global_domain_, global_modules_, and skipFirstEvent_.

Referenced by NVProfilerService().

859  {
860  if (not skipFirstEvent_) {
861  auto mid = desc.id();
862  nvtxDomainRangeEnd(global_domain_, global_modules_[mid]);
863  global_modules_[mid] = nvtxInvalidRangeId;
864  }
865 }
tbb::concurrent_vector< nvtxRangeId_t > global_modules_
nvtxDomainHandle_t global_domain_

◆ postModuleBeginStream()

void NVProfilerService::postModuleBeginStream ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

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

624  {
625  auto sid = sc.streamID();
627  auto mid = mcc.moduleDescription()->id();
628  nvtxDomainRangeEnd(stream_domain_[sid], stream_modules_[sid][mid]);
629  stream_modules_[sid][mid] = nvtxInvalidRangeId;
630  }
631 }
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
std::vector< nvtxDomainHandle_t > stream_domain_
std::vector< std::atomic< bool > > streamFirstEventDone_

◆ postModuleConstruction()

void NVProfilerService::postModuleConstruction ( edm::ModuleDescription const &  desc)

Definition at line 824 of file NVProfilerService.cc.

References submitPVResolutionJobs::desc, global_domain_, global_modules_, and skipFirstEvent_.

Referenced by NVProfilerService().

824  {
825  if (not skipFirstEvent_) {
826  auto mid = desc.id();
827  nvtxDomainRangeEnd(global_domain_, global_modules_[mid]);
828  global_modules_[mid] = nvtxInvalidRangeId;
829  }
830 }
tbb::concurrent_vector< nvtxRangeId_t > global_modules_
nvtxDomainHandle_t global_domain_

◆ postModuleDestruction()

void NVProfilerService::postModuleDestruction ( edm::ModuleDescription const &  desc)

Definition at line 842 of file NVProfilerService.cc.

References submitPVResolutionJobs::desc, global_domain_, global_modules_, and skipFirstEvent_.

Referenced by NVProfilerService().

842  {
843  if (not skipFirstEvent_) {
844  auto mid = desc.id();
845  nvtxDomainRangeEnd(global_domain_, global_modules_[mid]);
846  global_modules_[mid] = nvtxInvalidRangeId;
847  }
848 }
tbb::concurrent_vector< nvtxRangeId_t > global_modules_
nvtxDomainHandle_t global_domain_

◆ postModuleEndJob()

void NVProfilerService::postModuleEndJob ( edm::ModuleDescription const &  desc)

Definition at line 876 of file NVProfilerService.cc.

References submitPVResolutionJobs::desc, global_domain_, global_modules_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

876  {
878  auto mid = desc.id();
879  nvtxDomainRangeEnd(global_domain_, global_modules_[mid]);
880  global_modules_[mid] = nvtxInvalidRangeId;
881  }
882 }
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_
nvtxDomainHandle_t global_domain_
std::atomic< bool > globalFirstEventDone_

◆ postModuleEndStream()

void NVProfilerService::postModuleEndStream ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

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

644  {
645  auto sid = sc.streamID();
647  auto mid = mcc.moduleDescription()->id();
648  nvtxDomainRangeEnd(stream_domain_[sid], stream_modules_[sid][mid]);
649  stream_modules_[sid][mid] = nvtxInvalidRangeId;
650  }
651 }
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
std::vector< nvtxDomainHandle_t > stream_domain_
std::vector< std::atomic< bool > > streamFirstEventDone_

◆ postModuleEvent()

void NVProfilerService::postModuleEvent ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

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

914  {
915  auto sid = sc.streamID();
917  auto mid = mcc.moduleDescription()->id();
918  nvtxDomainRangeEnd(stream_domain_[sid], stream_modules_[sid][mid]);
919  stream_modules_[sid][mid] = nvtxInvalidRangeId;
920  }
921 }
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
std::vector< nvtxDomainHandle_t > stream_domain_
std::vector< std::atomic< bool > > streamFirstEventDone_

◆ postModuleEventAcquire()

void NVProfilerService::postModuleEventAcquire ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

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

895  {
896  auto sid = sc.streamID();
898  auto mid = mcc.moduleDescription()->id();
899  nvtxDomainRangeEnd(stream_domain_[sid], stream_modules_[sid][mid]);
900  stream_modules_[sid][mid] = nvtxInvalidRangeId;
901  }
902 }
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
std::vector< nvtxDomainHandle_t > stream_domain_
std::vector< std::atomic< bool > > streamFirstEventDone_

◆ postModuleEventDelayedGet()

void NVProfilerService::postModuleEventDelayedGet ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 936 of file NVProfilerService.cc.

Referenced by NVProfilerService().

936  {
937  /* FIXME
938  auto sid = sc.streamID();
939  if (not skipFirstEvent_ or streamFirstEventDone_[sid]) {
940  auto mid = mcc.moduleDescription()->id();
941  nvtxDomainRangeEnd(stream_domain_[sid], stream_modules_[sid][mid]);
942  stream_modules_[sid][mid] = nvtxInvalidRangeId;
943  }
944  */
945 }

◆ postModuleEventPrefetching()

void NVProfilerService::postModuleEventPrefetching ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

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

805  {
806  auto sid = sc.streamID();
808  auto mid = mcc.moduleDescription()->id();
809  nvtxDomainRangeEnd(stream_domain_[sid], stream_modules_[sid][mid]);
810  stream_modules_[sid][mid] = nvtxInvalidRangeId;
811  }
812 }
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
std::vector< nvtxDomainHandle_t > stream_domain_
std::vector< std::atomic< bool > > streamFirstEventDone_

◆ postModuleGlobalBeginLumi()

void NVProfilerService::postModuleGlobalBeginLumi ( edm::GlobalContext const &  gc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 1094 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

1094  {
1096  auto mid = mcc.moduleDescription()->id();
1097  nvtxDomainRangeEnd(global_domain_, global_modules_[mid]);
1098  global_modules_[mid] = nvtxInvalidRangeId;
1099  }
1100 }
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_
nvtxDomainHandle_t global_domain_
std::atomic< bool > globalFirstEventDone_

◆ postModuleGlobalBeginRun()

void NVProfilerService::postModuleGlobalBeginRun ( edm::GlobalContext const &  gc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 1060 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

1060  {
1062  auto mid = mcc.moduleDescription()->id();
1063  nvtxDomainRangeEnd(global_domain_, global_modules_[mid]);
1064  global_modules_[mid] = nvtxInvalidRangeId;
1065  }
1066 }
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_
nvtxDomainHandle_t global_domain_
std::atomic< bool > globalFirstEventDone_

◆ postModuleGlobalEndLumi()

void NVProfilerService::postModuleGlobalEndLumi ( edm::GlobalContext const &  gc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 1111 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

1111  {
1113  auto mid = mcc.moduleDescription()->id();
1114  nvtxDomainRangeEnd(global_domain_, global_modules_[mid]);
1115  global_modules_[mid] = nvtxInvalidRangeId;
1116  }
1117 }
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_
nvtxDomainHandle_t global_domain_
std::atomic< bool > globalFirstEventDone_

◆ postModuleGlobalEndRun()

void NVProfilerService::postModuleGlobalEndRun ( edm::GlobalContext const &  gc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 1077 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

1077  {
1079  auto mid = mcc.moduleDescription()->id();
1080  nvtxDomainRangeEnd(global_domain_, global_modules_[mid]);
1081  global_modules_[mid] = nvtxInvalidRangeId;
1082  }
1083 }
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_
nvtxDomainHandle_t global_domain_
std::atomic< bool > globalFirstEventDone_

◆ postModuleStreamBeginLumi()

void NVProfilerService::postModuleStreamBeginLumi ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

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

1022  {
1023  auto sid = sc.streamID();
1024  if (not skipFirstEvent_ or streamFirstEventDone_[sid]) {
1025  auto mid = mcc.moduleDescription()->id();
1026  nvtxDomainRangeEnd(stream_domain_[sid], stream_modules_[sid][mid]);
1027  stream_modules_[sid][mid] = nvtxInvalidRangeId;
1028  }
1029 }
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
std::vector< nvtxDomainHandle_t > stream_domain_
std::vector< std::atomic< bool > > streamFirstEventDone_

◆ postModuleStreamBeginRun()

void NVProfilerService::postModuleStreamBeginRun ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

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

982  {
983  auto sid = sc.streamID();
985  auto mid = mcc.moduleDescription()->id();
986  nvtxDomainRangeEnd(stream_domain_[sid], stream_modules_[sid][mid]);
987  stream_modules_[sid][mid] = nvtxInvalidRangeId;
988  }
989 }
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
std::vector< nvtxDomainHandle_t > stream_domain_
std::vector< std::atomic< bool > > streamFirstEventDone_

◆ postModuleStreamEndLumi()

void NVProfilerService::postModuleStreamEndLumi ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

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

1042  {
1043  auto sid = sc.streamID();
1044  if (not skipFirstEvent_ or streamFirstEventDone_[sid]) {
1045  auto mid = mcc.moduleDescription()->id();
1046  nvtxDomainRangeEnd(stream_domain_[sid], stream_modules_[sid][mid]);
1047  stream_modules_[sid][mid] = nvtxInvalidRangeId;
1048  }
1049 }
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
std::vector< nvtxDomainHandle_t > stream_domain_
std::vector< std::atomic< bool > > streamFirstEventDone_

◆ postModuleStreamEndRun()

void NVProfilerService::postModuleStreamEndRun ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

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

1002  {
1003  auto sid = sc.streamID();
1004  if (not skipFirstEvent_ or streamFirstEventDone_[sid]) {
1005  auto mid = mcc.moduleDescription()->id();
1006  nvtxDomainRangeEnd(stream_domain_[sid], stream_modules_[sid][mid]);
1007  stream_modules_[sid][mid] = nvtxInvalidRangeId;
1008  }
1009 }
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
std::vector< nvtxDomainHandle_t > stream_domain_
std::vector< std::atomic< bool > > streamFirstEventDone_

◆ postOpenFile()

void NVProfilerService::postOpenFile ( std::string const &  lfn)

Definition at line 595 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

595  {
597  nvtxDomainRangePop(global_domain_);
598  }
599 }
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 global_domain_
std::atomic< bool > globalFirstEventDone_

◆ postPathEvent()

void NVProfilerService::postPathEvent ( edm::StreamContext const &  sc,
edm::PathContext const &  pc,
edm::HLTPathStatus const &  hlts 
)

Definition at line 785 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_, ("after path "s + pc.pathName()).c_str());
791  }
792 }
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 global_domain_
std::vector< std::atomic< bool > > streamFirstEventDone_

◆ postSourceConstruction()

void NVProfilerService::postSourceConstruction ( edm::ModuleDescription const &  desc)

Definition at line 1131 of file NVProfilerService.cc.

References submitPVResolutionJobs::desc, global_domain_, global_modules_, and skipFirstEvent_.

Referenced by NVProfilerService().

1131  {
1132  if (not skipFirstEvent_) {
1133  auto mid = desc.id();
1134  nvtxDomainRangeEnd(global_domain_, global_modules_[mid]);
1135  global_modules_[mid] = nvtxInvalidRangeId;
1136  }
1137 }
tbb::concurrent_vector< nvtxRangeId_t > global_modules_
nvtxDomainHandle_t global_domain_

◆ postSourceEvent()

void NVProfilerService::postSourceEvent ( edm::StreamID  sid)

Definition at line 559 of file NVProfilerService.cc.

References or, skipFirstEvent_, stream_domain_, and streamFirstEventDone_.

Referenced by NVProfilerService().

559  {
561  nvtxDomainRangePop(stream_domain_[sid]);
562  }
563 }
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< nvtxDomainHandle_t > stream_domain_
std::vector< std::atomic< bool > > streamFirstEventDone_

◆ postSourceLumi()

void NVProfilerService::postSourceLumi ( edm::LuminosityBlockIndex  index)

Definition at line 571 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

571  {
573  nvtxDomainRangePop(global_domain_);
574  }
575 }
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 global_domain_
std::atomic< bool > globalFirstEventDone_

◆ postSourceRun()

void NVProfilerService::postSourceRun ( edm::RunIndex  index)

Definition at line 583 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

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

◆ postStreamBeginLumi()

void NVProfilerService::postStreamBeginLumi ( edm::StreamContext const &  sc)

Definition at line 736 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

736  {
737  auto sid = sc.streamID();
739  nvtxDomainRangePop(stream_domain_[sid]);
740  }
741 }
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< nvtxDomainHandle_t > stream_domain_
std::vector< std::atomic< bool > > streamFirstEventDone_

◆ postStreamBeginRun()

void NVProfilerService::postStreamBeginRun ( edm::StreamContext const &  sc)

Definition at line 684 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

684  {
685  auto sid = sc.streamID();
687  nvtxDomainRangePop(stream_domain_[sid]);
688  }
689 }
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< nvtxDomainHandle_t > stream_domain_
std::vector< std::atomic< bool > > streamFirstEventDone_

◆ postStreamEndLumi()

void NVProfilerService::postStreamEndLumi ( edm::StreamContext const &  sc)

Definition at line 748 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

748  {
749  auto sid = sc.streamID();
751  nvtxDomainRangePop(stream_domain_[sid]);
752  }
753 }
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< nvtxDomainHandle_t > stream_domain_
std::vector< std::atomic< bool > > streamFirstEventDone_

◆ postStreamEndRun()

void NVProfilerService::postStreamEndRun ( edm::StreamContext const &  sc)

Definition at line 698 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

698  {
699  auto sid = sc.streamID();
701  nvtxDomainRangePop(stream_domain_[sid]);
702  }
703 }
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< nvtxDomainHandle_t > stream_domain_
std::vector< std::atomic< bool > > streamFirstEventDone_

◆ preallocate()

void NVProfilerService::preallocate ( edm::service::SystemBounds const &  bounds)

Definition at line 502 of file NVProfilerService.cc.

References event_, global_domain_, globalFirstEventDone_, eostools::move(), MillePedeFileConverter_cfg::out, skipFirstEvent_, stream_domain_, stream_modules_, streamFirstEventDone_, and createJobs::tmp.

Referenced by NVProfilerService().

502  {
503  std::stringstream out;
504  out << "preallocate: " << bounds.maxNumberOfConcurrentRuns() << " concurrent runs, "
505  << bounds.maxNumberOfConcurrentLuminosityBlocks() << " luminosity sections, " << bounds.maxNumberOfStreams()
506  << " streams\nrunning on " << bounds.maxNumberOfThreads() << " threads";
507  nvtxDomainMark(global_domain_, out.str().c_str());
508 
509  auto concurrentStreams = bounds.maxNumberOfStreams();
510  // create the NVTX domains for per-EDM-stream transitions
511  stream_domain_.resize(concurrentStreams);
512  for (unsigned int sid = 0; sid < concurrentStreams; ++sid) {
513  stream_domain_[sid] = nvtxDomainCreate(fmt::sprintf("EDM Stream %d", sid).c_str());
514  }
515 
516  event_.resize(concurrentStreams);
517  stream_modules_.resize(concurrentStreams);
518  if (skipFirstEvent_) {
519  globalFirstEventDone_ = false;
520  std::vector<std::atomic<bool>> tmp(concurrentStreams);
521  for (auto& element : tmp)
522  std::atomic_init(&element, false);
524  }
525 }
std::vector< std::vector< nvtxRangeId_t > > stream_modules_
std::vector< nvtxRangeId_t > event_
std::vector< nvtxDomainHandle_t > stream_domain_
nvtxDomainHandle_t global_domain_
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

◆ preBeginJob()

void NVProfilerService::preBeginJob ( edm::PathsAndConsumesOfModulesBase const &  pathsAndConsumes,
edm::ProcessContext const &  context 
)

Definition at line 527 of file NVProfilerService.cc.

References callgraph_, visDQMUpload::context, global_domain_, global_modules_, ProcessCallGraph::preBeginJob(), ProcessCallGraph::size(), and stream_modules_.

Referenced by NVProfilerService().

528  {
529  callgraph_.preBeginJob(pathsAndConsumes, context);
530  nvtxDomainMark(global_domain_, "preBeginJob");
531 
532  // this assumes that preBeginJob is not called concurrently with the modules' beginJob method
533  // or the preBeginJob for a subprocess
534  unsigned int modules = callgraph_.size();
535  global_modules_.resize(modules, nvtxInvalidRangeId);
536  for (unsigned int sid = 0; sid < stream_modules_.size(); ++sid) {
537  stream_modules_[sid].resize(modules, nvtxInvalidRangeId);
538  }
539 }
std::vector< std::vector< nvtxRangeId_t > > stream_modules_
ProcessCallGraph callgraph_
void preBeginJob(edm::PathsAndConsumesOfModulesBase const &, edm::ProcessContext const &)
tbb::concurrent_vector< nvtxRangeId_t > global_modules_
nvtxDomainHandle_t global_domain_
unsigned int size() const

◆ preCloseFile()

void NVProfilerService::preCloseFile ( std::string const &  lfn)

Definition at line 601 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, alignCSCRings::s, and skipFirstEvent_.

Referenced by NVProfilerService().

601  {
603  nvtxDomainRangePush(global_domain_, ("close file "s + lfn).c_str());
604  }
605 }
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 global_domain_
std::atomic< bool > globalFirstEventDone_

◆ preEvent()

void NVProfilerService::preEvent ( edm::StreamContext const &  sc)

Definition at line 755 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

755  {
756  auto sid = sc.streamID();
758  event_[sid] = nvtxDomainRangeStartColor(stream_domain_[sid], "event", nvtxDarkGreen);
759  }
760 }
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_
std::vector< nvtxDomainHandle_t > stream_domain_
std::vector< std::atomic< bool > > streamFirstEventDone_

◆ preEventReadFromSource()

void NVProfilerService::preEventReadFromSource ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 947 of file NVProfilerService.cc.

Referenced by NVProfilerService().

947  {
948  /* FIXME
949  auto sid = sc.streamID();
950  if (not skipFirstEvent_ or streamFirstEventDone_[sid]) {
951  auto mid = mcc.moduleDescription()->id();
952  auto const & label = mcc.moduleDescription()->moduleLabel();
953  auto const & msg = label + " read from source";
954  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
955  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain_[sid], msg.c_str(), labelColorLight(label));
956  }
957  */
958 }

◆ preGlobalBeginLumi()

void NVProfilerService::preGlobalBeginLumi ( edm::GlobalContext const &  gc)

Definition at line 705 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

705  {
707  nvtxDomainRangePush(global_domain_, "global begin lumi");
708  }
709 }
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 global_domain_
std::atomic< bool > globalFirstEventDone_

◆ preGlobalBeginRun()

void NVProfilerService::preGlobalBeginRun ( edm::GlobalContext const &  gc)

Definition at line 653 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

653  {
655  nvtxDomainRangePush(global_domain_, "global begin run");
656  }
657 }
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 global_domain_
std::atomic< bool > globalFirstEventDone_

◆ preGlobalEndLumi()

void NVProfilerService::preGlobalEndLumi ( edm::GlobalContext const &  gc)

Definition at line 717 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

717  {
719  nvtxDomainRangePush(global_domain_, "global end lumi");
720  }
721 }
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 global_domain_
std::atomic< bool > globalFirstEventDone_

◆ preGlobalEndRun()

void NVProfilerService::preGlobalEndRun ( edm::GlobalContext const &  gc)

Definition at line 665 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

665  {
667  nvtxDomainRangePush(global_domain_, "global end run");
668  }
669 }
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 global_domain_
std::atomic< bool > globalFirstEventDone_

◆ preModuleBeginJob()

void NVProfilerService::preModuleBeginJob ( edm::ModuleDescription const &  desc)

Definition at line 850 of file NVProfilerService.cc.

References submitPVResolutionJobs::desc, global_domain_, global_modules_, label, labelColor(), mps_check::msg, and skipFirstEvent_.

Referenced by NVProfilerService().

850  {
851  if (not skipFirstEvent_) {
852  auto mid = desc.id();
853  auto const& label = desc.moduleLabel();
854  auto const& msg = label + " begin job";
855  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain_, msg.c_str(), labelColor(label));
856  }
857 }
char const * label
uint32_t labelColor(std::string const &label) const
tbb::concurrent_vector< nvtxRangeId_t > global_modules_
nvtxDomainHandle_t global_domain_
tuple msg
Definition: mps_check.py:286

◆ preModuleBeginStream()

void NVProfilerService::preModuleBeginStream ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 613 of file NVProfilerService.cc.

References cms::cuda::assert(), 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().

613  {
614  auto sid = sc.streamID();
616  auto mid = mcc.moduleDescription()->id();
617  auto const& label = mcc.moduleDescription()->moduleLabel();
618  auto const& msg = label + " begin stream";
619  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
620  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain_[sid], msg.c_str(), labelColor(label));
621  }
622 }
std::vector< std::vector< nvtxRangeId_t > > stream_modules_
assert(be >=bs)
char const * label
uint32_t labelColor(std::string const &label) const
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< nvtxDomainHandle_t > stream_domain_
tuple msg
Definition: mps_check.py:286
std::vector< std::atomic< bool > > streamFirstEventDone_

◆ preModuleConstruction()

void NVProfilerService::preModuleConstruction ( edm::ModuleDescription const &  desc)

Definition at line 814 of file NVProfilerService.cc.

References submitPVResolutionJobs::desc, global_domain_, global_modules_, label, labelColor(), mps_check::msg, and skipFirstEvent_.

Referenced by NVProfilerService().

814  {
815  if (not skipFirstEvent_) {
816  auto mid = desc.id();
817  global_modules_.grow_to_at_least(mid + 1);
818  auto const& label = desc.moduleLabel();
819  auto const& msg = label + " construction";
820  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain_, msg.c_str(), labelColor(label));
821  }
822 }
char const * label
uint32_t labelColor(std::string const &label) const
tbb::concurrent_vector< nvtxRangeId_t > global_modules_
nvtxDomainHandle_t global_domain_
tuple msg
Definition: mps_check.py:286

◆ preModuleDestruction()

void NVProfilerService::preModuleDestruction ( edm::ModuleDescription const &  desc)

Definition at line 832 of file NVProfilerService.cc.

References submitPVResolutionJobs::desc, global_domain_, global_modules_, label, labelColor(), mps_check::msg, and skipFirstEvent_.

Referenced by NVProfilerService().

832  {
833  if (not skipFirstEvent_) {
834  auto mid = desc.id();
835  global_modules_.grow_to_at_least(mid + 1);
836  auto const& label = desc.moduleLabel();
837  auto const& msg = label + " destruction";
838  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain_, msg.c_str(), labelColor(label));
839  }
840 }
char const * label
uint32_t labelColor(std::string const &label) const
tbb::concurrent_vector< nvtxRangeId_t > global_modules_
nvtxDomainHandle_t global_domain_
tuple msg
Definition: mps_check.py:286

◆ preModuleEndJob()

void NVProfilerService::preModuleEndJob ( edm::ModuleDescription const &  desc)

Definition at line 867 of file NVProfilerService.cc.

References submitPVResolutionJobs::desc, global_domain_, global_modules_, globalFirstEventDone_, label, labelColor(), mps_check::msg, or, and skipFirstEvent_.

Referenced by NVProfilerService().

867  {
869  auto mid = desc.id();
870  auto const& label = desc.moduleLabel();
871  auto const& msg = label + " end job";
872  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain_, msg.c_str(), labelColor(label));
873  }
874 }
char const * label
uint32_t labelColor(std::string const &label) const
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_
nvtxDomainHandle_t global_domain_
tuple msg
Definition: mps_check.py:286
std::atomic< bool > globalFirstEventDone_

◆ preModuleEndStream()

void NVProfilerService::preModuleEndStream ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 633 of file NVProfilerService.cc.

References cms::cuda::assert(), 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().

633  {
634  auto sid = sc.streamID();
636  auto mid = mcc.moduleDescription()->id();
637  auto const& label = mcc.moduleDescription()->moduleLabel();
638  auto const& msg = label + " end stream";
639  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
640  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain_[sid], msg.c_str(), labelColor(label));
641  }
642 }
std::vector< std::vector< nvtxRangeId_t > > stream_modules_
assert(be >=bs)
char const * label
uint32_t labelColor(std::string const &label) const
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< nvtxDomainHandle_t > stream_domain_
tuple msg
Definition: mps_check.py:286
std::vector< std::atomic< bool > > streamFirstEventDone_

◆ preModuleEvent()

void NVProfilerService::preModuleEvent ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 904 of file NVProfilerService.cc.

References cms::cuda::assert(), 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().

904  {
905  auto sid = sc.streamID();
907  auto mid = mcc.moduleDescription()->id();
908  auto const& label = mcc.moduleDescription()->moduleLabel();
909  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
910  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain_[sid], label.c_str(), labelColor(label));
911  }
912 }
std::vector< std::vector< nvtxRangeId_t > > stream_modules_
assert(be >=bs)
char const * label
uint32_t labelColor(std::string const &label) const
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< nvtxDomainHandle_t > stream_domain_
std::vector< std::atomic< bool > > streamFirstEventDone_

◆ preModuleEventAcquire()

void NVProfilerService::preModuleEventAcquire ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 884 of file NVProfilerService.cc.

References cms::cuda::assert(), 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().

884  {
885  auto sid = sc.streamID();
887  auto mid = mcc.moduleDescription()->id();
888  auto const& label = mcc.moduleDescription()->moduleLabel();
889  auto const& msg = label + " acquire";
890  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
891  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain_[sid], msg.c_str(), labelColor(label));
892  }
893 }
std::vector< std::vector< nvtxRangeId_t > > stream_modules_
assert(be >=bs)
char const * label
uint32_t labelColor(std::string const &label) const
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< nvtxDomainHandle_t > stream_domain_
tuple msg
Definition: mps_check.py:286
std::vector< std::atomic< bool > > streamFirstEventDone_

◆ preModuleEventDelayedGet()

void NVProfilerService::preModuleEventDelayedGet ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 923 of file NVProfilerService.cc.

Referenced by NVProfilerService().

923  {
924  /* FIXME
925  auto sid = sc.streamID();
926  if (not skipFirstEvent_ or streamFirstEventDone_[sid]) {
927  auto mid = mcc.moduleDescription()->id();
928  auto const & label = mcc.moduleDescription()->moduleLabel();
929  auto const & msg = label + " delayed get";
930  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
931  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain_[sid], label.c_str(), labelColorLight(label));
932  }
933  */
934 }

◆ preModuleEventPrefetching()

void NVProfilerService::preModuleEventPrefetching ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 794 of file NVProfilerService.cc.

References cms::cuda::assert(), 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().

794  {
795  auto sid = sc.streamID();
797  auto mid = mcc.moduleDescription()->id();
798  auto const& label = mcc.moduleDescription()->moduleLabel();
799  auto const& msg = label + " prefetching";
800  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
801  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain_[sid], msg.c_str(), labelColorLight(label));
802  }
803 }
uint32_t labelColorLight(std::string const &label) const
std::vector< std::vector< nvtxRangeId_t > > stream_modules_
assert(be >=bs)
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
std::vector< nvtxDomainHandle_t > stream_domain_
tuple msg
Definition: mps_check.py:286
std::vector< std::atomic< bool > > streamFirstEventDone_

◆ preModuleGlobalBeginLumi()

void NVProfilerService::preModuleGlobalBeginLumi ( 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(), label, labelColor(), edm::ModuleCallingContext::moduleDescription(), edm::ModuleDescription::moduleLabel(), mps_check::msg, or, and skipFirstEvent_.

Referenced by NVProfilerService().

1085  {
1087  auto mid = mcc.moduleDescription()->id();
1088  auto const& label = mcc.moduleDescription()->moduleLabel();
1089  auto const& msg = label + " global begin lumi";
1090  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain_, msg.c_str(), labelColor(label));
1091  }
1092 }
char const * label
uint32_t labelColor(std::string const &label) const
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_
nvtxDomainHandle_t global_domain_
tuple msg
Definition: mps_check.py:286
std::atomic< bool > globalFirstEventDone_

◆ preModuleGlobalBeginRun()

void NVProfilerService::preModuleGlobalBeginRun ( 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(), label, labelColor(), edm::ModuleCallingContext::moduleDescription(), edm::ModuleDescription::moduleLabel(), mps_check::msg, or, and skipFirstEvent_.

Referenced by NVProfilerService().

1051  {
1053  auto mid = mcc.moduleDescription()->id();
1054  auto const& label = mcc.moduleDescription()->moduleLabel();
1055  auto const& msg = label + " global begin run";
1056  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain_, msg.c_str(), labelColor(label));
1057  }
1058 }
char const * label
uint32_t labelColor(std::string const &label) const
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_
nvtxDomainHandle_t global_domain_
tuple msg
Definition: mps_check.py:286
std::atomic< bool > globalFirstEventDone_

◆ preModuleGlobalEndLumi()

void NVProfilerService::preModuleGlobalEndLumi ( 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(), label, labelColor(), edm::ModuleCallingContext::moduleDescription(), edm::ModuleDescription::moduleLabel(), mps_check::msg, or, and skipFirstEvent_.

Referenced by NVProfilerService().

1102  {
1104  auto mid = mcc.moduleDescription()->id();
1105  auto const& label = mcc.moduleDescription()->moduleLabel();
1106  auto const& msg = label + " global end lumi";
1107  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain_, msg.c_str(), labelColor(label));
1108  }
1109 }
char const * label
uint32_t labelColor(std::string const &label) const
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_
nvtxDomainHandle_t global_domain_
tuple msg
Definition: mps_check.py:286
std::atomic< bool > globalFirstEventDone_

◆ preModuleGlobalEndRun()

void NVProfilerService::preModuleGlobalEndRun ( 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(), label, labelColor(), edm::ModuleCallingContext::moduleDescription(), edm::ModuleDescription::moduleLabel(), mps_check::msg, or, and skipFirstEvent_.

Referenced by NVProfilerService().

1068  {
1070  auto mid = mcc.moduleDescription()->id();
1071  auto const& label = mcc.moduleDescription()->moduleLabel();
1072  auto const& msg = label + " global end run";
1073  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain_, msg.c_str(), labelColor(label));
1074  }
1075 }
char const * label
uint32_t labelColor(std::string const &label) const
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_
nvtxDomainHandle_t global_domain_
tuple msg
Definition: mps_check.py:286
std::atomic< bool > globalFirstEventDone_

◆ preModuleStreamBeginLumi()

void NVProfilerService::preModuleStreamBeginLumi ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 1011 of file NVProfilerService.cc.

References cms::cuda::assert(), 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().

1011  {
1012  auto sid = sc.streamID();
1013  if (not skipFirstEvent_ or streamFirstEventDone_[sid]) {
1014  auto mid = mcc.moduleDescription()->id();
1015  auto const& label = mcc.moduleDescription()->moduleLabel();
1016  auto const& msg = label + " stream begin lumi";
1017  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
1018  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain_[sid], msg.c_str(), labelColor(label));
1019  }
1020 }
std::vector< std::vector< nvtxRangeId_t > > stream_modules_
assert(be >=bs)
char const * label
uint32_t labelColor(std::string const &label) const
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< nvtxDomainHandle_t > stream_domain_
tuple msg
Definition: mps_check.py:286
std::vector< std::atomic< bool > > streamFirstEventDone_

◆ preModuleStreamBeginRun()

void NVProfilerService::preModuleStreamBeginRun ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 971 of file NVProfilerService.cc.

References cms::cuda::assert(), 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().

971  {
972  auto sid = sc.streamID();
974  auto mid = mcc.moduleDescription()->id();
975  auto const& label = mcc.moduleDescription()->moduleLabel();
976  auto const& msg = label + " stream begin run";
977  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
978  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain_[sid], msg.c_str(), labelColor(label));
979  }
980 }
std::vector< std::vector< nvtxRangeId_t > > stream_modules_
assert(be >=bs)
char const * label
uint32_t labelColor(std::string const &label) const
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< nvtxDomainHandle_t > stream_domain_
tuple msg
Definition: mps_check.py:286
std::vector< std::atomic< bool > > streamFirstEventDone_

◆ preModuleStreamEndLumi()

void NVProfilerService::preModuleStreamEndLumi ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 1031 of file NVProfilerService.cc.

References cms::cuda::assert(), 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().

1031  {
1032  auto sid = sc.streamID();
1033  if (not skipFirstEvent_ or streamFirstEventDone_[sid]) {
1034  auto mid = mcc.moduleDescription()->id();
1035  auto const& label = mcc.moduleDescription()->moduleLabel();
1036  auto const& msg = label + " stream end lumi";
1037  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
1038  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain_[sid], msg.c_str(), labelColor(label));
1039  }
1040 }
std::vector< std::vector< nvtxRangeId_t > > stream_modules_
assert(be >=bs)
char const * label
uint32_t labelColor(std::string const &label) const
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< nvtxDomainHandle_t > stream_domain_
tuple msg
Definition: mps_check.py:286
std::vector< std::atomic< bool > > streamFirstEventDone_

◆ preModuleStreamEndRun()

void NVProfilerService::preModuleStreamEndRun ( edm::StreamContext const &  sc,
edm::ModuleCallingContext const &  mcc 
)

Definition at line 991 of file NVProfilerService.cc.

References cms::cuda::assert(), 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().

991  {
992  auto sid = sc.streamID();
994  auto mid = mcc.moduleDescription()->id();
995  auto const& label = mcc.moduleDescription()->moduleLabel();
996  auto const& msg = label + " stream end run";
997  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
998  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain_[sid], msg.c_str(), labelColor(label));
999  }
1000 }
std::vector< std::vector< nvtxRangeId_t > > stream_modules_
assert(be >=bs)
char const * label
uint32_t labelColor(std::string const &label) const
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< nvtxDomainHandle_t > stream_domain_
tuple msg
Definition: mps_check.py:286
std::vector< std::atomic< bool > > streamFirstEventDone_

◆ preOpenFile()

void NVProfilerService::preOpenFile ( std::string const &  lfn)

Definition at line 589 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, alignCSCRings::s, and skipFirstEvent_.

Referenced by NVProfilerService().

589  {
591  nvtxDomainRangePush(global_domain_, ("open file "s + lfn).c_str());
592  }
593 }
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 global_domain_
std::atomic< bool > globalFirstEventDone_

◆ prePathEvent()

void NVProfilerService::prePathEvent ( edm::StreamContext const &  sc,
edm::PathContext const &  pc 
)

Definition at line 778 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

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

◆ preSourceConstruction()

void NVProfilerService::preSourceConstruction ( edm::ModuleDescription const &  desc)

Definition at line 1119 of file NVProfilerService.cc.

References callgraph_, submitPVResolutionJobs::desc, global_domain_, global_modules_, label, labelColor(), mps_check::msg, ProcessCallGraph::preSourceConstruction(), and skipFirstEvent_.

Referenced by NVProfilerService().

1119  {
1121 
1122  if (not skipFirstEvent_) {
1123  auto mid = desc.id();
1124  global_modules_.grow_to_at_least(mid + 1);
1125  auto const& label = desc.moduleLabel();
1126  auto const& msg = label + " construction";
1127  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain_, msg.c_str(), labelColor(label));
1128  }
1129 }
ProcessCallGraph callgraph_
char const * label
uint32_t labelColor(std::string const &label) const
void preSourceConstruction(edm::ModuleDescription const &)
tbb::concurrent_vector< nvtxRangeId_t > global_modules_
nvtxDomainHandle_t global_domain_
tuple msg
Definition: mps_check.py:286

◆ preSourceEvent()

void NVProfilerService::preSourceEvent ( edm::StreamID  sid)

Definition at line 553 of file NVProfilerService.cc.

References or, skipFirstEvent_, stream_domain_, and streamFirstEventDone_.

Referenced by NVProfilerService().

553  {
555  nvtxDomainRangePush(stream_domain_[sid], "source");
556  }
557 }
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< nvtxDomainHandle_t > stream_domain_
std::vector< std::atomic< bool > > streamFirstEventDone_

◆ preSourceLumi()

void NVProfilerService::preSourceLumi ( edm::LuminosityBlockIndex  index)

Definition at line 565 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

565  {
567  nvtxDomainRangePush(global_domain_, "source lumi");
568  }
569 }
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 global_domain_
std::atomic< bool > globalFirstEventDone_

◆ preSourceRun()

void NVProfilerService::preSourceRun ( edm::RunIndex  index)

Definition at line 577 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

577  {
579  nvtxDomainRangePush(global_domain_, "source run");
580  }
581 }
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 global_domain_
std::atomic< bool > globalFirstEventDone_

◆ preStreamBeginLumi()

void NVProfilerService::preStreamBeginLumi ( edm::StreamContext const &  sc)

Definition at line 729 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

729  {
730  auto sid = sc.streamID();
732  nvtxDomainRangePush(stream_domain_[sid], "stream begin lumi");
733  }
734 }
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< nvtxDomainHandle_t > stream_domain_
std::vector< std::atomic< bool > > streamFirstEventDone_

◆ preStreamBeginRun()

void NVProfilerService::preStreamBeginRun ( edm::StreamContext const &  sc)

Definition at line 677 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

677  {
678  auto sid = sc.streamID();
680  nvtxDomainRangePush(stream_domain_[sid], "stream begin run");
681  }
682 }
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< nvtxDomainHandle_t > stream_domain_
std::vector< std::atomic< bool > > streamFirstEventDone_

◆ preStreamEndLumi()

void NVProfilerService::preStreamEndLumi ( edm::StreamContext const &  sc)

Definition at line 743 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

743  {
744  auto sid = sc.streamID();
745  nvtxDomainRangePush(stream_domain_[sid], "stream end lumi");
746 }
std::vector< nvtxDomainHandle_t > stream_domain_

◆ preStreamEndRun()

void NVProfilerService::preStreamEndRun ( edm::StreamContext const &  sc)

Definition at line 691 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

691  {
692  auto sid = sc.streamID();
694  nvtxDomainRangePush(stream_domain_[sid], "stream end run");
695  }
696 }
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< nvtxDomainHandle_t > stream_domain_
std::vector< std::atomic< bool > > streamFirstEventDone_

Member Data Documentation

◆ callgraph_

ProcessCallGraph NVProfilerService::callgraph_
private

Definition at line 287 of file NVProfilerService.cc.

Referenced by preBeginJob(), and preSourceConstruction().

◆ event_

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

Definition at line 295 of file NVProfilerService.cc.

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

◆ global_domain_

nvtxDomainHandle_t NVProfilerService::global_domain_
private

◆ global_modules_

tbb::concurrent_vector<nvtxRangeId_t> NVProfilerService::global_modules_
private

◆ globalFirstEventDone_

std::atomic<bool> NVProfilerService::globalFirstEventDone_ = false
private

◆ highlightModules_

std::vector<std::string> NVProfilerService::highlightModules_
private

Definition at line 289 of file NVProfilerService.cc.

Referenced by NVProfilerService().

◆ showModulePrefetching_

const bool NVProfilerService::showModulePrefetching_
private

Definition at line 290 of file NVProfilerService.cc.

Referenced by NVProfilerService().

◆ skipFirstEvent_

const bool NVProfilerService::skipFirstEvent_
private

Definition at line 291 of file NVProfilerService.cc.

Referenced by NVProfilerService(), postBeginJob(), postCloseFile(), postEndJob(), postEvent(), postGlobalBeginLumi(), postGlobalBeginRun(), postGlobalEndLumi(), postGlobalEndRun(), postModuleBeginJob(), postModuleBeginStream(), postModuleConstruction(), postModuleDestruction(), 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(), preModuleDestruction(), preModuleEndJob(), preModuleEndStream(), preModuleEvent(), preModuleEventAcquire(), preModuleEventPrefetching(), preModuleGlobalBeginLumi(), preModuleGlobalBeginRun(), preModuleGlobalEndLumi(), preModuleGlobalEndRun(), preModuleStreamBeginLumi(), preModuleStreamBeginRun(), preModuleStreamEndLumi(), preModuleStreamEndRun(), preOpenFile(), prePathEvent(), preSourceConstruction(), preSourceEvent(), preSourceLumi(), preSourceRun(), preStreamBeginLumi(), preStreamBeginRun(), and preStreamEndRun().

◆ stream_domain_

std::vector<nvtxDomainHandle_t> NVProfilerService::stream_domain_
private

◆ stream_modules_

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

◆ streamFirstEventDone_

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