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

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

Constructor & Destructor Documentation

◆ NVProfilerService()

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

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

306  : highlightModules_(config.getUntrackedParameter<std::vector<std::string>>("highlightModules")),
307  showModulePrefetching_(config.getUntrackedParameter<bool>("showModulePrefetching")),
308  skipFirstEvent_(config.getUntrackedParameter<bool>("skipFirstEvent")) {
309  // make sure that CUDA is initialised, and that the CUDAService destructor is called after this service's destructor
310  edm::Service<CUDAService> cudaService;
311 
313 
314  // create the NVTX domain for global EDM transitions
315  global_domain_ = nvtxDomainCreate("EDM Global");
316 
317  // enables profile collection; if profiling is already enabled it has no effect
318  if (not skipFirstEvent_) {
319  cudaProfilerStart();
320  }
321 
323 
324  // these signal pair are NOT guaranteed to be called by the same thread
327 
328  // there is no preEndJob() signal
330 
331  // these signal pair are NOT guaranteed to be called by the same thread
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 
372  // these signal pair are NOT guaranteed to be called by the same thread
375  }
376 
377  // these signal pair are guaranteed to be called by the same thread
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 }
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 474 of file NVProfilerService.cc.

References global_domain_, and stream_domain_.

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

Member Function Documentation

◆ fillDescriptions()

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

Definition at line 482 of file NVProfilerService.cc.

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

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

References label.

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

References label.

Referenced by preModuleEventPrefetching().

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

◆ postBeginJob()

void NVProfilerService::postBeginJob ( )

Definition at line 539 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

539  {
541  nvtxDomainMark(global_domain_, "postBeginJob");
542  }
543 }
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 605 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

605  {
607  nvtxDomainRangePop(global_domain_);
608  }
609 }
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 545 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

545  {
547  nvtxDomainMark(global_domain_, "postEndJob");
548  }
549 }
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 760 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

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

Referenced by NVProfilerService().

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

◆ postGlobalBeginLumi()

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

Definition at line 709 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

709  {
711  nvtxDomainRangePop(global_domain_);
712  }
713 }
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 657 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

657  {
659  nvtxDomainRangePop(global_domain_);
660  }
661 }
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 721 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

721  {
723  nvtxDomainRangePop(global_domain_);
724  }
725 }
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 669 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

669  {
671  nvtxDomainRangePop(global_domain_);
672  }
673 }
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 857 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

857  {
858  if (not skipFirstEvent_) {
859  auto mid = desc.id();
860  nvtxDomainRangeEnd(global_domain_, global_modules_[mid]);
861  global_modules_[mid] = nvtxInvalidRangeId;
862  }
863 }
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 622 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().

622  {
623  auto sid = sc.streamID();
625  auto mid = mcc.moduleDescription()->id();
626  nvtxDomainRangeEnd(stream_domain_[sid], stream_modules_[sid][mid]);
627  stream_modules_[sid][mid] = nvtxInvalidRangeId;
628  }
629 }
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 822 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

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

◆ postModuleDestruction()

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

Definition at line 840 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

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

◆ postModuleEndJob()

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

Definition at line 874 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

874  {
876  auto mid = desc.id();
877  nvtxDomainRangeEnd(global_domain_, global_modules_[mid]);
878  global_modules_[mid] = nvtxInvalidRangeId;
879  }
880 }
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 642 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().

642  {
643  auto sid = sc.streamID();
645  auto mid = mcc.moduleDescription()->id();
646  nvtxDomainRangeEnd(stream_domain_[sid], stream_modules_[sid][mid]);
647  stream_modules_[sid][mid] = nvtxInvalidRangeId;
648  }
649 }
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 912 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().

912  {
913  auto sid = sc.streamID();
915  auto mid = mcc.moduleDescription()->id();
916  nvtxDomainRangeEnd(stream_domain_[sid], stream_modules_[sid][mid]);
917  stream_modules_[sid][mid] = nvtxInvalidRangeId;
918  }
919 }
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 893 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().

