CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes
edm::GlobalSchedule Class Reference

#include <GlobalSchedule.h>

Public Types

typedef std::vector< Worker * > AllWorkers
 
typedef std::vector< std::string > vstring
 
typedef std::shared_ptr< WorkerWorkerPtr
 
typedef std::vector< Worker * > Workers
 

Public Member Functions

AllWorkers const & allWorkers () const
 returns the collection of pointers to workers More...
 
void beginJob (ProductRegistry const &, eventsetup::ESRecordsToProductResolverIndices const &, ProcessBlockHelperBase const &, PathsAndConsumesOfModulesBase const &, ProcessContext const &)
 
void deleteModule (std::string const &iLabel)
 Delete the module with label iLabel. More...
 
void endJob (ExceptionCollector &collector)
 
std::vector< ModuleDescription const * > getAllModuleDescriptions () const
 
 GlobalSchedule (std::shared_ptr< TriggerResultInserter > inserter, std::vector< edm::propagate_const< std::shared_ptr< PathStatusInserter >>> &pathStatusInserters, std::vector< edm::propagate_const< std::shared_ptr< EndPathStatusInserter >>> &endPathStatusInserters, std::shared_ptr< ModuleRegistry > modReg, std::vector< std::string > const &modulesToUse, ParameterSet &proc_pset, ProductRegistry &pregistry, PreallocationConfiguration const &prealloc, ExceptionToActionTable const &actions, std::shared_ptr< ActivityRegistry > areg, std::shared_ptr< ProcessConfiguration const > processConfiguration, ProcessContext const *processContext)
 
 GlobalSchedule (GlobalSchedule const &)=delete
 
template<typename T >
void processOneGlobalAsync (WaitingTaskHolder holder, typename T::TransitionInfoType &, ServiceToken const &token, bool cleaningUpAfterException=false)
 
void replaceModule (maker::ModuleHolder *iMod, std::string const &iLabel)
 clone the type of module with label iLabel but configure with iPSet. More...
 
bool terminate () const
 Return whether each output module has reached its maximum count. More...
 

Private Member Functions

ExceptionToActionTable const & actionTable () const
 returns the action table More...
 
void handleException (GlobalContext const *, ServiceWeakToken const &, bool cleaningUpAfterException, std::exception_ptr &)
 
template<typename T >
void postScheduleSignal (GlobalContext const *, ServiceWeakToken const &, std::exception_ptr &)
 
template<typename T >
void preScheduleSignal (GlobalContext const *, ServiceToken const &)
 

Private Attributes

std::shared_ptr< ActivityRegistryactReg_
 
std::vector< edm::propagate_const< WorkerPtr > > extraWorkers_
 
unsigned int numberOfConcurrentLumis_
 
unsigned int numberOfConcurrentRuns_
 
ProcessContext const * processContext_
 
std::vector< WorkerManagerworkerManagers_
 

Static Private Attributes

static constexpr unsigned int numberOfConcurrentJobs_ = 1
 
static constexpr unsigned int numberOfConcurrentProcessBlocks_ = 1
 

Detailed Description

Definition at line 49 of file GlobalSchedule.h.

Member Typedef Documentation

◆ AllWorkers

typedef std::vector<Worker*> edm::GlobalSchedule::AllWorkers

Definition at line 52 of file GlobalSchedule.h.

◆ vstring

typedef std::vector<std::string> edm::GlobalSchedule::vstring

Definition at line 51 of file GlobalSchedule.h.

◆ WorkerPtr

typedef std::shared_ptr<Worker> edm::GlobalSchedule::WorkerPtr

Definition at line 53 of file GlobalSchedule.h.

◆ Workers

typedef std::vector<Worker*> edm::GlobalSchedule::Workers

Definition at line 54 of file GlobalSchedule.h.

Constructor & Destructor Documentation

◆ GlobalSchedule() [1/2]

edm::GlobalSchedule::GlobalSchedule ( std::shared_ptr< TriggerResultInserter inserter,
std::vector< edm::propagate_const< std::shared_ptr< PathStatusInserter >>> &  pathStatusInserters,
std::vector< edm::propagate_const< std::shared_ptr< EndPathStatusInserter >>> &  endPathStatusInserters,
std::shared_ptr< ModuleRegistry modReg,
std::vector< std::string > const &  modulesToUse,
ParameterSet proc_pset,
ProductRegistry pregistry,
PreallocationConfiguration const &  prealloc,
ExceptionToActionTable const &  actions,
std::shared_ptr< ActivityRegistry areg,
std::shared_ptr< ProcessConfiguration const >  processConfiguration,
ProcessContext const *  processContext 
)

