CMS 3D CMS Logo

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

#include <FastTimerService.h>

Inheritance diagram for FastTimerService:

Classes

struct  AtomicResources
 
struct  GroupOfModules
 
struct  Measurement
 
struct  PlotRanges
 
class  PlotsPerElement
 
class  PlotsPerJob
 
class  PlotsPerPath
 
class  PlotsPerProcess
 
struct  Resources
 
struct  ResourcesPerJob
 
struct  ResourcesPerModule
 
struct  ResourcesPerPath
 
struct  ResourcesPerProcess
 
struct  ThreadGuard
 

Public Member Functions

template<typename T >
json encodeToJSON (std::string const &type, std::string const &label, unsigned int events, T const &data) const
 
 FastTimerService (const edm::ParameterSet &, edm::ActivityRegistry &)
 
template<typename T >
void printEvent (T &out, ResourcesPerJob const &data) const
 
template<typename T >
void printEventHeader (T &out, std::string const &label) const
 
template<typename T >
void printEventLine (T &out, Resources const &data, std::string const &label) const
 
template<typename T >
void printEventLine (T &out, AtomicResources const &data, std::string const &label) const
 
template<typename T >
void printHeader (T &out, std::string const &label) const
 
template<typename T >
void printPathSummaryHeader (T &out, std::string const &label) const
 
template<typename T >
void printPathSummaryLine (T &out, Resources const &data, Resources const &total, uint64_t events, std::string const &label) const
 
template<typename T >
void printSummary (T &out, ResourcesPerJob const &data, std::string const &label) const
 
template<typename T >
void printSummaryHeader (T &out, std::string const &label, bool detailed) const
 
template<typename T >
void printSummaryLine (T &out, Resources const &data, uint64_t events, std::string const &label) const
 
template<typename T >
void printSummaryLine (T &out, AtomicResources const &data, uint64_t events, uint64_t active, std::string const &label) const
 
template<typename T >
void printSummaryLine (T &out, AtomicResources const &data, uint64_t events, std::string const &label) const
 
template<typename T >
void printSummaryLine (T &out, Resources const &data, uint64_t events, uint64_t active, std::string const &label) const
 
template<typename T >
void printTransition (T &out, AtomicResources const &data, std::string const &label) const
 
 ~FastTimerService () override=default
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 

Private Member Functions

template<typename T >
json encodeToJSON (std::string const &type, std::string const &label, unsigned int events, T const &data) const
 
json encodeToJSON (edm::ModuleDescription const &module, ResourcesPerModule const &data) const
 
void ignoredSignal (const std::string &signal) const
 
bool isFirstSubprocess (edm::StreamContext const &)
 
bool isFirstSubprocess (edm::GlobalContext const &)
 
bool isLastSubprocess (std::atomic< unsigned int > &check)
 
void on_scheduler_entry (bool worker) final
 
void on_scheduler_exit (bool worker) final
 
void postBeginJob ()
 
void postEndJob ()
 
