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

Constructor & Destructor Documentation

◆ NVProfilerService()

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

Definition at line 309 of file NVProfilerService.cc.

References global_domain_, highlightModules_, 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().

310  : highlightModules_(config.getUntrackedParameter<std::vector<std::string>>("highlightModules")),
311  showModulePrefetching_(config.getUntrackedParameter<bool>("showModulePrefetching")),
312  skipFirstEvent_(config.getUntrackedParameter<bool>("skipFirstEvent")) {
313  // make sure that CUDA is initialised, and that the CUDAService destructor is called after this service's destructor
314  edm::Service<CUDAService> cudaService;
315 
317 
318  // create the NVTX domain for global EDM transitions
319  global_domain_ = nvtxDomainCreate("EDM Global");
320 
321  // enables profile collection; if profiling is already enabled it has no effect
322  if (not skipFirstEvent_) {
323  cudaProfilerStart();
324  }
325 
327 
328  // these signal pair are NOT guaranteed to be called by the same thread
331 
332  // there is no preEndJob() signal
334 
335  // these signal pair are NOT guaranteed to be called by the same thread
338 
339  // these signal pair are NOT guaranteed to be called by the same thread
342 
343  // these signal pair are NOT guaranteed to be called by the same thread
346 
347  // these signal pair are NOT guaranteed to be called by the same thread
350 
351  // these signal pair are NOT guaranteed to be called by the same thread
354 
355  // these signal pair are NOT guaranteed to be called by the same thread
358 
359  // these signal pair are NOT guaranteed to be called by the same thread
362 
363  // these signal pair are NOT guaranteed to be called by the same thread
366 
367  // these signal pair are NOT guaranteed to be called by the same thread
370 
371  // these signal pair are NOT guaranteed to be called by the same thread
374 
376  // these signal pair are NOT guaranteed to be called by the same thread
379  }
380 
381  // these signal pair are guaranteed to be called by the same thread
384 
385  // these signal pair are guaranteed to be called by the same thread
388 
389  // these signal pair are guaranteed to be called by the same thread
392 
393  // these signal pair are guaranteed to be called by the same thread
396 
397  // these signal pair are guaranteed to be called by the same thread
400 
401  // these signal pair are guaranteed to be called by the same thread
404 
405  // these signal pair are guaranteed to be called by the same thread
408 
409  // these signal pair are guaranteed to be called by the same thread
412 
413  // these signal pair are guaranteed to be called by the same thread
416 
417  // these signal pair are guaranteed to be called by the same thread
420 
421  // these signal pair are guaranteed to be called by the same thread
424 
425  // these signal pair are guaranteed to be called by the same thread
428 
429  // these signal pair are guaranteed to be called by the same thread
432 
433  // these signal pair are guaranteed to be called by the same thread
436 
437  // these signal pair are guaranteed to be called by the same thread
440 
441  // these signal pair are guaranteed to be called by the same thread
444 
445  // these signal pair are guaranteed to be called by the same thread
448 
449  // these signal pair are guaranteed to be called by the same thread
452 
453  // these signal pair are guaranteed to be called by the same thread
456 
457  // these signal pair are guaranteed to be called by the same thread
460 
461  // these signal pair are guaranteed to be called by the same thread
464 
465  // these signal pair are guaranteed to be called by the same thread
468 
469  // these signal pair are guaranteed to be called by the same thread
472 
473  // these signal pair are guaranteed to be called by the same thread
476 }
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)
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 478 of file NVProfilerService.cc.

References global_domain_, and stream_domain_.

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

Member Function Documentation

◆ fillDescriptions()

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

Definition at line 486 of file NVProfilerService.cc.

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

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

References label.

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

References label.

Referenced by preModuleEventPrefetching().

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

◆ postBeginJob()

void NVProfilerService::postBeginJob ( )

Definition at line 544 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

544  {
546  nvtxDomainMark(global_domain_, "postBeginJob");
547  }
548 }
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 610 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

610  {
612  nvtxDomainRangePop(global_domain_);
613  }
614 }
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 550 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

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

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

Referenced by NVProfilerService().