Definition at line 24 of file GlobalSchedule.cc.

References actions, actReg_, cms::cuda::assert(), extraWorkers_, edm::get_underlying(), edm::ParameterSet::getPSetForUpdate(), mps_fire::i, HerwigMaxPtPartonFilter_cfi::moduleLabel, eostools::move(), numberOfConcurrentJobs_, numberOfConcurrentProcessBlocks_, edm::PreallocationConfiguration::numberOfLuminosityBlocks(), edm::PreallocationConfiguration::numberOfRuns(), and workerManagers_.

37  : actReg_(areg),
38  processContext_(processContext),
39  numberOfConcurrentLumis_(prealloc.numberOfLuminosityBlocks()),
40  numberOfConcurrentRuns_(prealloc.numberOfRuns()) {
41  unsigned int nManagers = prealloc.numberOfLuminosityBlocks() + prealloc.numberOfRuns() +
43  workerManagers_.reserve(nManagers);
44  for (unsigned int i = 0; i < nManagers; ++i) {
45  workerManagers_.emplace_back(modReg, areg, actions);
46  }
47  for (auto const& moduleLabel : iModulesToUse) {
48  bool isTracked;
49  ParameterSet* modpset = proc_pset.getPSetForUpdate(moduleLabel, isTracked);
50  if (modpset != nullptr) { // It will be null for PathStatusInserters, it should
51  // be impossible to be null for anything else
52  assert(isTracked);
53 
54  //side effect keeps this module around
55  for (auto& wm : workerManagers_) {
56  wm.addToAllWorkers(wm.getWorker(*modpset, pregistry, &prealloc, processConfiguration, moduleLabel));
57  }
58  }
59  }
60  if (inserter) {
61  inserter->doPreallocate(prealloc);
62  for (auto& wm : workerManagers_) {
64  inserter, inserter->moduleDescription(), &actions)); // propagate_const<T> has no reset() function
65  results_inserter->setActivityRegistry(actReg_);
66  wm.addToAllWorkers(results_inserter.get());
67  extraWorkers_.emplace_back(std::move(results_inserter));
68  }
69  }
70 
71  for (auto& pathStatusInserter : pathStatusInserters) {
72  std::shared_ptr<PathStatusInserter> inserterPtr = get_underlying(pathStatusInserter);
73  inserterPtr->doPreallocate(prealloc);
74 
75  for (auto& wm : workerManagers_) {
76  WorkerPtr workerPtr(
77  new edm::WorkerT<PathStatusInserter::ModuleType>(inserterPtr, inserterPtr->moduleDescription(), &actions));
78  workerPtr->setActivityRegistry(actReg_);
79  wm.addToAllWorkers(workerPtr.get());
80  extraWorkers_.emplace_back(std::move(workerPtr));
81  }
82  }
83 
84  for (auto& endPathStatusInserter : endPathStatusInserters) {
85  std::shared_ptr<EndPathStatusInserter> inserterPtr = get_underlying(endPathStatusInserter);
86  inserterPtr->doPreallocate(prealloc);
87  for (auto& wm : workerManagers_) {
89  inserterPtr, inserterPtr->moduleDescription(), &actions));
90  workerPtr->setActivityRegistry(actReg_);
91  wm.addToAllWorkers(workerPtr.get());
92  extraWorkers_.emplace_back(std::move(workerPtr));
93  }
94  }
95 
96  } // GlobalSchedule::GlobalSchedule
std::vector< WorkerManager > workerManagers_
roAction_t actions[nactions]
Definition: GenABIO.cc:181
assert(be >=bs)
std::shared_ptr< Worker > WorkerPtr
std::shared_ptr< ActivityRegistry > actReg_
unsigned int numberOfConcurrentRuns_
constexpr T & get_underlying(propagate_const< T > &)
static constexpr unsigned int numberOfConcurrentProcessBlocks_
ProcessContext const * processContext_
unsigned int numberOfConcurrentLumis_
def move(src, dest)
Definition: eostools.py:511
static constexpr unsigned int numberOfConcurrentJobs_
std::vector< edm::propagate_const< WorkerPtr > > extraWorkers_

◆ GlobalSchedule() [2/2]

edm::GlobalSchedule::GlobalSchedule ( GlobalSchedule const &  )
delete