893  {
894  auto sid = sc.streamID();
896  auto mid = mcc.moduleDescription()->id();
897  nvtxDomainRangeEnd(stream_domain_[sid], stream_modules_[sid][mid]);
898  stream_modules_[sid][mid] = nvtxInvalidRangeId;
899  }
900 }
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 934 of file NVProfilerService.cc.

Referenced by NVProfilerService().

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

◆ postModuleEventPrefetching()

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

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

803  {
804  auto sid = sc.streamID();
806  auto mid = mcc.moduleDescription()->id();
807  nvtxDomainRangeEnd(stream_domain_[sid], stream_modules_[sid][mid]);
808  stream_modules_[sid][mid] = nvtxInvalidRangeId;
809  }
810 }
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 1092 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

1092  {
1094  auto mid = mcc.moduleDescription()->id();
1095  nvtxDomainRangeEnd(global_domain_, global_modules_[mid]);
1096  global_modules_[mid] = nvtxInvalidRangeId;
1097  }
1098 }
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 1058 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

1058  {
1060  auto mid = mcc.moduleDescription()->id();
1061  nvtxDomainRangeEnd(global_domain_, global_modules_[mid]);
1062  global_modules_[mid] = nvtxInvalidRangeId;
1063  }
1064 }
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 1109 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

1109  {
1111  auto mid = mcc.moduleDescription()->id();
1112  nvtxDomainRangeEnd(global_domain_, global_modules_[mid]);
1113  global_modules_[mid] = nvtxInvalidRangeId;
1114  }
1115 }
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 1075 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

1075  {
1077  auto mid = mcc.moduleDescription()->id();
1078  nvtxDomainRangeEnd(global_domain_, global_modules_[mid]);
1079  global_modules_[mid] = nvtxInvalidRangeId;
1080  }
1081 }
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 1020 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().

1020  {
1021  auto sid = sc.streamID();
1022  if (not skipFirstEvent_ or streamFirstEventDone_[sid]) {
1023  auto mid = mcc.moduleDescription()->id();
1024  nvtxDomainRangeEnd(stream_domain_[sid], stream_modules_[sid][mid]);
1025  stream_modules_[sid][mid] = nvtxInvalidRangeId;
1026  }
1027 }
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 980 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().

980  {
981  auto sid = sc.streamID();
983  auto mid = mcc.moduleDescription()->id();
984  nvtxDomainRangeEnd(stream_domain_[sid], stream_modules_[sid][mid]);
985  stream_modules_[sid][mid] = nvtxInvalidRangeId;
986  }
987 }
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 1040 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().

1040  {
1041  auto sid = sc.streamID();
1042  if (not skipFirstEvent_ or streamFirstEventDone_[sid]) {
1043  auto mid = mcc.moduleDescription()->id();
1044  nvtxDomainRangeEnd(stream_domain_[sid], stream_modules_[sid][mid]);
1045  stream_modules_[sid][mid] = nvtxInvalidRangeId;
1046  }
1047 }
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 1000 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().

1000  {
1001  auto sid = sc.streamID();
1002  if (not skipFirstEvent_ or streamFirstEventDone_[sid]) {
1003  auto mid = mcc.moduleDescription()->id();
1004  nvtxDomainRangeEnd(stream_domain_[sid], stream_modules_[sid][mid]);
1005  stream_modules_[sid][mid] = nvtxInvalidRangeId;
1006  }
1007 }
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 593 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

593  {
595  nvtxDomainRangePop(global_domain_);
596  }
597 }
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 783 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

785  {
786  auto sid = sc.streamID();
788  nvtxDomainMark(global_domain_, ("after path "s + pc.pathName()).c_str());
789  }
790 }
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 1127 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

1127  {
1128  if (not skipFirstEvent_) {
1129  auto mid = desc.id();
1130  nvtxDomainRangeEnd(global_domain_, global_modules_[mid]);
1131  global_modules_[mid] = nvtxInvalidRangeId;
1132  }
1133 }
tbb::concurrent_vector< nvtxRangeId_t > global_modules_
nvtxDomainHandle_t global_domain_

◆ postSourceEvent()

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

Definition at line 557 of file NVProfilerService.cc.

References or, skipFirstEvent_, stream_domain_, and streamFirstEventDone_.