765  {
766  auto sid = sc.streamID();
768  nvtxDomainRangeEnd(stream_domain_[sid], event_[sid]);
769  event_[sid] = nvtxInvalidRangeId;
770  } else {
771  streamFirstEventDone_[sid] = true;
772  auto identity = [](bool x) { return x; };
773  if (std::all_of(streamFirstEventDone_.begin(), streamFirstEventDone_.end(), identity)) {
774  bool expected = false;
775  if (globalFirstEventDone_.compare_exchange_strong(expected, true))
776  cudaProfilerStart();
777  }
778  }
779 }
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 963 of file NVProfilerService.cc.

Referenced by NVProfilerService().

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

◆ postGlobalBeginLumi()

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

Definition at line 714 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

714  {
716  nvtxDomainRangePop(global_domain_);
717  }
718 }
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 662 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

662  {
664  nvtxDomainRangePop(global_domain_);
665  }
666 }
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 726 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

726  {
728  nvtxDomainRangePop(global_domain_);
729  }
730 }
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 674 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

674  {
676  nvtxDomainRangePop(global_domain_);
677  }
678 }
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 862 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

862  {
863  if (not skipFirstEvent_) {
864  auto mid = desc.id();
865  nvtxDomainRangeEnd(global_domain_, global_modules_[mid]);
866  global_modules_[mid] = nvtxInvalidRangeId;
867  }
868 }
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 627 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().

627  {
628  auto sid = sc.streamID();
630  auto mid = mcc.moduleDescription()->id();
631  nvtxDomainRangeEnd(stream_domain_[sid], stream_modules_[sid][mid]);
632  stream_modules_[sid][mid] = nvtxInvalidRangeId;
633  }
634 }
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 827 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

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

◆ postModuleDestruction()

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

Definition at line 845 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

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

◆ postModuleEndJob()

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

Definition at line 879 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

879  {
881  auto mid = desc.id();
882  nvtxDomainRangeEnd(global_domain_, global_modules_[mid]);
883  global_modules_[mid] = nvtxInvalidRangeId;
884  }
885 }
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 647 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().

647  {
648  auto sid = sc.streamID();
650  auto mid = mcc.moduleDescription()->id();
651  nvtxDomainRangeEnd(stream_domain_[sid], stream_modules_[sid][mid]);
652  stream_modules_[sid][mid] = nvtxInvalidRangeId;
653  }
654 }
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 917 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().

917  {
918  auto sid = sc.streamID();
920  auto mid = mcc.moduleDescription()->id();
921  nvtxDomainRangeEnd(stream_domain_[sid], stream_modules_[sid][mid]);
922  stream_modules_[sid][mid] = nvtxInvalidRangeId;
923  }
924 }
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 898 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().

898  {
899  auto sid = sc.streamID();
901  auto mid = mcc.moduleDescription()->id();
902  nvtxDomainRangeEnd(stream_domain_[sid], stream_modules_[sid][mid]);
903  stream_modules_[sid][mid] = nvtxInvalidRangeId;
904  }
905 }
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 939 of file NVProfilerService.cc.

Referenced by NVProfilerService().

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

◆ postModuleEventPrefetching()

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

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

808  {
809  auto sid = sc.streamID();
811  auto mid = mcc.moduleDescription()->id();
812  nvtxDomainRangeEnd(stream_domain_[sid], stream_modules_[sid][mid]);
813  stream_modules_[sid][mid] = nvtxInvalidRangeId;
814  }
815 }
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 1097 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

1097  {
1099  auto mid = mcc.moduleDescription()->id();
1100  nvtxDomainRangeEnd(global_domain_, global_modules_[mid]);
1101  global_modules_[mid] = nvtxInvalidRangeId;
1102  }
1103 }
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 1063 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

1063  {
1065  auto mid = mcc.moduleDescription()->id();
1066  nvtxDomainRangeEnd(global_domain_, global_modules_[mid]);
1067  global_modules_[mid] = nvtxInvalidRangeId;
1068  }
1069 }
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 1114 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

1114  {
1116  auto mid = mcc.moduleDescription()->id();
1117  nvtxDomainRangeEnd(global_domain_, global_modules_[mid]);
1118  global_modules_[mid] = nvtxInvalidRangeId;
1119  }
1120 }
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 1080 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