Member Function Documentation

◆ actionTable()

ExceptionToActionTable const& edm::GlobalSchedule::actionTable ( ) const
inlineprivate

returns the action table

Definition at line 105 of file GlobalSchedule.h.

References workerManagers_.

105 { return workerManagers_[0].actionTable(); }
std::vector< WorkerManager > workerManagers_

◆ allWorkers()

AllWorkers const& edm::GlobalSchedule::allWorkers ( ) const
inline

returns the collection of pointers to workers

Definition at line 101 of file GlobalSchedule.h.

References workerManagers_.

Referenced by getAllModuleDescriptions().

101 { return workerManagers_[0].allWorkers(); }
std::vector< WorkerManager > workerManagers_

◆ beginJob()

void edm::GlobalSchedule::beginJob ( ProductRegistry const &  iRegistry,
eventsetup::ESRecordsToProductResolverIndices const &  iESIndices,
ProcessBlockHelperBase const &  processBlockHelperBase,
PathsAndConsumesOfModulesBase const &  pathsAndConsumesOfModules,
ProcessContext const &  processContext 
)

Definition at line 98 of file GlobalSchedule.cc.

References actReg_, CMS_SA_ALLOW, edm::exceptionContext(), edm::GlobalContext::kBeginJob, numberOfConcurrentLumis_, numberOfConcurrentProcessBlocks_, numberOfConcurrentRuns_, processContext_, workerManagers_, and edm::convertException::wrap().

102  {
103  GlobalContext globalContext(GlobalContext::Transition::kBeginJob, processContext_);
104  unsigned int const managerIndex =
106 
107  std::exception_ptr exceptionPtr;
108  CMS_SA_ALLOW try {
109  try {
110  convertException::wrap([this, &pathsAndConsumesOfModules, &processContext]() {
111  actReg_->preBeginJobSignal_(pathsAndConsumesOfModules, processContext);
112  });
113  } catch (cms::Exception& ex) {
114  exceptionContext(ex, globalContext, "Handling pre signal, likely in a service function");
115  throw;
116  }
117  workerManagers_[managerIndex].beginJob(iRegistry, iESIndices, processBlockHelperBase, globalContext);
118  } catch (...) {
119  exceptionPtr = std::current_exception();
120  }
121 
122  try {
123  convertException::wrap([this]() { actReg_->postBeginJobSignal_(); });
124  } catch (cms::Exception& ex) {
125  if (!exceptionPtr) {
126  exceptionContext(ex, globalContext, "Handling post signal, likely in a service function");
127  exceptionPtr = std::current_exception();
128  }
129  }
130  if (exceptionPtr) {
131  std::rethrow_exception(exceptionPtr);
132  }
133  }
#define CMS_SA_ALLOW
std::vector< WorkerManager > workerManagers_
void exceptionContext(cms::Exception &, ESModuleCallingContext const &)
std::shared_ptr< ActivityRegistry > actReg_
unsigned int numberOfConcurrentRuns_
static constexpr unsigned int numberOfConcurrentProcessBlocks_
auto wrap(F iFunc) -> decltype(iFunc())
ProcessContext const * processContext_
unsigned int numberOfConcurrentLumis_

◆ deleteModule()

void edm::GlobalSchedule::deleteModule ( std::string const &  iLabel)

Delete the module with label iLabel.

Definition at line 191 of file GlobalSchedule.cc.

References workerManagers_.

191  {
192  for (auto& wm : workerManagers_) {
193  wm.deleteModuleIfExists(iLabel);
194  }
195  }
std::vector< WorkerManager > workerManagers_

◆ endJob()

void edm::GlobalSchedule::endJob ( ExceptionCollector collector)

Definition at line 135 of file GlobalSchedule.cc.

References actReg_, edm::ExceptionCollector::call(), CMS_SA_ALLOW, edm::exceptionContext(), edm::GlobalContext::kEndJob, numberOfConcurrentLumis_, numberOfConcurrentProcessBlocks_, numberOfConcurrentRuns_, processContext_, workerManagers_, and edm::convertException::wrap().