Referenced by NVProfilerService().

557  {
559  nvtxDomainRangePop(stream_domain_[sid]);
560  }
561 }
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 569 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

569  {
571  nvtxDomainRangePop(global_domain_);
572  }
573 }
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 581 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

581  {
583  nvtxDomainRangePop(global_domain_);
584  }
585 }
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 734 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

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

◆ postStreamBeginRun()

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

Definition at line 682 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

682  {
683  auto sid = sc.streamID();
685  nvtxDomainRangePop(stream_domain_[sid]);
686  }
687 }
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 746 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

746  {
747  auto sid = sc.streamID();
749  nvtxDomainRangePop(stream_domain_[sid]);
750  }
751 }
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 696 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

696  {
697  auto sid = sc.streamID();
699  nvtxDomainRangePop(stream_domain_[sid]);
700  }
701 }
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 501 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().

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

Definition at line 526 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

527  {
528  nvtxDomainMark(global_domain_, "preBeginJob");
529 
530  // FIXME this probably works only in the absence of subprocesses
531  // size() + 1 because pathsAndConsumes.allModules() does not include the source
532  unsigned int modules = pathsAndConsumes.allModules().size() + 1;
533  global_modules_.resize(modules, nvtxInvalidRangeId);
534  for (unsigned int sid = 0; sid < stream_modules_.size(); ++sid) {
535  stream_modules_[sid].resize(modules, nvtxInvalidRangeId);
536  }
537 }
std::vector< std::vector< nvtxRangeId_t > > stream_modules_
tbb::concurrent_vector< nvtxRangeId_t > global_modules_
nvtxDomainHandle_t global_domain_

◆ preCloseFile()

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

Definition at line 599 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

599  {
601  nvtxDomainRangePush(global_domain_, ("close file "s + lfn).c_str());
602  }
603 }
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 753 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

753  {
754  auto sid = sc.streamID();
756  event_[sid] = nvtxDomainRangeStartColor(stream_domain_[sid], "event", nvtxDarkGreen);
757  }
758 }
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 945 of file NVProfilerService.cc.

Referenced by NVProfilerService().

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

◆ preGlobalBeginLumi()

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

Definition at line 703 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

703  {
705  nvtxDomainRangePush(global_domain_, "global begin lumi");
706  }
707 }
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 651 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

651  {
653  nvtxDomainRangePush(global_domain_, "global begin run");
654  }
655 }
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 715 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

715  {
717  nvtxDomainRangePush(global_domain_, "global end lumi");
718  }
719 }
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 663 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

663  {
665  nvtxDomainRangePush(global_domain_, "global end run");
666  }
667 }
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 848 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

848  {
849  if (not skipFirstEvent_) {
850  auto mid = desc.id();
851  auto const& label = desc.moduleLabel();
852  auto const& msg = label + " begin job";
853  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain_, msg.c_str(), labelColor(label));
854  }
855 }
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:285

◆ preModuleBeginStream()

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

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

611  {
612  auto sid = sc.streamID();
614  auto mid = mcc.moduleDescription()->id();
615  auto const& label = mcc.moduleDescription()->moduleLabel();
616  auto const& msg = label + " begin stream";
617  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
618  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain_[sid], msg.c_str(), labelColor(label));
619  }
620 }
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:285
std::vector< std::atomic< bool > > streamFirstEventDone_

◆ preModuleConstruction()

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

Definition at line 812 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

812  {
813  if (not skipFirstEvent_) {
814  auto mid = desc.id();
815  global_modules_.grow_to_at_least(mid + 1);
816  auto const& label = desc.moduleLabel();
817  auto const& msg = label + " construction";
818  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain_, msg.c_str(), labelColor(label));
819  }
820 }
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:285

◆ preModuleDestruction()

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

Definition at line 830 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

830  {
831  if (not skipFirstEvent_) {
832  auto mid = desc.id();
833  global_modules_.grow_to_at_least(mid + 1);
834  auto const& label = desc.moduleLabel();
835  auto const& msg = label + " destruction";
836  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain_, msg.c_str(), labelColor(label));
837  }
838 }
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:285