void postESModule (edm::eventsetup::EventSetupRecordKey const &, edm::ESModuleCallingContext const &)
 
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 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 postPathEvent (edm::StreamContext const &, edm::PathContext const &, edm::HLTPathStatus 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 preESModule (edm::eventsetup::EventSetupRecordKey const &, edm::ESModuleCallingContext 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 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 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 &)
 
template<typename T >
void printEvent (T &out, ResourcesPerJob const &) const
 
template<typename T >
void printEventHeader (T &out, std::string const &label) const
 
template<typename T >
void printEventLine (T &out, Resources const &data, std::string const &label) const
 
template<typename T >
void printEventLine (T &out, AtomicResources const &data, std::string const &label) const
 
template<typename T >
void printHeader (T &out, std::string const &label) const
 
template<typename T >
void printPathSummaryHeader (T &out, std::string const &label) const
 
template<typename T >
void printPathSummaryLine (T &out, Resources const &data, Resources const &total, uint64_t events, std::string const &label) const
 
template<typename T >
void printSummary (T &out, ResourcesPerJob const &data, std::string const &label) const
 
template<typename T >
void printSummaryHeader (T &out, std::string const &label, bool detailed) const
 
template<typename T >
void printSummaryLine (T &out, Resources const &data, uint64_t events, std::string const &label) const
 
template<typename T >
void printSummaryLine (T &out, Resources const &data, uint64_t events, uint64_t active, std::string const &label) const
 
template<typename T >
void printSummaryLine (T &out, AtomicResources const &data, uint64_t events, std::string const &label) const
 
template<typename T >
void printSummaryLine (T &out, AtomicResources const &data, uint64_t events, uint64_t active, std::string const &label) const
 
template<typename T >
void printTransition (T &out, AtomicResources const &data, std::string const &label) const
 
Measurementthread ()
 
void unsupportedSignal (const std::string &signal) const
 
void writeSummaryJSON (ResourcesPerJob const &data, std::string const &filename) const
 

Private Attributes

ProcessCallGraph callgraph_
 
unsigned int concurrent_lumis_
 
unsigned int concurrent_runs_
 
unsigned int concurrent_streams_
 
unsigned int concurrent_threads_
 
const PlotRanges dqm_event_ranges_
 
const unsigned int dqm_lumisections_range_
 
const PlotRanges dqm_module_ranges_
 
std::string dqm_path_
 
const PlotRanges dqm_path_ranges_
 
bool enable_dqm_
 
const bool enable_dqm_byls_
 
const bool enable_dqm_bymodule_
 
const bool enable_dqm_bynproc_
 
const bool enable_dqm_bypath_
 
const bool enable_dqm_transitions_
 
ThreadGuard guard_
 
std::vector< edm::ParameterSethighlight_module_psets_
 
std::vector< GroupOfModuleshighlight_modules_
 
ResourcesPerJob job_summary_
 
const std::string json_filename_
 
std::vector< AtomicResourceslumi_transition_
 
AtomicResources overhead_
 
std::unique_ptr< PlotsPerJobplots_
 
const bool print_event_summary_
 
const bool print_job_summary_
 
const bool print_run_summary_
 
std::vector< ResourcesPerJobrun_summary_
 
std::vector< AtomicResourcesrun_transition_
 
std::vector< ResourcesPerJobstreams_
 
std::unique_ptr< std::atomic< unsigned int >[]> subprocess_event_check_
 
std::unique_ptr< std::atomic< unsigned int >[]> subprocess_global_lumi_check_
 
std::unique_ptr< std::atomic< unsigned int >[]> subprocess_global_run_check_
 
std::mutex summary_mutex_
 
tbb::concurrent_unordered_set< std::string > unsupported_signals_
 
const bool write_json_summary_
 

Detailed Description

Definition at line 55 of file FastTimerService.h.

Constructor & Destructor Documentation

◆ FastTimerService()

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

Definition at line 772 of file FastTimerService.cc.

773  : // configuration
774  callgraph_(),
775  // job configuration
777  concurrent_runs_(0),
780  print_event_summary_(config.getUntrackedParameter<bool>("printEventSummary")),
781  print_run_summary_(config.getUntrackedParameter<bool>("printRunSummary")),
782  print_job_summary_(config.getUntrackedParameter<bool>("printJobSummary")),
783  // JSON configuration
784  //write_json_per_event_(config.getUntrackedParameter<bool>("writeJSONByEvent")),
785  //write_json_per_ls_(config.getUntrackedParameter<bool>("writeJSONByLumiSection")),
786  //write_json_per_run_(config.getUntrackedParameter<bool>("writeJSONByRun")),
787  write_json_summary_(config.getUntrackedParameter<bool>("writeJSONSummary")),
788  json_filename_(config.getUntrackedParameter<std::string>("jsonFileName")),
789  // DQM configuration
790  enable_dqm_(config.getUntrackedParameter<bool>("enableDQM")),
791  enable_dqm_bymodule_(config.getUntrackedParameter<bool>("enableDQMbyModule")),
792  enable_dqm_bypath_(config.getUntrackedParameter<bool>("enableDQMbyPath")),
793  enable_dqm_byls_(config.getUntrackedParameter<bool>("enableDQMbyLumiSection")),
794  enable_dqm_bynproc_(config.getUntrackedParameter<bool>("enableDQMbyProcesses")),
795  enable_dqm_transitions_(config.getUntrackedParameter<bool>("enableDQMTransitions")),
796  dqm_event_ranges_({config.getUntrackedParameter<double>("dqmTimeRange"), // ms
797  config.getUntrackedParameter<double>("dqmTimeResolution"), // ms
798  config.getUntrackedParameter<double>("dqmMemoryRange"), // kB
799  config.getUntrackedParameter<double>("dqmMemoryResolution")}), // kB
800  dqm_path_ranges_({config.getUntrackedParameter<double>("dqmPathTimeRange"), // ms
801  config.getUntrackedParameter<double>("dqmPathTimeResolution"), // ms
802  config.getUntrackedParameter<double>("dqmPathMemoryRange"), // kB
803  config.getUntrackedParameter<double>("dqmPathMemoryResolution")}), // kB
804  dqm_module_ranges_({config.getUntrackedParameter<double>("dqmModuleTimeRange"), // ms
805  config.getUntrackedParameter<double>("dqmModuleTimeResolution"), // ms
806  config.getUntrackedParameter<double>("dqmModuleMemoryRange"), // kB
807  config.getUntrackedParameter<double>("dqmModuleMemoryResolution")}), // kB
808  dqm_lumisections_range_(config.getUntrackedParameter<unsigned int>("dqmLumiSectionsRange")),
809  dqm_path_(config.getUntrackedParameter<std::string>("dqmPath")),
810  // highlight configuration
811  highlight_module_psets_(config.getUntrackedParameter<std::vector<edm::ParameterSet>>("highlightModules")),
812  highlight_modules_(highlight_module_psets_.size()) // filled in postBeginJob()
813 {
814  // start observing when a thread enters or leaves the TBB global thread arena
815  tbb::task_scheduler_observer::observe();
816 
817  // register EDM call backs
823  //registry.watchPostGlobalBeginRun( this, & FastTimerService::postGlobalBeginRun );
824  //registry.watchPreGlobalEndRun( this, & FastTimerService::preGlobalEndRun );
827  //registry.watchPostStreamBeginRun( this, & FastTimerService::postStreamBeginRun );
828  //registry.watchPreStreamEndRun( this, & FastTimerService::preStreamEndRun );
831  //registry.watchPostGlobalBeginLumi( this, & FastTimerService::postGlobalBeginLumi );
832  //registry.watchPreGlobalEndLumi( this, & FastTimerService::preGlobalEndLumi );
835  //registry.watchPostStreamBeginLumi( this, & FastTimerService::postStreamBeginLumi );
836  //registry.watchPreStreamEndLumi( this, & FastTimerService::preStreamEndLumi );
838  registry.watchPreEvent(this, &FastTimerService::preEvent);
843  //registry.watchPostSourceConstruction( this, & FastTimerService::postSourceConstruction);
850  //registry.watchPreModuleConstruction( this, & FastTimerService::preModuleConstruction);
851  //registry.watchPostModuleConstruction( this, & FastTimerService::postModuleConstruction);
852  //registry.watchPreModuleBeginJob( this, & FastTimerService::preModuleBeginJob );
853  //registry.watchPostModuleBeginJob( this, & FastTimerService::postModuleBeginJob );
854  //registry.watchPreModuleEndJob( this, & FastTimerService::preModuleEndJob );
855  //registry.watchPostModuleEndJob( this, & FastTimerService::postModuleEndJob );
856  //registry.watchPreModuleBeginStream( this, & FastTimerService::preModuleBeginStream );
857  //registry.watchPostModuleBeginStream( this, & FastTimerService::postModuleBeginStream );
858  //registry.watchPreModuleEndStream( this, & FastTimerService::preModuleEndStream );
859  //registry.watchPostModuleEndStream( this, & FastTimerService::postModuleEndStream );
876  //registry.watchPreModuleEventPrefetching( this, & FastTimerService::preModuleEventPrefetching );
877  //registry.watchPostModuleEventPrefetching( this, & FastTimerService::postModuleEventPrefetching );
888 }
void watchPostModuleGlobalEndLumi(PostModuleGlobalEndLumi::slot_type const &iSlot)
void preGlobalBeginRun(edm::GlobalContext const &)
void preModuleEventDelayedGet(edm::StreamContext const &, edm::ModuleCallingContext const &)
const bool print_run_summary_
void watchPreModuleGlobalBeginRun(PreModuleGlobalBeginRun::slot_type const &iSlot)
void watchPreEvent(PreEvent::slot_type const &iSlot)
void postGlobalEndLumi(edm::GlobalContext const &)
void postStreamEndLumi(edm::StreamContext const &)
std::vector< edm::ParameterSet > highlight_module_psets_
void postModuleGlobalEndLumi(edm::GlobalContext const &, edm::ModuleCallingContext const &)
void preEventReadFromSource(edm::StreamContext const &, edm::ModuleCallingContext const &)
void preBeginJob(edm::PathsAndConsumesOfModulesBase const &, edm::ProcessContext const &)
void watchPrePathEvent(PrePathEvent::slot_type const &iSlot)
void preSourceLumi(edm::LuminosityBlockIndex)
void watchPreallocate(Preallocate::slot_type const &iSlot)
unsigned int concurrent_threads_
void postEventReadFromSource(edm::StreamContext const &, edm::ModuleCallingContext const &)
void watchPreESModule(PreESModule::slot_type const &iSlot)
void watchPreModuleEventAcquire(PreModuleEventAcquire::slot_type const &iSlot)
void watchPostEndJob(PostEndJob::slot_type const &iSlot)
const PlotRanges dqm_event_ranges_
void postModuleGlobalEndRun(edm::GlobalContext const &, edm::ModuleCallingContext const &)
void preSourceRun(edm::RunIndex)
void postModuleEvent(edm::StreamContext const &, edm::ModuleCallingContext const &)
std::vector< GroupOfModules > highlight_modules_
const bool write_json_summary_
void watchPreModuleEvent(PreModuleEvent::slot_type const &iSlot)
void watchPostEvent(PostEvent::slot_type const &iSlot)
void preESModule(edm::eventsetup::EventSetupRecordKey const &, edm::ESModuleCallingContext const &)
const std::string json_filename_
void watchPreSourceConstruction(PreSourceConstruction::slot_type const &iSlot)
const bool enable_dqm_bynproc_
void postESModule(edm::eventsetup::EventSetupRecordKey const &, edm::ESModuleCallingContext const &)
unsigned int concurrent_runs_
void watchPostStreamEndLumi(PostStreamEndLumi::slot_type const &iSlot)
void watchPreGlobalBeginLumi(PreGlobalBeginLumi::slot_type const &iSlot)
void watchPreEventReadFromSource(PreEventReadFromSource::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 watchPostModuleStreamBeginRun(PostModuleStreamBeginRun::slot_type const &iSlot)
void watchPostSourceEvent(PostSourceEvent::slot_type const &iSlot)
void postSourceRun(edm::RunIndex)
Definition: config.py:1
void postPathEvent(edm::StreamContext const &, edm::PathContext const &, edm::HLTPathStatus const &)
void preModuleGlobalBeginLumi(edm::GlobalContext const &, edm::ModuleCallingContext const &)
void watchPostESModule(PostESModule::slot_type const &iSlot)
const bool print_job_summary_
void watchPreModuleGlobalEndRun(PreModuleGlobalEndRun::slot_type const &iSlot)
const bool enable_dqm_bypath_
const PlotRanges dqm_path_ranges_
void postModuleStreamEndLumi(edm::StreamContext const &, edm::ModuleCallingContext const &)
void prePathEvent(edm::StreamContext const &, edm::PathContext const &)
void watchPostSourceRun(PostSourceRun::slot_type const &iSlot)
void watchPreSourceLumi(PreSourceLumi::slot_type const &iSlot)
void preModuleStreamEndLumi(edm::StreamContext const &, edm::ModuleCallingContext const &)
void watchPreModuleEventDelayedGet(PreModuleEventDelayedGet::slot_type const &iSlot)
void postEvent(edm::StreamContext const &)
void postGlobalEndRun(edm::GlobalContext const &)
const unsigned int dqm_lumisections_range_
void postStreamEndRun(edm::StreamContext const &)
void preModuleEvent(edm::StreamContext const &, edm::ModuleCallingContext const &)
void watchPostModuleEventAcquire(PostModuleEventAcquire::slot_type const &iSlot)
unsigned int concurrent_lumis_
std::string dqm_path_
void watchPostGlobalEndLumi(PostGlobalEndLumi::slot_type const &iSlot)
const bool enable_dqm_transitions_
void watchPreSourceRun(PreSourceRun::slot_type const &iSlot)
void watchPostStreamEndRun(PostStreamEndRun::slot_type const &iSlot)
const bool enable_dqm_bymodule_
void watchPostModuleStreamEndRun(PostModuleStreamEndRun::slot_type const &iSlot)
void watchPreModuleGlobalBeginLumi(PreModuleGlobalBeginLumi::slot_type const &iSlot)
void watchPreGlobalBeginRun(PreGlobalBeginRun::slot_type const &iSlot)
void watchPreModuleStreamBeginLumi(PreModuleStreamBeginLumi::slot_type const &iSlot)
const PlotRanges dqm_module_ranges_
const bool enable_dqm_byls_
void postModuleEventAcquire(edm::StreamContext const &, edm::ModuleCallingContext const &)
void postModuleEventDelayedGet(edm::StreamContext const &, edm::ModuleCallingContext const &)
const bool print_event_summary_
void watchPostSourceLumi(PostSourceLumi::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 postModuleStreamBeginLumi(edm::StreamContext const &, edm::ModuleCallingContext const &)
void preModuleStreamEndRun(edm::StreamContext const &, edm::ModuleCallingContext const &)
void postModuleStreamEndRun(edm::StreamContext const &, edm::ModuleCallingContext const &)
void watchPreModuleStreamEndLumi(PreModuleStreamEndLumi::slot_type const &iSlot)
void watchPreModuleStreamBeginRun(PreModuleStreamBeginRun::slot_type const &iSlot)
void postModuleStreamBeginRun(edm::StreamContext const &, edm::ModuleCallingContext const &)
void watchPostGlobalEndRun(PostGlobalEndRun::slot_type const &iSlot)
void preSourceEvent(edm::StreamID)
void watchPreStreamBeginLumi(PreStreamBeginLumi::slot_type const &iSlot)
void preEvent(edm::StreamContext const &)
void watchPreBeginJob(PreBeginJob::slot_type const &iSlot)
convenience function for attaching to signal
void preStreamBeginLumi(edm::StreamContext const &)
void postSourceEvent(edm::StreamID)
void preModuleStreamBeginLumi(edm::StreamContext const &, edm::ModuleCallingContext const &)
void preModuleStreamBeginRun(edm::StreamContext const &, edm::ModuleCallingContext const &)
void watchPreStreamBeginRun(PreStreamBeginRun::slot_type const &iSlot)
void watchPreModuleStreamEndRun(PreModuleStreamEndRun::slot_type const &iSlot)
void preModuleGlobalEndLumi(edm::GlobalContext const &, edm::ModuleCallingContext const &)
void watchPostEventReadFromSource(PostEventReadFromSource::slot_type const &iSlot)
void watchPostModuleGlobalBeginRun(PostModuleGlobalBeginRun::slot_type const &iSlot)
void preGlobalBeginLumi(edm::GlobalContext const &)
void preSourceConstruction(edm::ModuleDescription const &)
void preModuleEventAcquire(edm::StreamContext const &, edm::ModuleCallingContext const &)
void preModuleGlobalEndRun(edm::GlobalContext const &, edm::ModuleCallingContext const &)
void postSourceLumi(edm::LuminosityBlockIndex)
void postModuleGlobalBeginRun(edm::GlobalContext const &, edm::ModuleCallingContext const &)
void watchPreSourceEvent(PreSourceEvent::slot_type const &iSlot)
ProcessCallGraph callgraph_
void postModuleGlobalBeginLumi(edm::GlobalContext const &, edm::ModuleCallingContext const &)
void preStreamBeginRun(edm::StreamContext const &)
void preModuleGlobalBeginRun(edm::GlobalContext const &, edm::ModuleCallingContext const &)
unsigned int concurrent_streams_
void watchPreModuleGlobalEndLumi(PreModuleGlobalEndLumi::slot_type const &iSlot)
void preallocate(edm::service::SystemBounds const &)
void watchPostBeginJob(PostBeginJob::slot_type const &iSlot)
convenience function for attaching to signal

◆ ~FastTimerService()

FastTimerService::~FastTimerService ( )
overridedefault

Member Function Documentation

◆ encodeToJSON() [1/3]

template<typename T >
json FastTimerService::encodeToJSON ( std::string const &  type,
std::string const &  label,
unsigned int  events,
T const &  data 
) const
private

◆ encodeToJSON() [2/3]

json FastTimerService::encodeToJSON ( edm::ModuleDescription const &  module,
ResourcesPerModule const &  data 
) const
private

Definition at line 1386 of file FastTimerService.cc.

References data, and callgraph::module.

1386  {
1387  return encodeToJSON(module.moduleName(), module.moduleLabel(), data.events, data.total);
1388 }
json encodeToJSON(std::string const &type, std::string const &label, unsigned int events, T const &data) const
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79

◆ encodeToJSON() [3/3]

template<typename T >
json FastTimerService::encodeToJSON ( std::string const &  type,
std::string const &  label,
unsigned int  events,
T const &  data 
) const

Definition at line 1373 of file FastTimerService.cc.

References data, events, and label.

1376  {
1377  return json{{"type", type},
1378  {"label", label},
1379  {"events", events},
1380  {"time_thread", ms(data.time_thread)},
1381  {"time_real", ms(data.time_real)},
1382  {"mem_alloc", kB(data.allocated)},
1383  {"mem_free", kB(data.deallocated)}};
1384 }
nlohmann::json json
char const * label
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
int events

◆ fillDescriptions()

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

Definition at line 1771 of file FastTimerService.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::addUntracked(), submitPVResolutionJobs::desc, and AlCaHLTBitMon_QueryRunRegistry::string.

1771  {
1773  desc.addUntracked<bool>("printEventSummary", false);
1774  desc.addUntracked<bool>("printRunSummary", true);
1775  desc.addUntracked<bool>("printJobSummary", true);
1776  // JSON configuration
1777  //desc.addUntracked<bool>("writeJSONByEvent", false);
1778  //desc.addUntracked<bool>("writeJSONByLumiSection", false);
1779  //desc.addUntracked<bool>("writeJSONByRun", false);
1780  desc.addUntracked<bool>("writeJSONSummary", false);
1781  desc.addUntracked<std::string>("jsonFileName", "resources.json");
1782  // DQM configuration
1783  desc.addUntracked<bool>("enableDQM", true);
1784  desc.addUntracked<bool>("enableDQMbyModule", false);
1785  desc.addUntracked<bool>("enableDQMbyPath", false);
1786  desc.addUntracked<bool>("enableDQMbyLumiSection", false);
1787  desc.addUntracked<bool>("enableDQMbyProcesses", false);
1788  desc.addUntracked<bool>("enableDQMTransitions", false);
1789  desc.addUntracked<double>("dqmTimeRange", 1000.); // ms
1790  desc.addUntracked<double>("dqmTimeResolution", 5.); // ms
1791  desc.addUntracked<double>("dqmMemoryRange", 1000000.); // kB
1792  desc.addUntracked<double>("dqmMemoryResolution", 5000.); // kB
1793  desc.addUntracked<double>("dqmPathTimeRange", 100.); // ms
1794  desc.addUntracked<double>("dqmPathTimeResolution", 0.5); // ms
1795  desc.addUntracked<double>("dqmPathMemoryRange", 1000000.); // kB
1796  desc.addUntracked<double>("dqmPathMemoryResolution", 5000.); // kB
1797  desc.addUntracked<double>("dqmModuleTimeRange", 40.); // ms
1798  desc.addUntracked<double>("dqmModuleTimeResolution", 0.2); // ms
1799  desc.addUntracked<double>("dqmModuleMemoryRange", 100000.); // kB
1800  desc.addUntracked<double>("dqmModuleMemoryResolution", 500.); // kB
1801  desc.addUntracked<unsigned>("dqmLumiSectionsRange", 2500); // ~ 16 hours
1802  desc.addUntracked<std::string>("dqmPath", "HLT/TimerService");
1803 
1804  edm::ParameterSetDescription highlightModulesDescription;
1805  highlightModulesDescription.addUntracked<std::vector<std::string>>("modules", {});
1806  highlightModulesDescription.addUntracked<std::string>("label", "producers");
1807  desc.addVPSetUntracked("highlightModules", highlightModulesDescription, {});
1808 
1809  // # OBSOLETE - these parameters are ignored, they are left only not to break old configurations
1810  // they will not be printed in the generated cfi.py file
1811  desc.addOptionalNode(edm::ParameterDescription<bool>("useRealTimeClock", true, false), false)
1812  ->setComment("This parameter is obsolete and will be ignored.");
1813  desc.addOptionalNode(edm::ParameterDescription<bool>("enableTimingPaths", true, false), false)
1814  ->setComment("This parameter is obsolete and will be ignored.");
1815  desc.addOptionalNode(edm::ParameterDescription<bool>("enableTimingModules", true, false), false)
1816  ->setComment("This parameter is obsolete and will be ignored.");
1817  desc.addOptionalNode(edm::ParameterDescription<bool>("enableTimingExclusive", false, false), false)
1818  ->setComment("This parameter is obsolete and will be ignored.");
1819  desc.addOptionalNode(edm::ParameterDescription<bool>("enableTimingSummary", false, false), false)
1820  ->setComment("This parameter is obsolete and will be ignored.");
1821  desc.addOptionalNode(edm::ParameterDescription<bool>("skipFirstPath", false, false), false)
1822  ->setComment("This parameter is obsolete and will be ignored.");
1823  desc.addOptionalNode(edm::ParameterDescription<bool>("enableDQMbyPathActive", false, false), false)
1824  ->setComment("This parameter is obsolete and will be ignored.");
1825  desc.addOptionalNode(edm::ParameterDescription<bool>("enableDQMbyPathTotal", true, false), false)
1826  ->setComment("This parameter is obsolete and will be ignored.");
1827  desc.addOptionalNode(edm::ParameterDescription<bool>("enableDQMbyPathOverhead", false, false), false)
1828  ->setComment("This parameter is obsolete and will be ignored.");
1829  desc.addOptionalNode(edm::ParameterDescription<bool>("enableDQMbyPathDetails", false, false), false)
1830  ->setComment("This parameter is obsolete and will be ignored.");
1831  desc.addOptionalNode(edm::ParameterDescription<bool>("enableDQMbyPathCounters", true, false), false)
1832  ->setComment("This parameter is obsolete and will be ignored.");
1833  desc.addOptionalNode(edm::ParameterDescription<bool>("enableDQMbyPathExclusive", false, false), false)
1834  ->setComment("This parameter is obsolete and will be ignored.");
1835  desc.addOptionalNode(edm::ParameterDescription<bool>("enableDQMbyModuleType", false, false), false)
1836  ->setComment("This parameter is obsolete and will be ignored.");
1837  desc.addOptionalNode(edm::ParameterDescription<bool>("enableDQMSummary", false, false), false)
1838  ->setComment("This parameter is obsolete and will be ignored.");
1839 
1840  descriptions.add("FastTimerService", desc);
1841 }
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)

◆ ignoredSignal()

void FastTimerService::ignoredSignal ( const std::string &  signal) const
private

Definition at line 890 of file FastTimerService.cc.

References LogDebug.

890  {
891  LogDebug("FastTimerService") << "The FastTimerService received is currently not monitoring the signal \"" << signal
892  << "\".\n";
893 }
#define LogDebug(id)

◆ isFirstSubprocess() [1/2]

bool FastTimerService::isFirstSubprocess ( edm::StreamContext const &  )
private

◆ isFirstSubprocess() [2/2]

bool FastTimerService::isFirstSubprocess ( edm::GlobalContext const &  )
private

◆ isLastSubprocess()

bool FastTimerService::isLastSubprocess ( std::atomic< unsigned int > &  check)
private

Definition at line 1429 of file FastTimerService.cc.

References RPCNoise_example::check.

1429  {
1430  // release-acquire semantic guarantees that all writes in this and other threads are visible
1431  // after this operation; full sequentially-consistent ordering is (probably) not needed.
1432  unsigned int old_value = check.fetch_add(1, std::memory_order_acq_rel);
1433  return (old_value == callgraph_.processes().size() - 1);
1434 }
std::vector< ProcessType > const & processes() const
ProcessCallGraph callgraph_

◆ on_scheduler_entry()

void FastTimerService::on_scheduler_entry ( bool  worker)
finalprivate

Definition at line 1759 of file FastTimerService.cc.

References guard_, FastTimerService::Measurement::measure(), overhead_, FastTimerService::ThreadGuard::register_thread(), and thread().

1759  {
1761  // initialise the measurement point for a thread that has newly joined the TBB pool
1762  thread().measure();
1763  }
1764 }
AtomicResources overhead_
Measurement & thread()
bool register_thread(FastTimerService::AtomicResources &r)

◆ on_scheduler_exit()

void FastTimerService::on_scheduler_exit ( bool  worker)
finalprivate

Definition at line 1766 of file FastTimerService.cc.

1766 {}

◆ postBeginJob()

void FastTimerService::postBeginJob ( )
private

Definition at line 987 of file FastTimerService.cc.

References watchdog::group, mps_fire::i, label, SummaryClient_cfi::labels, LogMessageMonitor_cff::modules, jetUpdater_cfi::sort, AlCaHLTBitMon_QueryRunRegistry::string, and groupFilesInBlocks::temp.

987  {
988  unsigned int modules = callgraph_.size();
989 
990  // module highlights
991  for (unsigned int group : boost::irange(0ul, highlight_module_psets_.size())) {
992  // copy and sort for faster search via std::binary_search
993  auto labels = highlight_module_psets_[group].getUntrackedParameter<std::vector<std::string>>("modules");
994  std::sort(labels.begin(), labels.end());
995 
996  highlight_modules_[group].label = highlight_module_psets_[group].getUntrackedParameter<std::string>("label");
997  highlight_modules_[group].modules.reserve(labels.size());
998  // convert the module labels in module ids
999  for (unsigned int i = 0; i < modules; ++i) {
1000  auto const& label = callgraph_.module(i).moduleLabel();
1001  if (std::binary_search(labels.begin(), labels.end(), label))
1002  highlight_modules_[group].modules.push_back(i);
1003  }
1004  }
1005  highlight_module_psets_.clear();
1006 
1007  // allocate the resource counters for each stream, process, path and module
1008  ResourcesPerJob temp(callgraph_, highlight_modules_);
1011  job_summary_ = temp;
1012 
1013  // check that the DQMStore service is available
1014  if (enable_dqm_ and not edm::Service<dqm::legacy::DQMStore>().isAvailable()) {
1015  // the DQMStore is not available, disable all DQM plots
1016  enable_dqm_ = false;
1017  edm::LogWarning("FastTimerService") << "The DQMStore is not avalable, the DQM plots will not be generated";
1018  }
1019 
1020  // allocate the structures to hold pointers to the DQM plots
1021  if (enable_dqm_) {
1022  plots_ = std::make_unique<PlotsPerJob>(callgraph_, highlight_modules_);
1023  }
1024 }
std::vector< edm::ParameterSet > highlight_module_psets_
std::vector< GroupOfModules > highlight_modules_
ResourcesPerJob job_summary_
unsigned int concurrent_runs_
std::vector< ResourcesPerJob > streams_
edm::ModuleDescription const & module(unsigned int module) const
char const * label
std::vector< ResourcesPerJob > run_summary_
unsigned int size() const
std::unique_ptr< PlotsPerJob > plots_
Log< level::Warning, false > LogWarning
ProcessCallGraph callgraph_
std::string const & moduleLabel() const
unsigned int concurrent_streams_

◆ postEndJob()

void FastTimerService::postEndJob ( )
private

Definition at line 1107 of file FastTimerService.cc.

References MillePedeFileConverter_cfg::out, and SiStripPI::printSummary().

1107  {
1108  // stop observing to avoid potential race conditions at exit
1109  tbb::task_scheduler_observer::observe(false);
1110  guard_.finalize();
1111  if (print_job_summary_) {
1112  edm::LogVerbatim out("FastReport");
1113  printSummary(out, job_summary_, "Job");
1114  }
1115  if (write_json_summary_) {
1117  }
1118 }
void printSummary(T &out, ResourcesPerJob const &data, std::string const &label) const
void writeSummaryJSON(ResourcesPerJob const &data, std::string const &filename) const
const bool write_json_summary_
ResourcesPerJob job_summary_
const std::string json_filename_
const bool print_job_summary_

◆ postESModule()

void FastTimerService::postESModule ( edm::eventsetup::EventSetupRecordKey const &  ,
edm::ESModuleCallingContext const &  cc 
)
private

Definition at line 1697 of file FastTimerService.cc.

References edm::ESModuleCallingContext::getTopModuleCallingContext(), edm::ParentContext::kPlaceInPath, edm::ModuleCallingContext::parent(), edm::PlaceInPathContext::pathContext(), edm::ParentContext::placeInPathContext(), cms::cuda::stream, edm::PathContext::streamContext(), edm::StreamContext::streamID(), and edm::StreamID::value().

1698  {
1699  auto top = cc.getTopModuleCallingContext();
1700  if (top->type() == edm::ParentContext::Type::kPlaceInPath) {
1701  unsigned int sid = top->parent().placeInPathContext()->pathContext()->streamContext()->streamID().value();
1702  auto& stream = streams_[sid];
1703  thread().measure_and_accumulate(stream.eventsetup);
1704  }
1705 }
std::vector< ResourcesPerJob > streams_
uint32_t T const *__restrict__ uint32_t const *__restrict__ int32_t int Histo::index_type cudaStream_t stream
Measurement & thread()
void measure_and_accumulate(Resources &store) noexcept

◆ postEvent()

void FastTimerService::postEvent ( edm::StreamContext const &  sc)
private

Definition at line 1438 of file FastTimerService.cc.

References data, edm::StreamContext::eventID(), watchdog::group, mps_fire::i, triggerObjects_cff::id, dqmdumpme::last, edm::EventID::luminosityBlock(), MillePedeFileConverter_cfg::out, LaserDQM_cfg::process, edm::StreamContext::processContext(), edm::StreamContext::runIndex(), cms::cuda::stream, and edm::StreamContext::streamID().

1438  {
1439  ignoredSignal(__func__);
1440 
1441  unsigned int pid = callgraph_.processId(*sc.processContext());
1442  unsigned int sid = sc.streamID();
1443  auto& stream = streams_[sid];
1444  auto& process = callgraph_.processDescription(pid);
1445 
1446  // measure the event resources as the sum of all modules' resources
1447  auto& data = stream.processes[pid].total;
1448  for (unsigned int id : process.modules_)
1449  data += stream.modules[id].total;
1450  stream.total += data;
1451 
1452  // handle the summaries and fill the plots only after the last subprocess has run
1454  if (not last)
1455  return;
1456 
1457  // measure the event resources explicitly
1458  stream.event_measurement.measure_and_store(stream.event);
1459 
1460  // add to the event resources those used by source (which is not part of any process)
1461  unsigned int id = 0;
1462  stream.total += stream.modules[id].total;
1463 
1464  // highlighted modules
1465  for (unsigned int group : boost::irange(0ul, highlight_modules_.size()))
1466  for (unsigned int i : highlight_modules_[group].modules)
1467  stream.highlight[group] += stream.modules[i].total;
1468 
1469  // avoid concurrent access to the summary objects
1470  {
1471  std::lock_guard<std::mutex> guard(summary_mutex_);
1472  job_summary_ += stream;
1473  run_summary_[sc.runIndex()] += stream;
1474  }
1475 
1476  if (print_event_summary_) {
1477  edm::LogVerbatim out("FastReport");
1478  printEvent(out, stream);
1479  }
1480 
1481  if (enable_dqm_) {
1482  plots_->fill(callgraph_, stream, sc.eventID().luminosityBlock());
1483  }
1484 }
std::vector< GroupOfModules > highlight_modules_
ResourcesPerJob job_summary_
std::vector< ResourcesPerJob > streams_
uint32_t T const *__restrict__ uint32_t const *__restrict__ int32_t int Histo::index_type cudaStream_t stream
std::mutex summary_mutex_
void printEvent(T &out, ResourcesPerJob const &) const
std::vector< ResourcesPerJob > run_summary_
std::unique_ptr< std::atomic< unsigned int >[]> subprocess_event_check_
unsigned int processId(edm::ProcessContext const &) const
void ignoredSignal(const std::string &signal) const
const bool print_event_summary_
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
std::unique_ptr< PlotsPerJob > plots_
ProcessType const & processDescription(unsigned int) const
ProcessCallGraph callgraph_
bool isLastSubprocess(std::atomic< unsigned int > &check)

◆ postEventReadFromSource()

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

Definition at line 1605 of file FastTimerService.cc.

References triggerObjects_cff::id, edm::ModuleDescription::id(), edm::ModuleCallingContext::kPrefetching, callgraph::module, edm::ModuleCallingContext::state(), cms::cuda::stream, and edm::StreamContext::streamID().

1605  {
1608  unsigned int id = md.id();
1609  auto& stream = streams_[sc.streamID()];
1610  auto& module = stream.modules[id];
1611 
1613  }
1614 }
edm::ModuleDescription const & source() const
std::vector< ResourcesPerJob > streams_
uint32_t T const *__restrict__ uint32_t const *__restrict__ int32_t int Histo::index_type cudaStream_t stream
Measurement & thread()
unsigned int id() const
void measure_and_accumulate(Resources &store) noexcept
ProcessCallGraph callgraph_