135  {
136  GlobalContext globalContext(GlobalContext::Transition::kEndJob, processContext_);
137  unsigned int const managerIndex =
139 
140  std::exception_ptr exceptionPtr;
141  CMS_SA_ALLOW try {
142  try {
143  convertException::wrap([this]() { actReg_->preEndJobSignal_(); });
144  } catch (cms::Exception& ex) {
145  exceptionContext(ex, globalContext, "Handling pre signal, likely in a service function");
146  throw;
147  }
148  workerManagers_[managerIndex].endJob(collector, globalContext);
149  } catch (...) {
150  exceptionPtr = std::current_exception();
151  }
152 
153  try {
154  convertException::wrap([this]() { actReg_->postEndJobSignal_(); });
155  } catch (cms::Exception& ex) {
156  if (!exceptionPtr) {
157  exceptionContext(ex, globalContext, "Handling post signal, likely in a service function");
158  exceptionPtr = std::current_exception();
159  }
160  }
161  if (exceptionPtr) {
162  collector.call([&exceptionPtr]() { std::rethrow_exception(exceptionPtr); });
163  }
164  }
#define CMS_SA_ALLOW
std::vector< WorkerManager > workerManagers_
void exceptionContext(cms::Exception &, ESModuleCallingContext const &)
std::shared_ptr< ActivityRegistry > actReg_
unsigned int numberOfConcurrentRuns_
static constexpr unsigned int numberOfConcurrentProcessBlocks_
auto wrap(F iFunc) -> decltype(iFunc())
ProcessContext const * processContext_
unsigned int numberOfConcurrentLumis_

◆ getAllModuleDescriptions()

std::vector< ModuleDescription const * > edm::GlobalSchedule::getAllModuleDescriptions ( ) const

Return a vector allowing const access to all the ModuleDescriptions for this GlobalSchedule. *** N.B. *** Ownership of the ModuleDescriptions is not *** passed to the caller. Do not call delete on these *** pointers!

Definition at line 197 of file GlobalSchedule.cc.

References allWorkers(), AlCaHLTBitMon_ParallelJobs::p, and mps_fire::result.

197  {
198  std::vector<ModuleDescription const*> result;
199  result.reserve(allWorkers().size());
200 
201  for (auto const& worker : allWorkers()) {
202  ModuleDescription const* p = worker->description();
203  result.push_back(p);
204  }
205  return result;
206  }
size
Write out results.
AllWorkers const & allWorkers() const
returns the collection of pointers to workers

◆ handleException()

void edm::GlobalSchedule::handleException ( GlobalContext const *  globalContext,
ServiceWeakToken const &  weakToken,
bool  cleaningUpAfterException,
std::exception_ptr &  excpt 
)
private

Definition at line 208 of file GlobalSchedule.cc.

References actReg_, edm::addContextAndPrintException(), CMS_SA_ALLOW, cms::Exception::context(), edm::exceptionContext(), edm::ExceptionFromThisContext, edm::ServiceWeakToken::lock(), findAndChange::op, and edm::convertException::wrap().

Referenced by processOneGlobalAsync().

211  {
212  //add context information to the exception and print message
213  try {
214  convertException::wrap([&excpt]() { std::rethrow_exception(excpt); });
215  } catch (cms::Exception& ex) {
216  std::ostringstream ost;
217  // In most cases the exception will already have context at this point,
218  // but add some context here in those rare cases where it does not.
219  if (ex.context().empty()) {
220  exceptionContext(ost, *globalContext);
221  }
222  ServiceRegistry::Operate op(weakToken.lock());
223  addContextAndPrintException(ost.str().c_str(), ex, cleaningUpAfterException);
224  excpt = std::current_exception();
225  }
226  // We are already handling an earlier exception, so ignore it
227  // if this signal results in another exception being thrown.
228  CMS_SA_ALLOW try {
229  if (actReg_) {
230  ServiceRegistry::Operate op(weakToken.lock());
231  actReg_->preGlobalEarlyTerminationSignal_(*globalContext, TerminationOrigin::ExceptionFromThisContext);
232  }
233  } catch (...) {
234  }
235  }
#define CMS_SA_ALLOW
void exceptionContext(cms::Exception &, ESModuleCallingContext const &)
void addContextAndPrintException(char const *context, cms::Exception &ex, bool disablePrint)
std::shared_ptr< ActivityRegistry > actReg_
auto wrap(F iFunc) -> decltype(iFunc())
std::list< std::string > const & context() const
Definition: Exception.cc:151

◆ postScheduleSignal()

template<typename T >
void edm::GlobalSchedule::postScheduleSignal ( GlobalContext const *  globalContext,
ServiceWeakToken const &  weakToken,
std::exception_ptr &  excpt 
)
private

Definition at line 204 of file GlobalSchedule.h.