◆ preModuleEndJob()

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

Definition at line 865 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

865  {
867  auto mid = desc.id();
868  auto const& label = desc.moduleLabel();
869  auto const& msg = label + " end job";
870  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain_, msg.c_str(), labelColor(label));
871  }
872 }
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:285
std::atomic< bool > globalFirstEventDone_

◆ preModuleEndStream()

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

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

631  {
632  auto sid = sc.streamID();
634  auto mid = mcc.moduleDescription()->id();
635  auto const& label = mcc.moduleDescription()->moduleLabel();
636  auto const& msg = label + " end stream";
637  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
638  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain_[sid], msg.c_str(), labelColor(label));
639  }
640 }
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:285
std::vector< std::atomic< bool > > streamFirstEventDone_

◆ preModuleEvent()

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

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

902  {
903  auto sid = sc.streamID();
905  auto mid = mcc.moduleDescription()->id();
906  auto const& label = mcc.moduleDescription()->moduleLabel();
907  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
908  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain_[sid], label.c_str(), labelColor(label));
909  }
910 }
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 882 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().

882  {
883  auto sid = sc.streamID();
885  auto mid = mcc.moduleDescription()->id();
886  auto const& label = mcc.moduleDescription()->moduleLabel();
887  auto const& msg = label + " acquire";
888  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
889  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain_[sid], msg.c_str(), labelColor(label));
890  }
891 }
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:285
std::vector< std::atomic< bool > > streamFirstEventDone_

◆ preModuleEventDelayedGet()

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

Definition at line 921 of file NVProfilerService.cc.

Referenced by NVProfilerService().

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

◆ preModuleEventPrefetching()

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

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

792  {
793  auto sid = sc.streamID();
795  auto mid = mcc.moduleDescription()->id();
796  auto const& label = mcc.moduleDescription()->moduleLabel();
797  auto const& msg = label + " prefetching";
798  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
799  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain_[sid], msg.c_str(), labelColorLight(label));
800  }
801 }
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:285
std::vector< std::atomic< bool > > streamFirstEventDone_

◆ preModuleGlobalBeginLumi()

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

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

1083  {
1085  auto mid = mcc.moduleDescription()->id();
1086  auto const& label = mcc.moduleDescription()->moduleLabel();
1087  auto const& msg = label + " global begin lumi";
1088  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain_, msg.c_str(), labelColor(label));
1089  }
1090 }
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:285
std::atomic< bool > globalFirstEventDone_

◆ preModuleGlobalBeginRun()

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

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

1049  {
1051  auto mid = mcc.moduleDescription()->id();
1052  auto const& label = mcc.moduleDescription()->moduleLabel();
1053  auto const& msg = label + " global begin run";
1054  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain_, msg.c_str(), labelColor(label));
1055  }
1056 }
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:285
std::atomic< bool > globalFirstEventDone_

◆ preModuleGlobalEndLumi()

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

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

1100  {
1102  auto mid = mcc.moduleDescription()->id();
1103  auto const& label = mcc.moduleDescription()->moduleLabel();
1104  auto const& msg = label + " global end lumi";
1105  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain_, msg.c_str(), labelColor(label));
1106  }
1107 }
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:285
std::atomic< bool > globalFirstEventDone_

◆ preModuleGlobalEndRun()

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

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

1066  {
1068  auto mid = mcc.moduleDescription()->id();
1069  auto const& label = mcc.moduleDescription()->moduleLabel();
1070  auto const& msg = label + " global end run";
1071  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain_, msg.c_str(), labelColor(label));
1072  }
1073 }
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:285
std::atomic< bool > globalFirstEventDone_

◆ preModuleStreamBeginLumi()

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

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

1009  {
1010  auto sid = sc.streamID();
1011  if (not skipFirstEvent_ or streamFirstEventDone_[sid]) {
1012  auto mid = mcc.moduleDescription()->id();
1013  auto const& label = mcc.moduleDescription()->moduleLabel();
1014  auto const& msg = label + " stream begin lumi";
1015  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
1016  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain_[sid], msg.c_str(), labelColor(label));
1017  }
1018 }
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:285
std::vector< std::atomic< bool > > streamFirstEventDone_