◆ postGlobalBeginLumi()

void FastTimerService::postGlobalBeginLumi ( edm::GlobalContext const &  gc)
private

Definition at line 1043 of file FastTimerService.cc.

1043 { ignoredSignal(__func__); }
void ignoredSignal(const std::string &signal) const

◆ postGlobalBeginRun()

void FastTimerService::postGlobalBeginRun ( edm::GlobalContext const &  gc)
private

Definition at line 941 of file FastTimerService.cc.

941 { ignoredSignal(__func__); }
void ignoredSignal(const std::string &signal) const

◆ postGlobalEndLumi()

void FastTimerService::postGlobalEndLumi ( edm::GlobalContext const &  gc)
private

Definition at line 1047 of file FastTimerService.cc.

References label, dqmdumpme::last, edm::LuminosityBlockID::luminosityBlock(), edm::GlobalContext::luminosityBlockID(), edm::GlobalContext::luminosityBlockIndex(), MillePedeFileConverter_cfg::out, and edm::LuminosityBlockID::run().

1047  {
1048  ignoredSignal(__func__);
1049 
1050  // handle the summaries only after the last subprocess has run
1051  auto index = gc.luminosityBlockIndex();
1053  if (not last)
1054  return;
1055 
1056  edm::LogVerbatim out("FastReport");
1057  auto const& label =
1058  fmt::sprintf("run %d, lumisection %d", gc.luminosityBlockID().run(), gc.luminosityBlockID().luminosityBlock());
1060 
1062  plots_->fill_lumi(lumi_transition_[index], gc.luminosityBlockID().luminosityBlock());
1063  }
1064 }
std::unique_ptr< std::atomic< unsigned int >[]> subprocess_global_lumi_check_
char const * label
const bool enable_dqm_transitions_
void ignoredSignal(const std::string &signal) const
std::unique_ptr< PlotsPerJob > plots_
void printTransition(T &out, AtomicResources const &data, std::string const &label) const
std::vector< AtomicResources > lumi_transition_
bool isLastSubprocess(std::atomic< unsigned int > &check)