References actReg_, edm::exceptionContext(), edm::ServiceWeakToken::lock(), findAndChange::op, and edm::convertException::wrap().

206  {
207  if (actReg_) {
208  try {
209  convertException::wrap([this, &weakToken, globalContext]() {
210  ServiceRegistry::Operate op(weakToken.lock());
211  T::postScheduleSignal(actReg_.get(), globalContext);
212  });
213  } catch (cms::Exception& ex) {
214  if (not excpt) {
215  exceptionContext(ex, *globalContext, "Handling post signal, likely in a service function");
216  excpt = std::current_exception();
217  }
218  }
219  }
220  }
void exceptionContext(cms::Exception &, ESModuleCallingContext const &)
std::shared_ptr< ActivityRegistry > actReg_
auto wrap(F iFunc) -> decltype(iFunc())

◆ preScheduleSignal()

template<typename T >
void edm::GlobalSchedule::preScheduleSignal ( GlobalContext const *  globalContext,
ServiceToken const &  token 
)
private

Definition at line 191 of file GlobalSchedule.h.

References actReg_, edm::exceptionContext(), findAndChange::op, unpackBuffers-CaloStage2::token, and edm::convertException::wrap().

191  {
192  if (actReg_) {
193  try {
195  convertException::wrap([this, globalContext]() { T::preScheduleSignal(actReg_.get(), globalContext); });
196  } catch (cms::Exception& ex) {
197  exceptionContext(ex, *globalContext, "Handling pre signal, likely in a service function");
198  throw;
199  }
200  }
201  }
void exceptionContext(cms::Exception &, ESModuleCallingContext const &)
std::shared_ptr< ActivityRegistry > actReg_
auto wrap(F iFunc) -> decltype(iFunc())

◆ processOneGlobalAsync()

template<typename T >
void edm::GlobalSchedule::processOneGlobalAsync ( WaitingTaskHolder  holder,
typename T::TransitionInfoType &  transitionInfo,
ServiceToken const &  token,
bool  cleaningUpAfterException = false 
)

Definition at line 133 of file GlobalSchedule.h.

References edm::WorkerManager::allWorkers(), CMS_SA_ALLOW, ALPAKA_ACCELERATOR_NAMESPACE::brokenline::constexpr(), edm::WaitingTaskHolder::doneWaiting(), edm::WaitingTaskHolder::group(), handleException(), edm::InProcess, edm::InRun, edm::StreamID::invalidStreamID(), edm::make_waiting_task(), numberOfConcurrentLumis_, numberOfConcurrentRuns_, processContext_, edm::WorkerManager::resetAll(), groupFilesInBlocks::reverse, edm::WorkerManager::setupResolvers(), unpackBuffers-CaloStage2::token, and workerManagers_.

136  {
137  auto const& principal = transitionInfo.principal();
138 
139  // Caught exception is propagated via WaitingTaskHolder
140  CMS_SA_ALLOW try {
141  //need the doneTask to own the memory
142  auto globalContext = std::make_shared<GlobalContext>(T::makeGlobalContext(principal, processContext_));
143 
144  ServiceWeakToken weakToken = token;
145  auto doneTask = make_waiting_task(
146  [this, iHolder, cleaningUpAfterException, globalContext, weakToken](std::exception_ptr const* iPtr) mutable {
147  std::exception_ptr excpt;
148  if (iPtr) {
149  excpt = *iPtr;
150  // add context information to the exception and print message
151  handleException(globalContext.get(), weakToken, cleaningUpAfterException, excpt);
152  }
153  postScheduleSignal<T>(globalContext.get(), weakToken, excpt);
154  iHolder.doneWaiting(excpt);
155  });
156 
157  //make sure the task doesn't get run until all workers have beens started
158  WaitingTaskHolder holdForLoop(*iHolder.group(), doneTask);
159 
160  CMS_SA_ALLOW try {
161  preScheduleSignal<T>(globalContext.get(), token);
162 
163  unsigned int managerIndex = principal.index();
164  if constexpr (T::branchType_ == InRun) {
165  managerIndex += numberOfConcurrentLumis_;
166  } else if constexpr (T::branchType_ == InProcess) {
168  }
169  WorkerManager& workerManager = workerManagers_[managerIndex];
170  workerManager.resetAll();
171 
172  ParentContext parentContext(globalContext.get());
173  // make sure the ProductResolvers know about their
174  // workers to allow proper data dependency handling
175  workerManager.setupResolvers(transitionInfo.principal());
176 
177  auto& aw = workerManager.allWorkers();
178  for (Worker* worker : boost::adaptors::reverse(aw)) {
179  worker->doWorkAsync<T>(
180  holdForLoop, transitionInfo, token, StreamID::invalidStreamID(), parentContext, globalContext.get());
181  }
182  } catch (...) {
183  holdForLoop.doneWaiting(std::current_exception());
184  }
185  } catch (...) {
186  iHolder.doneWaiting(std::current_exception());
187  }
188  }
#define CMS_SA_ALLOW
std::vector< WorkerManager > workerManagers_
static StreamID invalidStreamID()
Definition: StreamID.h:45
FunctorWaitingTask< F > * make_waiting_task(F f)
Definition: WaitingTask.h:92
unsigned int numberOfConcurrentRuns_
void handleException(GlobalContext const *, ServiceWeakToken const &, bool cleaningUpAfterException, std::exception_ptr &)
ProcessContext const * processContext_
long double T
unsigned int numberOfConcurrentLumis_