1080  {
1082  auto mid = mcc.moduleDescription()->id();
1083  nvtxDomainRangeEnd(global_domain_, global_modules_[mid]);
1084  global_modules_[mid] = nvtxInvalidRangeId;
1085  }
1086 }
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 1025 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().

1025  {
1026  auto sid = sc.streamID();
1027  if (not skipFirstEvent_ or streamFirstEventDone_[sid]) {
1028  auto mid = mcc.moduleDescription()->id();
1029  nvtxDomainRangeEnd(stream_domain_[sid], stream_modules_[sid][mid]);
1030  stream_modules_[sid][mid] = nvtxInvalidRangeId;
1031  }
1032 }
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 985 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().

985  {
986  auto sid = sc.streamID();
988  auto mid = mcc.moduleDescription()->id();
989  nvtxDomainRangeEnd(stream_domain_[sid], stream_modules_[sid][mid]);
990  stream_modules_[sid][mid] = nvtxInvalidRangeId;
991  }
992 }
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 1045 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().

1045  {
1046  auto sid = sc.streamID();
1047  if (not skipFirstEvent_ or streamFirstEventDone_[sid]) {
1048  auto mid = mcc.moduleDescription()->id();
1049  nvtxDomainRangeEnd(stream_domain_[sid], stream_modules_[sid][mid]);
1050  stream_modules_[sid][mid] = nvtxInvalidRangeId;
1051  }
1052 }
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 1005 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().

1005  {
1006  auto sid = sc.streamID();
1007  if (not skipFirstEvent_ or streamFirstEventDone_[sid]) {
1008  auto mid = mcc.moduleDescription()->id();
1009  nvtxDomainRangeEnd(stream_domain_[sid], stream_modules_[sid][mid]);
1010  stream_modules_[sid][mid] = nvtxInvalidRangeId;
1011  }
1012 }
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 598 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

598  {
600  nvtxDomainRangePop(global_domain_);
601  }
602 }
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 788 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

790  {
791  auto sid = sc.streamID();
793  nvtxDomainMark(global_domain_, ("after path "s + pc.pathName()).c_str());
794  }
795 }
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 1134 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

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

◆ postSourceEvent()

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

Definition at line 562 of file NVProfilerService.cc.

References or, skipFirstEvent_, stream_domain_, and streamFirstEventDone_.

Referenced by NVProfilerService().

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

◆ postSourceLumi()

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

Definition at line 574 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

574  {
576  nvtxDomainRangePop(global_domain_);
577  }
578 }
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 586 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

586  {
588  nvtxDomainRangePop(global_domain_);
589  }
590 }
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 739 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

739  {
740  auto sid = sc.streamID();
742  nvtxDomainRangePop(stream_domain_[sid]);
743  }
744 }
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 687 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

687  {
688  auto sid = sc.streamID();
690  nvtxDomainRangePop(stream_domain_[sid]);
691  }
692 }
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 751 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

751  {
752  auto sid = sc.streamID();
754  nvtxDomainRangePop(stream_domain_[sid]);
755  }
756 }
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 701 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

701  {
702  auto sid = sc.streamID();
704  nvtxDomainRangePop(stream_domain_[sid]);
705  }
706 }
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 505 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().

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

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

Referenced by NVProfilerService().

531  {
532  callgraph_.preBeginJob(pathsAndConsumes, context);
533  nvtxDomainMark(global_domain_, "preBeginJob");
534 
535  // this assumes that preBeginJob is not called concurrently with the modules' beginJob method
536  // or the preBeginJob for a subprocess
537  unsigned int modules = callgraph_.size();
538  global_modules_.resize(modules, nvtxInvalidRangeId);
539  for (unsigned int sid = 0; sid < stream_modules_.size(); ++sid) {
540  stream_modules_[sid].resize(modules, nvtxInvalidRangeId);
541  }
542 }
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 604 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

604  {
606  nvtxDomainRangePush(global_domain_, ("close file "s + lfn).c_str());
607  }
608 }
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 758 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

758  {
759  auto sid = sc.streamID();
761  event_[sid] = nvtxDomainRangeStartColor(stream_domain_[sid], "event", nvtxDarkGreen);
762  }
763 }
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 950 of file NVProfilerService.cc.