◆ preModuleStreamBeginRun()

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

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

969  {
970  auto sid = sc.streamID();
972  auto mid = mcc.moduleDescription()->id();
973  auto const& label = mcc.moduleDescription()->moduleLabel();
974  auto const& msg = label + " stream begin run";
975  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
976  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain_[sid], msg.c_str(), labelColor(label));
977  }
978 }
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:285
std::vector< std::atomic< bool > > streamFirstEventDone_

◆ preModuleStreamEndLumi()

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

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

1029  {
1030  auto sid = sc.streamID();
1031  if (not skipFirstEvent_ or streamFirstEventDone_[sid]) {
1032  auto mid = mcc.moduleDescription()->id();
1033  auto const& label = mcc.moduleDescription()->moduleLabel();
1034  auto const& msg = label + " stream end lumi";
1035  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
1036  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain_[sid], msg.c_str(), labelColor(label));
1037  }
1038 }
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:285
std::vector< std::atomic< bool > > streamFirstEventDone_

◆ preModuleStreamEndRun()

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

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

989  {
990  auto sid = sc.streamID();
992  auto mid = mcc.moduleDescription()->id();
993  auto const& label = mcc.moduleDescription()->moduleLabel();
994  auto const& msg = label + " stream end run";
995  assert(stream_modules_[sid][mid] == nvtxInvalidRangeId);
996  stream_modules_[sid][mid] = nvtxDomainRangeStartColor(stream_domain_[sid], msg.c_str(), labelColor(label));
997  }
998 }
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:285
std::vector< std::atomic< bool > > streamFirstEventDone_

◆ preOpenFile()

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

Definition at line 587 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

587  {
589  nvtxDomainRangePush(global_domain_, ("open file "s + lfn).c_str());
590  }
591 }
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 776 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

776  {
777  auto sid = sc.streamID();
779  nvtxDomainMark(global_domain_, ("before path "s + pc.pathName()).c_str());
780  }
781 }
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 1117 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

1117  {
1118  if (not skipFirstEvent_) {
1119  auto mid = desc.id();
1120  global_modules_.grow_to_at_least(mid + 1);
1121  auto const& label = desc.moduleLabel();
1122  auto const& msg = label + " construction";
1123  global_modules_[mid] = nvtxDomainRangeStartColor(global_domain_, msg.c_str(), labelColor(label));
1124  }
1125 }
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:285

◆ preSourceEvent()

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

Definition at line 551 of file NVProfilerService.cc.

References or, skipFirstEvent_, stream_domain_, and streamFirstEventDone_.

Referenced by NVProfilerService().

551  {
553  nvtxDomainRangePush(stream_domain_[sid], "source");
554  }
555 }
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 563 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

563  {
565  nvtxDomainRangePush(global_domain_, "source lumi");
566  }
567 }
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 575 of file NVProfilerService.cc.

References global_domain_, globalFirstEventDone_, or, and skipFirstEvent_.

Referenced by NVProfilerService().

575  {
577  nvtxDomainRangePush(global_domain_, "source run");
578  }
579 }
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 727 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

727  {
728  auto sid = sc.streamID();
730  nvtxDomainRangePush(stream_domain_[sid], "stream begin lumi");
731  }
732 }
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 675 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

675  {
676  auto sid = sc.streamID();
678  nvtxDomainRangePush(stream_domain_[sid], "stream begin run");
679  }
680 }
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 741 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

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

◆ preStreamEndRun()

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

Definition at line 689 of file NVProfilerService.cc.

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

Referenced by NVProfilerService().

689  {
690  auto sid = sc.streamID();
692  nvtxDomainRangePush(stream_domain_[sid], "stream end run");
693  }
694 }
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

◆ event_

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

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

Referenced by NVProfilerService().

◆ showModulePrefetching_

const bool NVProfilerService::showModulePrefetching_
private

Definition at line 291 of file NVProfilerService.cc.

Referenced by NVProfilerService().

◆ skipFirstEvent_

const bool NVProfilerService::skipFirstEvent_
private

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