◆ replaceModule()

void edm::GlobalSchedule::replaceModule ( maker::ModuleHolder iMod,
std::string const &  iLabel 
)

clone the type of module with label iLabel but configure with iPSet.

Definition at line 166 of file GlobalSchedule.cc.

References newFWLiteAna::found, edm::GlobalContext::kBeginJob, numberOfConcurrentLumis_, numberOfConcurrentProcessBlocks_, numberOfConcurrentRuns_, processContext_, edm::maker::ModuleHolder::replaceModuleFor(), and workerManagers_.

166  {
167  Worker* found = nullptr;
168  unsigned int const jobManagerIndex =
170  unsigned int managerIndex = 0;
171  for (auto& wm : workerManagers_) {
172  for (auto const& worker : wm.allWorkers()) {
173  if (worker->description()->moduleLabel() == iLabel) {
174  found = worker;
175  break;
176  }
177  }
178  if (nullptr == found) {
179  return;
180  }
181 
182  iMod->replaceModuleFor(found);
183  if (managerIndex == jobManagerIndex) {
184  GlobalContext globalContext(GlobalContext::Transition::kBeginJob, processContext_);
185  found->beginJob(globalContext);
186  }
187  ++managerIndex;
188  }
189  }
std::vector< WorkerManager > workerManagers_
unsigned int numberOfConcurrentRuns_
static constexpr unsigned int numberOfConcurrentProcessBlocks_
ProcessContext const * processContext_
unsigned int numberOfConcurrentLumis_

◆ terminate()

bool edm::GlobalSchedule::terminate ( ) const

Return whether each output module has reached its maximum count.

Member Data Documentation

◆ actReg_

std::shared_ptr<ActivityRegistry> edm::GlobalSchedule::actReg_
private

◆ extraWorkers_

std::vector<edm::propagate_const<WorkerPtr> > edm::GlobalSchedule::extraWorkers_
private

Definition at line 120 of file GlobalSchedule.h.

Referenced by GlobalSchedule().

◆ numberOfConcurrentJobs_

constexpr unsigned int edm::GlobalSchedule::numberOfConcurrentJobs_ = 1
staticprivate

Definition at line 129 of file GlobalSchedule.h.

Referenced by GlobalSchedule().

◆ numberOfConcurrentLumis_

unsigned int edm::GlobalSchedule::numberOfConcurrentLumis_
private

Definition at line 126 of file GlobalSchedule.h.

Referenced by beginJob(), endJob(), processOneGlobalAsync(), and replaceModule().

◆ numberOfConcurrentProcessBlocks_

constexpr unsigned int edm::GlobalSchedule::numberOfConcurrentProcessBlocks_ = 1
staticprivate

Definition at line 128 of file GlobalSchedule.h.

Referenced by beginJob(), endJob(), GlobalSchedule(), and replaceModule().

◆ numberOfConcurrentRuns_

unsigned int edm::GlobalSchedule::numberOfConcurrentRuns_
private

Definition at line 127 of file GlobalSchedule.h.

Referenced by beginJob(), endJob(), processOneGlobalAsync(), and replaceModule().

◆ processContext_

ProcessContext const* edm::GlobalSchedule::processContext_
private

Definition at line 121 of file GlobalSchedule.h.

Referenced by beginJob(), endJob(), processOneGlobalAsync(), and replaceModule().

◆ workerManagers_

std::vector<WorkerManager> edm::GlobalSchedule::workerManagers_
private