Referenced by NVProfilerService().

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

◆ preGlobalBeginLumi()

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

Definition at line 708 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

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

◆ preGlobalBeginRun()

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

Definition at line 656 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

656  {
658  nvtxDomainRangePush(global_domain_, "global begin run");
659  }
660 }
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 720 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

720  {
722  nvtxDomainRangePush(global_domain_, "global end lumi");
723  }
724 }
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 668 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

668  {
670  nvtxDomainRangePush(global_domain_, "global end run");
671  }
672 }
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 853 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

853  {
854  if (not skipFirstEvent_) {
855  auto mid = desc.id();
856  auto const& label = desc.moduleLabel();
857  auto const& msg = label + " begin job";
858  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain_, msg.c_str(), labelColor(label));
859  }
860 }
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 616 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().

616  {
617  auto sid = sc.streamID();
619  auto mid = mcc.moduleDescription()->id();
620  auto const& label = mcc.moduleDescription()->moduleLabel();
621  auto const& msg = label + " begin stream";
622  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
623  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain_[sid], msg.c_str(), labelColor(label));
624  }
625 }
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 817 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

817  {
818  if (not skipFirstEvent_) {
819  auto mid = desc.id();
820  global_modules_.grow_to_at_least(mid + 1);
821  auto const& label = desc.moduleLabel();
822  auto const& msg = label + " construction";
823  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain_, msg.c_str(), labelColor(label));
824  }
825 }
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 835 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

835  {
836  if (not skipFirstEvent_) {
837  auto mid = desc.id();
838  global_modules_.grow_to_at_least(mid + 1);
839  auto const& label = desc.moduleLabel();
840  auto const& msg = label + " destruction";
841  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain_, msg.c_str(), labelColor(label));
842  }
843 }
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 870 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

870  {
872  auto mid = desc.id();
873  auto const& label = desc.moduleLabel();
874  auto const& msg = label + " end job";
875  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain_, msg.c_str(), labelColor(label));
876  }
877 }
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 636 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().

636  {
637  auto sid = sc.streamID();
639  auto mid = mcc.moduleDescription()->id();
640  auto const& label = mcc.moduleDescription()->moduleLabel();
641  auto const& msg = label + " end stream";
642  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
643  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain_[sid], msg.c_str(), labelColor(label));
644  }
645 }
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 907 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().

907  {
908  auto sid = sc.streamID();
910  auto mid = mcc.moduleDescription()->id();
911  auto const& label = mcc.moduleDescription()->moduleLabel();
912  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
913  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain_[sid], label.c_str(), labelColor(label));
914  }
915 }
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 887 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().

887  {
888  auto sid = sc.streamID();
890  auto mid = mcc.moduleDescription()->id();
891  auto const& label = mcc.moduleDescription()->moduleLabel();
892  auto const& msg = label + " acquire";
893  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
894  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain_[sid], msg.c_str(), labelColor(label));
895  }
896 }
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 926 of file NVProfilerService.cc.

Referenced by NVProfilerService().

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

◆ preModuleEventPrefetching()

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

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

797  {
798  auto sid = sc.streamID();
800  auto mid = mcc.moduleDescription()->id();
801  auto const& label = mcc.moduleDescription()->moduleLabel();
802  auto const& msg = label + " prefetching";
803  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
804  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain_[sid], msg.c_str(), labelColorLight(label));
805  }
806 }
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 1088 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().

1088  {
1090  auto mid = mcc.moduleDescription()->id();
1091  auto const& label = mcc.moduleDescription()->moduleLabel();
1092  auto const& msg = label + " global begin lumi";
1093  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain_, msg.c_str(), labelColor(label));
1094  }
1095 }
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 1054 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().

1054  {
1056  auto mid = mcc.moduleDescription()->id();
1057  auto const& label = mcc.moduleDescription()->moduleLabel();
1058  auto const& msg = label + " global begin run";
1059  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain_, msg.c_str(), labelColor(label));
1060  }
1061 }
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 1105 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().