◆ postGlobalEndRun()

void FastTimerService::postGlobalEndRun ( edm::GlobalContext const &  gc)
private

Definition at line 1076 of file FastTimerService.cc.

References label, dqmdumpme::last, edm::GlobalContext::luminosityBlockID(), MillePedeFileConverter_cfg::out, SiStripPI::printSummary(), edm::LuminosityBlockID::run(), and edm::GlobalContext::runIndex().

1076  {
1077  ignoredSignal(__func__);
1078 
1079  // handle the summaries only after the last subprocess has run
1080  auto index = gc.runIndex();
1082  if (not last)
1083  return;
1084 
1085  edm::LogVerbatim out("FastReport");
1086  auto const& label = fmt::sprintf("Run %d", gc.luminosityBlockID().run());
1087  if (print_run_summary_) {
1089  }
1091 
1093  plots_->fill_run(run_transition_[index]);
1094  }
1095 }
const bool print_run_summary_
void printSummary(T &out, ResourcesPerJob const &data, std::string const &label) const
std::unique_ptr< std::atomic< unsigned int >[]> subprocess_global_run_check_
char const * label
std::vector< ResourcesPerJob > run_summary_
const bool enable_dqm_transitions_
void ignoredSignal(const std::string &signal) const
std::vector< AtomicResources > run_transition_
std::unique_ptr< PlotsPerJob > plots_
void printTransition(T &out, AtomicResources const &data, std::string const &label) const
bool isLastSubprocess(std::atomic< unsigned int > &check)

◆ postModuleEvent()

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

Definition at line 1567 of file FastTimerService.cc.

References triggerObjects_cff::id, edm::ModuleDescription::id(), callgraph::module, edm::ModuleCallingContext::moduleDescription(), cms::cuda::stream, edm::StreamContext::streamID(), and edm::StreamID::value().

1567  {
1568  edm::ModuleDescription const& md = *mcc.moduleDescription();
1569  unsigned int id = md.id();
1570  unsigned int sid = sc.streamID().value();
1571  auto& stream = streams_[sid];
1572  auto& module = stream.modules[id];
1573 
1574  if (module.has_acquire) {
1576  } else {
1577  thread().measure_and_store(module.total);
1578  }
1579  ++module.events;
1580 }
std::vector< ResourcesPerJob > streams_
uint32_t T const *__restrict__ uint32_t const *__restrict__ int32_t int Histo::index_type cudaStream_t stream
Measurement & thread()
unsigned int id() const
void measure_and_store(Resources &store) noexcept
void measure_and_accumulate(Resources &store) noexcept

◆ postModuleEventAcquire()

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

Definition at line 1550 of file FastTimerService.cc.

References triggerObjects_cff::id, edm::ModuleDescription::id(), callgraph::module, edm::ModuleCallingContext::moduleDescription(), cms::cuda::stream, edm::StreamContext::streamID(), and edm::StreamID::value().

1550  {
1551  edm::ModuleDescription const& md = *mcc.moduleDescription();
1552  unsigned int id = md.id();
1553  unsigned int sid = sc.streamID().value();
1554  auto& stream = streams_[sid];
1555  auto& module = stream.modules[id];
1556 
1557  module.has_acquire = true;
1558  thread().measure_and_store(module.total);
1559 }
std::vector< ResourcesPerJob > streams_
uint32_t T const *__restrict__ uint32_t const *__restrict__ int32_t int Histo::index_type cudaStream_t stream
Measurement & thread()
unsigned int id() const
void measure_and_store(Resources &store) noexcept

◆ postModuleEventDelayedGet()

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

Definition at line 1586 of file FastTimerService.cc.

1586  {
1587  unsupportedSignal(__func__);
1588 }
void unsupportedSignal(const std::string &signal) const

◆ postModuleEventPrefetching()

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

Definition at line 1594 of file FastTimerService.cc.

1594  {
1595  ignoredSignal(__func__);
1596 }
void ignoredSignal(const std::string &signal) const

◆ postModuleGlobalBeginLumi()

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

Definition at line 1638 of file FastTimerService.cc.

References edm::GlobalContext::luminosityBlockIndex().

1638  {
1639  auto index = gc.luminosityBlockIndex();
1641 }
Measurement & thread()
void measure_and_accumulate(Resources &store) noexcept
std::vector< AtomicResources > lumi_transition_

◆ postModuleGlobalBeginRun()

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

Definition at line 1620 of file FastTimerService.cc.

References edm::GlobalContext::runIndex().

1620  {
1621  auto index = gc.runIndex();
1623 }
Measurement & thread()
std::vector< AtomicResources > run_transition_
void measure_and_accumulate(Resources &store) noexcept

◆ postModuleGlobalEndLumi()

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

Definition at line 1647 of file FastTimerService.cc.

References edm::GlobalContext::luminosityBlockIndex().

1647  {
1648  auto index = gc.luminosityBlockIndex();
1650 }
Measurement & thread()
void measure_and_accumulate(Resources &store) noexcept
std::vector< AtomicResources > lumi_transition_

◆ postModuleGlobalEndRun()

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

Definition at line 1629 of file FastTimerService.cc.

References edm::GlobalContext::runIndex().

1629  {
1630  auto index = gc.runIndex();
1632 }
Measurement & thread()
std::vector< AtomicResources > run_transition_
void measure_and_accumulate(Resources &store) noexcept

◆ postModuleStreamBeginLumi()

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

Definition at line 1674 of file FastTimerService.cc.

References edm::StreamContext::luminosityBlockIndex().

1674  {
1675  auto index = sc.luminosityBlockIndex();
1677 }
Measurement & thread()
void measure_and_accumulate(Resources &store) noexcept
std::vector< AtomicResources > lumi_transition_

◆ postModuleStreamBeginRun()

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

Definition at line 1656 of file FastTimerService.cc.

References edm::StreamContext::runIndex().

1656  {
1657  auto index = sc.runIndex();
1659 }
Measurement & thread()
std::vector< AtomicResources > run_transition_
void measure_and_accumulate(Resources &store) noexcept

◆ postModuleStreamEndLumi()

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

Definition at line 1683 of file FastTimerService.cc.

References edm::StreamContext::luminosityBlockIndex().

1683  {
1684  auto index = sc.luminosityBlockIndex();
1686 }
Measurement & thread()
void measure_and_accumulate(Resources &store) noexcept
std::vector< AtomicResources > lumi_transition_

◆ postModuleStreamEndRun()

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

Definition at line 1665 of file FastTimerService.cc.

References edm::StreamContext::runIndex().

1665  {
1666  auto index = sc.runIndex();
1668 }
Measurement & thread()
std::vector< AtomicResources > run_transition_
void measure_and_accumulate(Resources &store) noexcept

◆ postPathEvent()

void FastTimerService::postPathEvent ( edm::StreamContext const &  sc,
edm::PathContext const &  pc,
edm::HLTPathStatus const &  status 
)
private

Definition at line 1520 of file FastTimerService.cc.

References data, mps_fire::i, triggerObjects_cff::id, edm::PathContext::isEndPath(), callgraph::module, castor_dqm_sourceclient_file_cfg::path, edm::PathContext::pathID(), edm::StreamContext::processContext(), mps_update::status, cms::cuda::stream, edm::StreamContext::streamID(), and edm::StreamID::value().