1105  {
1107  auto mid = mcc.moduleDescription()->id();
1108  auto const& label = mcc.moduleDescription()->moduleLabel();
1109  auto const& msg = label + " global end lumi";
1110  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain_, msg.c_str(), labelColor(label));
1111  }
1112 }
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 1071 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().

1071  {
1073  auto mid = mcc.moduleDescription()->id();
1074  auto const& label = mcc.moduleDescription()->moduleLabel();
1075  auto const& msg = label + " global end run";
1076  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain_, msg.c_str(), labelColor(label));
1077  }
1078 }
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 1014 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().

1014  {
1015  auto sid = sc.streamID();
1016  if (not skipFirstEvent_ or streamFirstEventDone_[sid]) {
1017  auto mid = mcc.moduleDescription()->id();
1018  auto const& label = mcc.moduleDescription()->moduleLabel();
1019  auto const& msg = label + " stream begin lumi";
1020  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
1021  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain_[sid], msg.c_str(), labelColor(label));
1022  }
1023 }
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 974 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().

974  {
975  auto sid = sc.streamID();
977  auto mid = mcc.moduleDescription()->id();
978  auto const& label = mcc.moduleDescription()->moduleLabel();
979  auto const& msg = label + " stream begin run";
980  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
981  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain_[sid], msg.c_str(), labelColor(label));
982  }
983 }
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 1034 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().

1034  {
1035  auto sid = sc.streamID();
1036  if (not skipFirstEvent_ or streamFirstEventDone_[sid]) {
1037  auto mid = mcc.moduleDescription()->id();
1038  auto const& label = mcc.moduleDescription()->moduleLabel();
1039  auto const& msg = label + " stream end lumi";
1040  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
1041  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain_[sid], msg.c_str(), labelColor(label));
1042  }
1043 }
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 994 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().

994  {
995  auto sid = sc.streamID();
997  auto mid = mcc.moduleDescription()->id();
998  auto const& label = mcc.moduleDescription()->moduleLabel();
999  auto const& msg = label + " stream end run";
1000  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
1001  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain_[sid], msg.c_str(), labelColor(label));
1002  }
1003 }
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 592 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

592  {
594  nvtxDomainRangePush(global_domain_, ("open file "s + lfn).c_str());
595  }
596 }
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 781 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

781  {
782  auto sid = sc.streamID();
784  nvtxDomainMark(global_domain_, ("before path "s + pc.pathName()).c_str());
785  }
786 }
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 1122 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

1122  {
1124 
1125  if (not skipFirstEvent_) {
1126  auto mid = desc.id();
1127  global_modules_.grow_to_at_least(mid + 1);
1128  auto const& label = desc.moduleLabel();
1129  auto const& msg = label + " construction";
1130  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain_, msg.c_str(), labelColor(label));
1131  }
1132 }
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 556 of file NVProfilerService.cc.

References or, skipFirstEvent_, stream_domain_, and streamFirstEventDone_.

Referenced by NVProfilerService().

556  {
558  nvtxDomainRangePush(stream_domain_[sid], "source");
559  }
560 }
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 568 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

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

◆ preSourceRun()

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

Definition at line 580 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

580  {
582  nvtxDomainRangePush(global_domain_, "source run");
583  }
584 }
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 732 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

732  {
733  auto sid = sc.streamID();
735  nvtxDomainRangePush(stream_domain_[sid], "stream begin lumi");
736  }
737 }
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 680 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

680  {
681  auto sid = sc.streamID();
683  nvtxDomainRangePush(stream_domain_[sid], "stream begin run");
684  }
685 }
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 746 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

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

◆ preStreamEndRun()

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

Definition at line 694 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

694  {
695  auto sid = sc.streamID();
697  nvtxDomainRangePush(stream_domain_[sid], "stream end run");
698  }
699 }
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 292 of file NVProfilerService.cc.

Referenced by preBeginJob(), and preSourceConstruction().

◆ event_

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

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

Referenced by NVProfilerService().

◆ showModulePrefetching_

const bool NVProfilerService::showModulePrefetching_
private

Definition at line 295 of file NVProfilerService.cc.

Referenced by NVProfilerService().

◆ skipFirstEvent_

const bool NVProfilerService::skipFirstEvent_
private

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