1522  {
1523  unsigned int sid = sc.streamID().value();
1524  unsigned int pid = callgraph_.processId(*sc.processContext());
1525  unsigned int id = pc.pathID();
1526  auto& stream = streams_[sid];
1527  auto& data = pc.isEndPath() ? stream.processes[pid].endpaths[id] : stream.processes[pid].paths[id];
1528 
1529  auto const& path =
1531  unsigned int index = path.modules_on_path_.empty() ? 0 : status.index() + 1;
1532  data.last = path.modules_on_path_.empty() ? 0 : path.last_dependency_of_module_[status.index()];
1533 
1534  for (unsigned int i = 0; i < index; ++i) {
1535  auto const& module = stream.modules[path.modules_on_path_[i]];
1536  data.active += module.total;
1537  }
1538  for (unsigned int i = 0; i < data.last; ++i) {
1539  auto const& module = stream.modules[path.modules_and_dependencies_[i]];
1540  data.total += module.total;
1541  }
1542 }
std::vector< ResourcesPerJob > streams_
uint32_t T const *__restrict__ uint32_t const *__restrict__ int32_t int Histo::index_type cudaStream_t stream
std::vector< PathType > paths_
unsigned int processId(edm::ProcessContext const &) const
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
std::vector< PathType > endPaths_
ProcessType const & processDescription(unsigned int) const
ProcessCallGraph callgraph_

◆ postSourceEvent()

void FastTimerService::postSourceEvent ( edm::StreamID  sid)
private

Definition at line 1500 of file FastTimerService.cc.

References triggerObjects_cff::id, edm::ModuleDescription::id(), callgraph::module, and cms::cuda::stream.

1500  {
1502  unsigned int id = md.id();
1503  auto& stream = streams_[sid];
1504  auto& module = stream.modules[id];
1505 
1506  thread().measure_and_store(module.total);
1507  ++stream.modules[id].events;
1508 }
edm::ModuleDescription const & source() const
std::vector< ResourcesPerJob > streams_
uint32_t T const *__restrict__ uint32_t const *__restrict__ int32_t int Histo::index_type cudaStream_t stream
Measurement & thread()
unsigned int id() const
void measure_and_store(Resources &store) noexcept
ProcessCallGraph callgraph_

◆ postSourceLumi()

void FastTimerService::postSourceLumi ( edm::LuminosityBlockIndex  index)
private

Definition at line 1103 of file FastTimerService.cc.

1103  {
1105 }
Measurement & thread()
void measure_and_accumulate(Resources &store) noexcept
std::vector< AtomicResources > lumi_transition_

◆ postSourceRun()

void FastTimerService::postSourceRun ( edm::RunIndex  index)
private

Definition at line 1099 of file FastTimerService.cc.

Measurement & thread()
std::vector< AtomicResources > run_transition_
void measure_and_accumulate(Resources &store) noexcept

◆ postStreamBeginLumi()

void FastTimerService::postStreamBeginLumi ( edm::StreamContext const &  sc)
private

Definition at line 1068 of file FastTimerService.cc.

1068 { ignoredSignal(__func__); }
void ignoredSignal(const std::string &signal) const

◆ postStreamBeginRun()

void FastTimerService::postStreamBeginRun ( edm::StreamContext const &  sc)
private

Definition at line 1026 of file FastTimerService.cc.

1026 { ignoredSignal(__func__); }
void ignoredSignal(const std::string &signal) const

◆ postStreamEndLumi()

void FastTimerService::postStreamEndLumi ( edm::StreamContext const &  sc)
private

Definition at line 1072 of file FastTimerService.cc.

1072 { ignoredSignal(__func__); }
void ignoredSignal(const std::string &signal) const

◆ postStreamEndRun()

void FastTimerService::postStreamEndRun ( edm::StreamContext const &  sc)
private

Definition at line 1030 of file FastTimerService.cc.

1030 { ignoredSignal(__func__); }
void ignoredSignal(const std::string &signal) const

◆ preallocate()

void FastTimerService::preallocate ( edm::service::SystemBounds const &  bounds)
private

Definition at line 945 of file FastTimerService.cc.

References c, mps_fire::i, processor_model, and alignCSCRings::s.

945  {
946  concurrent_lumis_ = bounds.maxNumberOfConcurrentLuminosityBlocks();
947  concurrent_runs_ = bounds.maxNumberOfConcurrentRuns();
948  concurrent_streams_ = bounds.maxNumberOfStreams();
949  concurrent_threads_ = bounds.maxNumberOfThreads();
950 
952  dqm_path_ += fmt::sprintf(
953  "/Running on %s with %d streams on %d threads", processor_model, concurrent_streams_, concurrent_threads_);
954 
955  // clean characters that are deemed unsafe for DQM
956  // see the definition of `s_safe` in DQMServices/Core/src/DQMStore.cc
957  auto safe_for_dqm = "/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+=_()# "s;
958  for (auto& c : dqm_path_)
959  if (safe_for_dqm.find(c) == std::string::npos)
960  c = '_';
961 
962  // allocate atomic variables to keep track of the completion of each step, process by process
963  subprocess_event_check_ = std::make_unique<std::atomic<unsigned int>[]>(concurrent_streams_);
964  for (unsigned int i = 0; i < concurrent_streams_; ++i)
966  subprocess_global_run_check_ = std::make_unique<std::atomic<unsigned int>[]>(concurrent_runs_);
967  for (unsigned int i = 0; i < concurrent_runs_; ++i)
969  subprocess_global_lumi_check_ = std::make_unique<std::atomic<unsigned int>[]>(concurrent_lumis_);
970  for (unsigned int i = 0; i < concurrent_lumis_; ++i)
972 
973  // allocate buffers to keep track of the resources spent in the lumi and run transitions
976 }
std::unique_ptr< std::atomic< unsigned int >[]> subprocess_global_lumi_check_
unsigned int concurrent_threads_
const bool enable_dqm_bynproc_
unsigned int concurrent_runs_
std::unique_ptr< std::atomic< unsigned int >[]> subprocess_global_run_check_
const std::string processor_model
std::unique_ptr< std::atomic< unsigned int >[]> subprocess_event_check_
unsigned int concurrent_lumis_
std::string dqm_path_
std::vector< AtomicResources > run_transition_
std::vector< AtomicResources > lumi_transition_
unsigned int concurrent_streams_

◆ preBeginJob()

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

Definition at line 982 of file FastTimerService.cc.

References visDQMUpload::context.

983  {
984  callgraph_.preBeginJob(pathsAndConsumes, context);
985 }
void preBeginJob(edm::PathsAndConsumesOfModulesBase const &, edm::ProcessContext const &)
ProcessCallGraph callgraph_

◆ preESModule()

void FastTimerService::preESModule ( edm::eventsetup::EventSetupRecordKey const &  ,
edm::ESModuleCallingContext const &  cc 
)
private

Definition at line 1688 of file FastTimerService.cc.

References edm::ESModuleCallingContext::getTopModuleCallingContext(), edm::ParentContext::kPlaceInPath, edm::ModuleCallingContext::parent(), edm::PlaceInPathContext::pathContext(), edm::ParentContext::placeInPathContext(), cms::cuda::stream, edm::PathContext::streamContext(), edm::StreamContext::streamID(), and edm::StreamID::value().

1688  {
1689  auto top = cc.getTopModuleCallingContext();
1690  if (top->type() == edm::ParentContext::Type::kPlaceInPath) {
1691  //Paths are only used when processing an Event
1692  unsigned int sid = top->parent().placeInPathContext()->pathContext()->streamContext()->streamID().value();
1693  auto& stream = streams_[sid];
1694  thread().measure_and_accumulate(stream.overhead);
1695  }
1696 }
std::vector< ResourcesPerJob > streams_
uint32_t T const *__restrict__ uint32_t const *__restrict__ int32_t int Histo::index_type cudaStream_t stream
Measurement & thread()
void measure_and_accumulate(Resources &store) noexcept

◆ preEvent()

void FastTimerService::preEvent ( edm::StreamContext const &  sc)
private

Definition at line 1436 of file FastTimerService.cc.

1436 { ignoredSignal(__func__); }
void ignoredSignal(const std::string &signal) const

◆ preEventReadFromSource()

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

Definition at line 1598 of file FastTimerService.cc.

References edm::ModuleCallingContext::kPrefetching, edm::ModuleCallingContext::state(), cms::cuda::stream, and edm::StreamContext::streamID().

1598  {
1600  auto& stream = streams_[sc.streamID()];
1601  thread().measure_and_accumulate(stream.overhead);
1602  }
1603 }
std::vector< ResourcesPerJob > streams_
uint32_t T const *__restrict__ uint32_t const *__restrict__ int32_t int Histo::index_type cudaStream_t stream
Measurement & thread()
void measure_and_accumulate(Resources &store) noexcept

◆ preGlobalBeginLumi()

void FastTimerService::preGlobalBeginLumi ( edm::GlobalContext const &  gc)
private

Definition at line 1032 of file FastTimerService.cc.

References edm::GlobalContext::luminosityBlockIndex().

1032  {
1033  ignoredSignal(__func__);
1034 
1035  // reset the lumi counters only during the main process being run
1036  if (isFirstSubprocess(gc)) {
1037  auto index = gc.luminosityBlockIndex();
1039  lumi_transition_[index].reset();
1040  }
1041 }
std::unique_ptr< std::atomic< unsigned int >[]> subprocess_global_lumi_check_
bool isFirstSubprocess(edm::StreamContext const &)
void ignoredSignal(const std::string &signal) const
std::vector< AtomicResources > lumi_transition_

◆ preGlobalBeginRun()

void FastTimerService::preGlobalBeginRun ( edm::GlobalContext const &  gc)
private

Definition at line 903 of file FastTimerService.cc.

References edm::GlobalContext::runIndex(), and dqm::implementation::NavigatorBase::setCurrentFolder().

903  {
904  ignoredSignal(__func__);
905 
906  // reset the run counters only during the main process being run
907  if (isFirstSubprocess(gc)) {
908  auto index = gc.runIndex();
910  run_transition_[index].reset();
911  run_summary_[index].reset();
912 
913  // book the DQM plots
914  if (enable_dqm_) {
915  // define a callback to book the MonitorElements
916  auto bookTransactionCallback = [&, this](dqm::reco::DQMStore::IBooker& booker, dqm::reco::DQMStore::IGetter&) {
917  auto scope = dqm::reco::DQMStore::IBooker::UseRunScope(booker);
918  // we should really do this, but only DQMStore is allowed to touch it
919  // We could move to postGlobalBeginRun, then the DQMStore has sure set it up.
920  //booker.setRunLumi(gc.luminosityBlockID());
921  booker.setCurrentFolder(dqm_path_);
922  plots_->book(booker,
923  callgraph_,
933  };
934 
935  // book MonitorElements for this stream
936  edm::Service<dqm::legacy::DQMStore>()->meBookerGetter(bookTransactionCallback);
937  }
938  }
939 }
const PlotRanges dqm_event_ranges_
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
std::vector< GroupOfModules > highlight_modules_
bool isFirstSubprocess(edm::StreamContext const &)
std::unique_ptr< std::atomic< unsigned int >[]> subprocess_global_run_check_
const bool enable_dqm_bypath_
const PlotRanges dqm_path_ranges_
std::vector< ResourcesPerJob > run_summary_
const unsigned int dqm_lumisections_range_
std::string dqm_path_
const bool enable_dqm_transitions_
void ignoredSignal(const std::string &signal) const
const bool enable_dqm_bymodule_
const PlotRanges dqm_module_ranges_
const bool enable_dqm_byls_
std::vector< AtomicResources > run_transition_
std::unique_ptr< PlotsPerJob > plots_
UseScope< MonitorElementData::Scope::RUN > UseRunScope
Definition: DQMStore.h:541
ProcessCallGraph callgraph_

◆ preGlobalEndLumi()

void FastTimerService::preGlobalEndLumi ( edm::GlobalContext const &  gc)
private

Definition at line 1045 of file FastTimerService.cc.

1045 { ignoredSignal(__func__); }
void ignoredSignal(const std::string &signal) const

◆ preGlobalEndRun()

void FastTimerService::preGlobalEndRun ( edm::GlobalContext const &  gc)
private

Definition at line 1074 of file FastTimerService.cc.

1074 { ignoredSignal(__func__); }
void ignoredSignal(const std::string &signal) const

◆ preModuleEvent()

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

Definition at line 1561 of file FastTimerService.cc.

References cms::cuda::stream, edm::StreamContext::streamID(), and edm::StreamID::value().

1561  {
1562  unsigned int sid = sc.streamID().value();
1563  auto& stream = streams_[sid];
1564  thread().measure_and_accumulate(stream.overhead);
1565 }
std::vector< ResourcesPerJob > streams_
uint32_t T const *__restrict__ uint32_t const *__restrict__ int32_t int Histo::index_type cudaStream_t stream
Measurement & thread()
void measure_and_accumulate(Resources &store) noexcept

◆ preModuleEventAcquire()

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

Definition at line 1544 of file FastTimerService.cc.

References cms::cuda::stream, edm::StreamContext::streamID(), and edm::StreamID::value().

1544  {
1545  unsigned int sid = sc.streamID().value();
1546  auto& stream = streams_[sid];
1547  thread().measure_and_accumulate(stream.overhead);
1548 }
std::vector< ResourcesPerJob > streams_
uint32_t T const *__restrict__ uint32_t const *__restrict__ int32_t int Histo::index_type cudaStream_t stream
Measurement & thread()
void measure_and_accumulate(Resources &store) noexcept

◆ preModuleEventDelayedGet()

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

Definition at line 1582 of file FastTimerService.cc.

1582  {
1583  unsupportedSignal(__func__);
1584 }
void unsupportedSignal(const std::string &signal) const

◆ preModuleEventPrefetching()

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

Definition at line 1590 of file FastTimerService.cc.

1590  {
1591  ignoredSignal(__func__);
1592 }
void ignoredSignal(const std::string &signal) const

◆ preModuleGlobalBeginLumi()

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

Definition at line 1634 of file FastTimerService.cc.

1634  {
1636 }
AtomicResources overhead_
Measurement & thread()
void measure_and_accumulate(Resources &store) noexcept

◆ preModuleGlobalBeginRun()

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

Definition at line 1616 of file FastTimerService.cc.

1616  {
1618 }
AtomicResources overhead_
Measurement & thread()
void measure_and_accumulate(Resources &store) noexcept

◆ preModuleGlobalEndLumi()

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

Definition at line 1643 of file FastTimerService.cc.

1643  {
1645 }
AtomicResources overhead_
Measurement & thread()
void measure_and_accumulate(Resources &store) noexcept

◆ preModuleGlobalEndRun()

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

Definition at line 1625 of file FastTimerService.cc.

1625  {
1627 }
AtomicResources overhead_
Measurement & thread()
void measure_and_accumulate(Resources &store) noexcept

◆ preModuleStreamBeginLumi()

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

Definition at line 1670 of file FastTimerService.cc.

1670  {
1672 }
AtomicResources overhead_
Measurement & thread()
void measure_and_accumulate(Resources &store) noexcept

◆ preModuleStreamBeginRun()

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

Definition at line 1652 of file FastTimerService.cc.

1652  {
1654 }
AtomicResources overhead_
Measurement & thread()
void measure_and_accumulate(Resources &store) noexcept

◆ preModuleStreamEndLumi()

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

Definition at line 1679 of file FastTimerService.cc.

1679  {
1681 }
AtomicResources overhead_
Measurement & thread()
void measure_and_accumulate(Resources &store) noexcept

◆ preModuleStreamEndRun()

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

Definition at line 1661 of file FastTimerService.cc.

1661  {
1663 }
AtomicResources overhead_
Measurement & thread()
void measure_and_accumulate(Resources &store) noexcept

◆ prePathEvent()

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

Definition at line 1510 of file FastTimerService.cc.

References data, triggerObjects_cff::id, edm::PathContext::isEndPath(), edm::PathContext::pathID(), edm::StreamContext::processContext(), cms::cuda::stream, edm::StreamContext::streamID(), and edm::StreamID::value().

1510  {
1511  unsigned int sid = sc.streamID().value();
1512  unsigned int pid = callgraph_.processId(*sc.processContext());
1513  unsigned int id = pc.pathID();
1514  auto& stream = streams_[sid];
1515  auto& data = pc.isEndPath() ? stream.processes[pid].endpaths[id] : stream.processes[pid].paths[id];
1516  data.status = false;
1517  data.last = 0;
1518 }
std::vector< ResourcesPerJob > streams_
uint32_t T const *__restrict__ uint32_t const *__restrict__ int32_t int Histo::index_type cudaStream_t stream
unsigned int processId(edm::ProcessContext const &) const
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
ProcessCallGraph callgraph_

◆ preSourceConstruction()

void FastTimerService::preSourceConstruction ( edm::ModuleDescription const &  module)
private

Definition at line 978 of file FastTimerService.cc.

References callgraph::module.

978  {
980 }
void preSourceConstruction(edm::ModuleDescription const &)
ProcessCallGraph callgraph_

◆ preSourceEvent()

void FastTimerService::preSourceEvent ( edm::StreamID  sid)
private

Definition at line 1486 of file FastTimerService.cc.

References cms::cuda::stream.

1486  {
1487  // clear the event counters
1488  auto& stream = streams_[sid];
1489  stream.reset();
1490  ++stream.events;
1491 
1492  subprocess_event_check_[sid] = 0;
1493 
1494  // reuse the same measurement for the Source module and for the explicit begin of the Event
1495  auto& measurement = thread();
1496  measurement.measure_and_accumulate(stream.overhead);
1497  stream.event_measurement = measurement;
1498 }
std::vector< ResourcesPerJob > streams_
uint32_t T const *__restrict__ uint32_t const *__restrict__ int32_t int Histo::index_type cudaStream_t stream
Measurement & thread()
std::unique_ptr< std::atomic< unsigned int >[]> subprocess_event_check_

◆ preSourceLumi()

void FastTimerService::preSourceLumi ( edm::LuminosityBlockIndex  index)
private

Definition at line 1101 of file FastTimerService.cc.

AtomicResources overhead_
Measurement & thread()
void measure_and_accumulate(Resources &store) noexcept

◆ preSourceRun()

void FastTimerService::preSourceRun ( edm::RunIndex  index)
private

Definition at line 1097 of file FastTimerService.cc.

AtomicResources overhead_
Measurement & thread()
void measure_and_accumulate(Resources &store) noexcept

◆ preStreamBeginLumi()

void FastTimerService::preStreamBeginLumi ( edm::StreamContext const &  sc)
private

Definition at line 1066 of file FastTimerService.cc.

1066 { ignoredSignal(__func__); }
void ignoredSignal(const std::string &signal) const

◆ preStreamBeginRun()

void FastTimerService::preStreamBeginRun ( edm::StreamContext const &  sc)
private

Definition at line 943 of file FastTimerService.cc.

943 { ignoredSignal(__func__); }
void ignoredSignal(const std::string &signal) const

◆ preStreamEndLumi()

void FastTimerService::preStreamEndLumi ( edm::StreamContext const &  sc)
private

Definition at line 1070 of file FastTimerService.cc.

1070 { ignoredSignal(__func__); }
void ignoredSignal(const std::string &signal) const

◆ preStreamEndRun()

void FastTimerService::preStreamEndRun ( edm::StreamContext const &  sc)
private

Definition at line 1028 of file FastTimerService.cc.

1028 { ignoredSignal(__func__); }
void ignoredSignal(const std::string &signal) const

◆ printEvent() [1/2]

template<typename T >
void FastTimerService::printEvent ( T out,
ResourcesPerJob const &   
) const
private

◆ printEvent() [2/2]

template<typename T >
void FastTimerService::printEvent ( T out,
ResourcesPerJob const &  data 
) const

Definition at line 1160 of file FastTimerService.cc.

References data, watchdog::group, mps_fire::i, visualization-live-secondInstance_cfg::m, callgraph::module, Skims_PA_cff::name, MillePedeFileConverter_cfg::out, AlCaHLTBitMon_ParallelJobs::p, castor_dqm_sourceclient_file_cfg::path, ValidateTausOnZEEFastSim_cff::proc, and source.

1160  {
1161  printHeader(out, "Event");
1162  printEventHeader(out, "Modules");
1163  auto const& source_d = callgraph_.source();
1164  auto const& source = data.modules[source_d.id()];
1165  printEventLine(out, source.total, source_d.moduleLabel());
1166  for (unsigned int i = 0; i < callgraph_.processes().size(); ++i) {
1167  auto const& proc_d = callgraph_.processDescription(i);
1168  auto const& proc = data.processes[i];
1169  printEventLine(out, proc.total, "process " + proc_d.name_);
1170  for (unsigned int m : proc_d.modules_) {
1171  auto const& module_d = callgraph_.module(m);
1172  auto const& module = data.modules[m];
1173  printEventLine(out, module.total, " " + module_d.moduleLabel());
1174  }
1175  }
1176  printEventLine(out, data.total, "total");
1177  out << '\n';
1178  printEventHeader(out, "Processes and Paths");
1179  printEventLine(out, source.total, source_d.moduleLabel());
1180  for (unsigned int i = 0; i < callgraph_.processes().size(); ++i) {
1181  auto const& proc_d = callgraph_.processDescription(i);
1182  auto const& proc = data.processes[i];
1183  printEventLine(out, proc.total, "process " + proc_d.name_);
1184  for (unsigned int p = 0; p < proc.paths.size(); ++p) {
1185  auto const& name = proc_d.paths_[p].name_;
1186  auto const& path = proc.paths[p];
1187  printEventLine(out, path.active, name + " (only scheduled modules)");
1188  printEventLine(out, path.total, name + " (including dependencies)");
1189  }
1190  for (unsigned int p = 0; p < proc.endpaths.size(); ++p) {
1191  auto const& name = proc_d.endPaths_[p].name_;
1192  auto const& path = proc.endpaths[p];
1193  printEventLine(out, path.active, name + " (only scheduled modules)");
1194  printEventLine(out, path.total, name + " (including dependencies)");
1195  }
1196  }
1197  printEventLine(out, data.total, "total");
1198  out << '\n';
1199  for (unsigned int group : boost::irange(0ul, highlight_modules_.size())) {
1200  printEventHeader(out, "Highlighted modules");
1201  for (unsigned int m : highlight_modules_[group].modules) {
1202  auto const& module_d = callgraph_.module(m);
1203  auto const& module = data.modules[m];
1204  printEventLine(out, module.total, " " + module_d.moduleLabel());
1205  }
1206  printEventLine(out, data.highlight[group], highlight_modules_[group].label);
1207  out << '\n';
1208  }
1209 }
std::vector< GroupOfModules > highlight_modules_
edm::ModuleDescription const & source() const
edm::ModuleDescription const & module(unsigned int module) const
std::vector< ProcessType > const & processes() const
void printEventHeader(T &out, std::string const &label) const
void printEventLine(T &out, Resources const &data, std::string const &label) const
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
void printHeader(T &out, std::string const &label) const
ProcessType const & processDescription(unsigned int) const
ProcessCallGraph callgraph_
static std::string const source
Definition: EdmProvDump.cc:46

◆ printEventHeader() [1/2]

template<typename T >
void FastTimerService::printEventHeader ( T out,
std::string const &  label 
) const
private

◆ printEventHeader() [2/2]

template<typename T >
void FastTimerService::printEventHeader ( T out,
std::string const &  label 
) const

Definition at line 1134 of file FastTimerService.cc.

References label, and MillePedeFileConverter_cfg::out.

1134  {
1135  out << "FastReport CPU time Real time Allocated Deallocated " << label << "\n";
1136  // FastReport ########.# ms ########.# ms +######### kB -######### kB ...
1137 }
char const * label

◆ printEventLine() [1/4]

template<typename T >
void FastTimerService::printEventLine ( T out,
Resources const &  data,
std::string const &  label 
) const
private

◆ printEventLine() [2/4]

template<typename T >
void FastTimerService::printEventLine ( T out,
AtomicResources const &  data,
std::string const &  label 
) const
private

◆ printEventLine() [3/4]

template<typename T >
void FastTimerService::printEventLine ( T out,
Resources const &  data,
std::string const &  label 
) const

Definition at line 1140 of file FastTimerService.cc.

References data, label, and MillePedeFileConverter_cfg::out.

1140  {
1141  out << fmt::sprintf("FastReport %10.1f ms %10.1f ms %+10d kB %+10d kB %s\n",
1142  ms(data.time_thread),
1143  ms(data.time_real),
1144  +static_cast<int64_t>(kB(data.allocated)),
1145  -static_cast<int64_t>(kB(data.deallocated)),
1146  label);
1147 }
char const * label
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79

◆ printEventLine() [4/4]

template<typename T >
void FastTimerService::printEventLine ( T out,
AtomicResources const &  data,
std::string const &  label 
) const

Definition at line 1150 of file FastTimerService.cc.

References data, label, and MillePedeFileConverter_cfg::out.

1150  {
1151  out << fmt::sprintf("FastReport %10.1f ms %10.1f ms %+10d kB %+10d kB %s\n",
1152  ms(boost::chrono::nanoseconds(data.time_thread.load())),
1153  ms(boost::chrono::nanoseconds(data.time_real.load())),
1154  +static_cast<int64_t>(kB(data.allocated)),
1155  -static_cast<int64_t>(kB(data.deallocated)),
1156  label);
1157 }
boost::date_time::subsecond_duration< boost::posix_time::time_duration, 1000000000 > nanoseconds
char const * label
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79

◆ printHeader() [1/2]

template<typename T >
void FastTimerService::printHeader ( T out,
std::string const &  label 
) const
private

◆ printHeader() [2/2]

template<typename T >
void FastTimerService::printHeader ( T out,
std::string const &  label 
) const

Definition at line 1121 of file FastTimerService.cc.

References mps_fire::i, label, and MillePedeFileConverter_cfg::out.

1121  {
1122  out << "FastReport ";
1123  if (label.size() < 60)
1124  for (unsigned int i = (60 - label.size()) / 2; i > 0; --i)
1125  out << '-';
1126  out << ' ' << label << " Summary ";
1127  if (label.size() < 60)
1128  for (unsigned int i = (59 - label.size()) / 2; i > 0; --i)
1129  out << '-';
1130  out << '\n';
1131 }
char const * label

◆ printPathSummaryHeader() [1/2]

template<typename T >
void FastTimerService::printPathSummaryHeader ( T out,
std::string const &  label 
) const
private

◆ printPathSummaryHeader() [2/2]

template<typename T >
void FastTimerService::printPathSummaryHeader ( T out,
std::string const &  label 
) const

Definition at line 1225 of file FastTimerService.cc.

References label, and MillePedeFileConverter_cfg::out.

1225  {
1226  // clang-format off
1227  out << "FastReport CPU time sched. / depend. Real time sched. / depend. Alloc. sched. / depend. Dealloc. sched. / depend. ";
1228  // FastReport ########.# ms ########.# ms ########.# ms ########.# ms +######### kB +######### kB -######### kB -######### kB ...
1229  out << label << '\n';
1230  // clang-format on
1231 }
char const * label

◆ printPathSummaryLine() [1/2]

template<typename T >
void FastTimerService::printPathSummaryLine ( T out,
Resources const &  data,
Resources const &  total,
uint64_t  events,
std::string const &  label 
) const
private

◆ printPathSummaryLine() [2/2]

template<typename T >
void FastTimerService::printPathSummaryLine ( T out,
Resources const &  data,
Resources const &  total,
uint64_t  events,
std::string const &  label 
) const

Definition at line 1297 of file FastTimerService.cc.

References data, events, label, MillePedeFileConverter_cfg::out, and dqmMemoryStats::total.

1298  {
1299  out << fmt::sprintf(
1300  "FastReport %10.1f ms %10.1f ms %10.1f ms %10.1f ms %+10d kB %+10d kB %+10d kB %+10d kB %s\n",
1301  (events ? ms(data.time_thread) / events : 0),
1302  (events ? ms(total.time_thread) / events : 0),
1303  (events ? ms(data.time_real) / events : 0),
1304  (events ? ms(total.time_real) / events : 0),
1305  (events ? +static_cast<int64_t>(kB(data.allocated) / events) : 0),
1306  (events ? +static_cast<int64_t>(kB(total.allocated) / events) : 0),
1307  (events ? -static_cast<int64_t>(kB(data.deallocated) / events) : 0),
1308  (events ? -static_cast<int64_t>(kB(total.deallocated) / events) : 0),
1309  label);
1310 }
char const * label
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
int events

◆ printSummary() [1/2]

template<typename T >
void FastTimerService::printSummary ( T out,
ResourcesPerJob const &  data,
std::string const &  label 
) const
private

◆ printSummary() [2/2]

template<typename T >
void FastTimerService::printSummary ( T out,
ResourcesPerJob const &  data,
std::string const &  label 
) const

Definition at line 1313 of file FastTimerService.cc.

References data, watchdog::group, mps_fire::i, label, visualization-live-secondInstance_cfg::m, callgraph::module, Skims_PA_cff::name, MillePedeFileConverter_cfg::out, AlCaHLTBitMon_ParallelJobs::p, castor_dqm_sourceclient_file_cfg::path, ValidateTausOnZEEFastSim_cff::proc, and source.

1313  {
1314  printHeader(out, label);
1315  printSummaryHeader(out, "Modules", true);
1316  auto const& source_d = callgraph_.source();
1317  auto const& source = data.modules[source_d.id()];
1318  printSummaryLine(out, source.total, data.events, source.events, source_d.moduleLabel());
1319  for (unsigned int i = 0; i < callgraph_.processes().size(); ++i) {
1320  auto const& proc_d = callgraph_.processDescription(i);
1321  auto const& proc = data.processes[i];
1322  printSummaryLine(out, proc.total, data.events, "process " + proc_d.name_);
1323  for (unsigned int m : proc_d.modules_) {
1324  auto const& module_d = callgraph_.module(m);
1325  auto const& module = data.modules[m];
1326  printSummaryLine(out, module.total, data.events, module.events, " " + module_d.moduleLabel());
1327  }
1328  }
1329  printSummaryLine(out, data.total, data.events, "total");
1330  printSummaryLine(out, data.overhead, data.events, "other");
1331  printSummaryLine(out, data.eventsetup, data.events, "eventsetup");
1332  out << '\n';
1333  printPathSummaryHeader(out, "Processes and Paths");
1334  printSummaryLine(out, source.total, data.events, source_d.moduleLabel());
1335  for (unsigned int i = 0; i < callgraph_.processes().size(); ++i) {
1336  auto const& proc_d = callgraph_.processDescription(i);
1337  auto const& proc = data.processes[i];
1338  printSummaryLine(out, proc.total, data.events, "process " + proc_d.name_);
1339  for (unsigned int p = 0; p < proc.paths.size(); ++p) {
1340  auto const& name = proc_d.paths_[p].name_;
1341  auto const& path = proc.paths[p];
1342  printPathSummaryLine(out, path.active, path.total, data.events, " " + name);
1343  }
1344  for (unsigned int p = 0; p < proc.endpaths.size(); ++p) {
1345  auto const& name = proc_d.endPaths_[p].name_;
1346  auto const& path = proc.endpaths[p];
1347  printPathSummaryLine(out, path.active, path.total, data.events, " " + name);
1348  }
1349  }
1350  printSummaryLine(out, data.total, data.events, "total");
1351  printSummaryLine(out, data.overhead, data.events, "other");
1352  printSummaryLine(out, data.eventsetup, data.events, "eventsetup");
1353  out << '\n';
1354  for (unsigned int group : boost::irange(0ul, highlight_modules_.size())) {
1355  printSummaryHeader(out, "Highlighted modules", true);
1356  for (unsigned int m : highlight_modules_[group].modules) {
1357  auto const& module_d = callgraph_.module(m);
1358  auto const& module = data.modules[m];
1359  printSummaryLine(out, module.total, data.events, module.events, module_d.moduleLabel());
1360  }
1361  printSummaryLine(out, data.highlight[group], data.events, highlight_modules_[group].label);
1362  out << '\n';
1363  }
1364 }
std::vector< GroupOfModules > highlight_modules_
edm::ModuleDescription const & source() const
edm::ModuleDescription const & module(unsigned int module) const
char const * label
std::vector< ProcessType > const & processes() const
void printSummaryLine(T &out, Resources const &data, uint64_t events, std::string const &label) const
void printPathSummaryLine(T &out, Resources const &data, Resources const &total, uint64_t events, std::string const &label) const
void printSummaryHeader(T &out, std::string const &label, bool detailed) const
void printPathSummaryHeader(T &out, std::string const &label) const
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
void printHeader(T &out, std::string const &label) const
ProcessType const & processDescription(unsigned int) const
ProcessCallGraph callgraph_
static std::string const source
Definition: EdmProvDump.cc:46

◆ printSummaryHeader() [1/2]

template<typename T >
void FastTimerService::printSummaryHeader ( T out,
std::string const &  label,
bool  detailed 
) const
private

◆ printSummaryHeader() [2/2]

template<typename T >
void FastTimerService::printSummaryHeader ( T out,
std::string const &  label,
bool  detailed 
) const

Definition at line 1212 of file FastTimerService.cc.

References label, and MillePedeFileConverter_cfg::out.

1212  {
1213  // clang-format off
1214  if (detailed)
1215  out << "FastReport CPU time avg. when run Real time avg. when run Alloc. avg. when run Dealloc. avg. when run ";
1216  // FastReport ########.# ms ########.# ms ########.# ms ########.# ms +######### kB +######### kB -######### kB -######### kB ...
1217  else
1218  out << "FastReport CPU time avg. Real time avg. Alloc. avg. Dealloc. avg. ";
1219  // FastReport ########.# ms ########.# ms +######### kB -######### kB ...
1220  out << label << '\n';
1221  // clang-format on
1222 }
char const * label

◆ printSummaryLine() [1/8]

template<typename T >
void FastTimerService::printSummaryLine ( T out,
Resources const &  data,
uint64_t  events,
std::string const &  label 
) const
private

◆ printSummaryLine() [2/8]

template<typename T >
void FastTimerService::printSummaryLine ( T out,
Resources const &  data,
uint64_t  events,
uint64_t  active,
std::string const &  label 
) const
private

◆ printSummaryLine() [3/8]

template<typename T >
void FastTimerService::printSummaryLine ( T out,
AtomicResources const &  data,
uint64_t  events,
std::string const &  label 
) const
private

◆ printSummaryLine() [4/8]

template<typename T >
void FastTimerService::printSummaryLine ( T out,
AtomicResources const &  data,
uint64_t  events,
uint64_t  active,
std::string const &  label 
) const
private

◆ printSummaryLine() [5/8]

template<typename T >
void FastTimerService::printSummaryLine ( T out,
Resources const &  data,
uint64_t  events,
std::string const &  label 
) const

Definition at line 1234 of file FastTimerService.cc.

References data, events, label, and MillePedeFileConverter_cfg::out.

1234  {
1235  out << fmt::sprintf(
1236  // clang-format off
1237  "FastReport %10.1f ms %10.1f ms %+10d kB %+10d kB %s\n",
1238  // clang-format on
1239  (events ? ms(data.time_thread) / events : 0),
1240  (events ? ms(data.time_real) / events : 0),
1241  (events ? +static_cast<int64_t>(kB(data.allocated) / events) : 0),
1242  (events ? -static_cast<int64_t>(kB(data.deallocated) / events) : 0),
1243  label);
1244 }
char const * label
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
int events

◆ printSummaryLine() [6/8]

template<typename T >
void FastTimerService::printSummaryLine ( T out,
AtomicResources const &  data,
uint64_t  events,
uint64_t  active,
std::string const &  label 
) const

Definition at line 1247 of file FastTimerService.cc.

References data, events, label, and MillePedeFileConverter_cfg::out.

1248  {
1249  out << fmt::sprintf(
1250  // clang-format off
1251  "FastReport %10.1f ms %10.1f ms %10.1f ms %10.1f ms %+10d kB %+10d kB %+10d kB %+10d kB %s\n",
1252  // clang-format on
1253  (events ? ms(data.time_thread) / events : 0),
1254  (active ? ms(data.time_thread) / active : 0),
1255  (events ? ms(data.time_real) / events : 0),
1256  (active ? ms(data.time_real) / active : 0),
1257  (events ? +static_cast<int64_t>(kB(data.allocated) / events) : 0),
1258  (active ? +static_cast<int64_t>(kB(data.allocated) / active) : 0),
1259  (events ? -static_cast<int64_t>(kB(data.deallocated) / events) : 0),
1260  (active ? -static_cast<int64_t>(kB(data.deallocated) / active) : 0),
1261  label);
1262 }
char const * label
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
int events

◆ printSummaryLine() [7/8]

template<typename T >
void FastTimerService::printSummaryLine ( T out,
AtomicResources const &  data,
uint64_t  events,
std::string const &  label 
) const

Definition at line 1265 of file FastTimerService.cc.

References data, events, label, and MillePedeFileConverter_cfg::out.

1268  {
1269  out << fmt::sprintf(
1270  // clang-format off
1271  "FastReport %10.1f ms %10.1f ms %+10d kB %+10d kB %s\n",
1272  // clang-format on
1273  (events ? ms(data.time_thread) / events : 0),
1274  (events ? ms(data.time_real) / events : 0),
1275  (events ? +static_cast<int64_t>(kB(data.allocated) / events) : 0),
1276  (events ? -static_cast<int64_t>(kB(data.deallocated) / events) : 0),
1277  label);
1278 }
char const * label
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
int events

◆ printSummaryLine() [8/8]

template<typename T >
void FastTimerService::printSummaryLine ( T out,
Resources const &  data,
uint64_t  events,
uint64_t  active,
std::string const &  label 
) const

Definition at line 1281 of file FastTimerService.cc.

References data, events, label, and MillePedeFileConverter_cfg::out.

1282  {
1283  out << fmt::sprintf(
1284  "FastReport %10.1f ms %10.1f ms %10.1f ms %10.1f ms %+10d kB %+10d kB %+10d kB %+10d kB %s\n",
1285  (events ? ms(data.time_thread) / events : 0),
1286  (active ? ms(data.time_thread) / active : 0),
1287  (events ? ms(data.time_real) / events : 0),
1288  (active ? ms(data.time_real) / active : 0),
1289  (events ? +static_cast<int64_t>(kB(data.allocated) / events) : 0),
1290  (active ? +static_cast<int64_t>(kB(data.allocated) / active) : 0),
1291  (events ? -static_cast<int64_t>(kB(data.deallocated) / events) : 0),
1292  (active ? -static_cast<int64_t>(kB(data.deallocated) / active) : 0),
1293  label);
1294 }
char const * label
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
int events

◆ printTransition() [1/2]

template<typename T >
void FastTimerService::printTransition ( T out,
AtomicResources const &  data,
std::string const &  label 
) const
private

◆ printTransition() [2/2]

template<typename T >
void FastTimerService::printTransition ( T out,
AtomicResources const &  data,
std::string const &  label 
) const

Definition at line 1367 of file FastTimerService.cc.

References data, label, and MillePedeFileConverter_cfg::out.

1367  {
1368  printEventHeader(out, "Transition");
1370 }
char const * label
void printEventHeader(T &out, std::string const &label) const
void printEventLine(T &out, Resources const &data, std::string const &label) const
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79

◆ thread()

FastTimerService::Measurement & FastTimerService::thread ( )
private

Definition at line 1768 of file FastTimerService.cc.

References guard_, and FastTimerService::ThreadGuard::thread().

Referenced by on_scheduler_entry().

1768 { return guard_.thread(); }

◆ unsupportedSignal()

void FastTimerService::unsupportedSignal ( const std::string &  signal) const
private

Definition at line 895 of file FastTimerService.cc.

895  {
896  // warn about each signal only once per job
897  if (unsupported_signals_.insert(signal).second)
898  edm::LogWarning("FastTimerService") << "The FastTimerService received the unsupported signal \"" << signal
899  << "\".\n"
900  << "Please report how to reproduce the issue to cms-hlt@cern.ch .";
901 }
tbb::concurrent_unordered_set< std::string > unsupported_signals_

◆ writeSummaryJSON()

void FastTimerService::writeSummaryJSON ( ResourcesPerJob const &  data,
std::string const &  filename 
) const
private

Definition at line 1390 of file FastTimerService.cc.

References mps_check::array, data, corrVsCorr::filename, mps_fire::i, dqmiolumiharvest::j, callgraph::module, and MillePedeFileConverter_cfg::out.

1390  {
1391  json j;
1392 
1393  // write a description of the resources
1394  j["resources"] = json::array({json{{"time_real", "real time"}},
1395  json{{"time_thread", "cpu time"}},
1396  json{{"mem_alloc", "allocated memory"}},
1397  json{{"mem_free", "deallocated memory"}}});
1398 
1399  // write the resources used by the job
1400  j["total"] = encodeToJSON(
1401  "Job", callgraph_.processDescription(0).name_, data.events, data.total + data.overhead + data.eventsetup);
1402 
1403  // write the resources used by every module
1404  j["modules"] = json::array();
1405  for (unsigned int i = 0; i < callgraph_.size(); ++i) {
1406  auto const& module = callgraph_.module(i);
1407  auto const& data_m = data.modules[i];
1408  j["modules"].push_back(encodeToJSON(module, data_m));
1409  }
1410 
1411  // add an entry for the "overhead"
1412  j["modules"].push_back(encodeToJSON("other", "other", data.events, data.overhead));
1413  j["modules"].push_back(encodeToJSON("eventsetup", "eventsetup", data.events, data.eventsetup));
1414 
1415  std::ofstream out(filename);
1416  out << std::setw(2) << j << std::flush;
1417 }
nlohmann::json json
edm::ModuleDescription const & module(unsigned int module) const
json encodeToJSON(std::string const &type, std::string const &label, unsigned int events, T const &data) const
unsigned int size() const
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
ProcessType const & processDescription(unsigned int) const
ProcessCallGraph callgraph_

Member Data Documentation

◆ callgraph_

ProcessCallGraph FastTimerService::callgraph_
private

Definition at line 446 of file FastTimerService.h.

◆ concurrent_lumis_

unsigned int FastTimerService::concurrent_lumis_
private

Definition at line 501 of file FastTimerService.h.

◆ concurrent_runs_

unsigned int FastTimerService::concurrent_runs_
private

Definition at line 502 of file FastTimerService.h.

◆ concurrent_streams_

unsigned int FastTimerService::concurrent_streams_
private

Definition at line 503 of file FastTimerService.h.

◆ concurrent_threads_

unsigned int FastTimerService::concurrent_threads_
private

Definition at line 504 of file FastTimerService.h.

◆ dqm_event_ranges_

const PlotRanges FastTimerService::dqm_event_ranges_
private

Definition at line 526 of file FastTimerService.h.

◆ dqm_lumisections_range_

const unsigned int FastTimerService::dqm_lumisections_range_
private

Definition at line 529 of file FastTimerService.h.

◆ dqm_module_ranges_

const PlotRanges FastTimerService::dqm_module_ranges_
private

Definition at line 528 of file FastTimerService.h.

◆ dqm_path_

std::string FastTimerService::dqm_path_
private

Definition at line 530 of file FastTimerService.h.

◆ dqm_path_ranges_

const PlotRanges FastTimerService::dqm_path_ranges_
private

Definition at line 527 of file FastTimerService.h.

◆ enable_dqm_

bool FastTimerService::enable_dqm_
private

Definition at line 519 of file FastTimerService.h.

◆ enable_dqm_byls_

const bool FastTimerService::enable_dqm_byls_
private

Definition at line 522 of file FastTimerService.h.

◆ enable_dqm_bymodule_

const bool FastTimerService::enable_dqm_bymodule_
private

Definition at line 520 of file FastTimerService.h.

◆ enable_dqm_bynproc_

const bool FastTimerService::enable_dqm_bynproc_
private

Definition at line 523 of file FastTimerService.h.

◆ enable_dqm_bypath_

const bool FastTimerService::enable_dqm_bypath_
private

Definition at line 521 of file FastTimerService.h.

◆ enable_dqm_transitions_

const bool FastTimerService::enable_dqm_transitions_
private

Definition at line 524 of file FastTimerService.h.

◆ guard_

ThreadGuard FastTimerService::guard_
private

Definition at line 490 of file FastTimerService.h.

Referenced by on_scheduler_entry(), and thread().

◆ highlight_module_psets_

std::vector<edm::ParameterSet> FastTimerService::highlight_module_psets_
private

Definition at line 532 of file FastTimerService.h.

◆ highlight_modules_

std::vector<GroupOfModules> FastTimerService::highlight_modules_
private

Definition at line 533 of file FastTimerService.h.

◆ job_summary_

ResourcesPerJob FastTimerService::job_summary_
private

Definition at line 460 of file FastTimerService.h.

◆ json_filename_

const std::string FastTimerService::json_filename_
private

Definition at line 516 of file FastTimerService.h.

◆ lumi_transition_

std::vector<AtomicResources> FastTimerService::lumi_transition_
private

Definition at line 455 of file FastTimerService.h.

◆ overhead_

AtomicResources FastTimerService::overhead_
private

◆ plots_

std::unique_ptr<PlotsPerJob> FastTimerService::plots_
private

Definition at line 452 of file FastTimerService.h.

◆ print_event_summary_

const bool FastTimerService::print_event_summary_
private

Definition at line 507 of file FastTimerService.h.

◆ print_job_summary_

const bool FastTimerService::print_job_summary_
private

Definition at line 509 of file FastTimerService.h.

◆ print_run_summary_

const bool FastTimerService::print_run_summary_
private

Definition at line 508 of file FastTimerService.h.

◆ run_summary_

std::vector<ResourcesPerJob> FastTimerService::run_summary_
private

Definition at line 461 of file FastTimerService.h.

◆ run_transition_

std::vector<AtomicResources> FastTimerService::run_transition_
private

Definition at line 456 of file FastTimerService.h.

◆ streams_

std::vector<ResourcesPerJob> FastTimerService::streams_
private

Definition at line 449 of file FastTimerService.h.

◆ subprocess_event_check_

std::unique_ptr<std::atomic<unsigned int>[]> FastTimerService::subprocess_event_check_
private

Definition at line 493 of file FastTimerService.h.

◆ subprocess_global_lumi_check_

std::unique_ptr<std::atomic<unsigned int>[]> FastTimerService::subprocess_global_lumi_check_
private

Definition at line 494 of file FastTimerService.h.

◆ subprocess_global_run_check_

std::unique_ptr<std::atomic<unsigned int>[]> FastTimerService::subprocess_global_run_check_
private

Definition at line 495 of file FastTimerService.h.

◆ summary_mutex_

std::mutex FastTimerService::summary_mutex_
private

Definition at line 462 of file FastTimerService.h.

◆ unsupported_signals_

tbb::concurrent_unordered_set<std::string> FastTimerService::unsupported_signals_
mutableprivate

Definition at line 536 of file FastTimerService.h.

◆ write_json_summary_

const bool FastTimerService::write_json_summary_
private

Definition at line 515 of file FastTimerService.h.