CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Types | Public Member Functions | Private Member Functions | Private Attributes
edm::UnscheduledCallProducer Class Reference

#include <UnscheduledCallProducer.h>

Public Types

using const_iterator = worker_container::const_iterator
 
using worker_container = std::vector< Worker * >
 

Public Member Functions

void addWorker (Worker *aWorker)
 
UnscheduledAuxiliary const & auxiliary () const
 
const_iterator begin () const
 
const_iterator end () const
 
void removeWorker (Worker const *worker)
 
template<typename T >
void runAccumulatorsAsync (WaitingTaskHolder task, typename T::TransitionInfoType const &info, ServiceToken const &token, StreamID streamID, ParentContext const &parentContext, typename T::Context const *context)
 
template<typename T , typename U >
void runNowAsync (WaitingTaskHolder task, typename T::TransitionInfoType const &info, ServiceToken const &token, StreamID streamID, typename T::Context const *topContext, U const *context) const
 
void setEventTransitionInfo (EventTransitionInfo const &info)
 
 UnscheduledCallProducer (ActivityRegistry &iReg)
 

Private Member Functions

template<typename T , typename ID >
void addContextToException (cms::Exception &ex, Worker const *worker, ID const &id) const
 

Private Attributes

worker_container accumulatorWorkers_
 
UnscheduledAuxiliary aux_
 
worker_container unscheduledWorkers_
 

Detailed Description

Definition at line 38 of file UnscheduledCallProducer.h.

Member Typedef Documentation

using edm::UnscheduledCallProducer::const_iterator = worker_container::const_iterator

Definition at line 41 of file UnscheduledCallProducer.h.

Definition at line 40 of file UnscheduledCallProducer.h.

Constructor & Destructor Documentation

edm::UnscheduledCallProducer::UnscheduledCallProducer ( ActivityRegistry iReg)
inline

Definition at line 43 of file UnscheduledCallProducer.h.

References aux_, edm::signalslot::Signal< T >::connect(), edm::UnscheduledAuxiliary::postModuleDelayedGetSignal_, edm::ActivityRegistry::postModuleEventDelayedGetSignal_, edm::UnscheduledAuxiliary::preModuleDelayedGetSignal_, and edm::ActivityRegistry::preModuleEventDelayedGetSignal_.

44  aux_.preModuleDelayedGetSignal_.connect(std::cref(iReg.preModuleEventDelayedGetSignal_));
45  aux_.postModuleDelayedGetSignal_.connect(std::cref(iReg.postModuleEventDelayedGetSignal_));
46  }
signalslot::Signal< void(StreamContext const &, ModuleCallingContext const &)> preModuleDelayedGetSignal_
signalslot::Signal< void(StreamContext const &, ModuleCallingContext const &)> postModuleDelayedGetSignal_
void connect(U iFunc)
Definition: Signal.h:64

Member Function Documentation

template<typename T , typename ID >
void edm::UnscheduledCallProducer::addContextToException ( cms::Exception ex,
Worker const *  worker,
ID const &  id 
) const
inlineprivate

Definition at line 105 of file UnscheduledCallProducer.h.

References cms::Exception::addContext(), and gpuClustering::id.

105  {
106  std::ostringstream ost;
107  ost << "Processing " << T::transitionName() << " " << id;
108  ex.addContext(ost.str());
109  }
uint16_t *__restrict__ id
void addContext(std::string const &context)
Definition: Exception.cc:165
void edm::UnscheduledCallProducer::addWorker ( Worker aWorker)
inline

Definition at line 47 of file UnscheduledCallProducer.h.

References accumulatorWorkers_, cms::cuda::assert(), edm::Worker::hasAccumulator(), and unscheduledWorkers_.

Referenced by edm::WorkerManager::addToUnscheduledWorkers().

47  {
48  assert(nullptr != aWorker);
49  unscheduledWorkers_.push_back(aWorker);
50  if (aWorker->hasAccumulator()) {
51  accumulatorWorkers_.push_back(aWorker);
52  }
53  }
assert(be >=bs)
UnscheduledAuxiliary const& edm::UnscheduledCallProducer::auxiliary ( ) const
inline

Definition at line 64 of file UnscheduledCallProducer.h.

References aux_.

Referenced by edm::WorkerManager::setupResolvers().

64 { return aux_; }
const_iterator edm::UnscheduledCallProducer::begin ( void  ) const
inline

Definition at line 66 of file UnscheduledCallProducer.h.

References unscheduledWorkers_.

66 { return unscheduledWorkers_.begin(); }
const_iterator edm::UnscheduledCallProducer::end ( void  ) const
inline

Definition at line 67 of file UnscheduledCallProducer.h.

References unscheduledWorkers_.

Referenced by Types.LuminosityBlockRange::cppID(), and Types.EventRange::cppID().

67 { return unscheduledWorkers_.end(); }
void edm::UnscheduledCallProducer::removeWorker ( Worker const *  worker)
inline
template<typename T >
void edm::UnscheduledCallProducer::runAccumulatorsAsync ( WaitingTaskHolder  task,
typename T::TransitionInfoType const &  info,
ServiceToken const &  token,
StreamID  streamID,
ParentContext const &  parentContext,
typename T::Context const *  context 
)
inline

Definition at line 92 of file UnscheduledCallProducer.h.

References accumulatorWorkers_, visDQMUpload::context, info(), and unpackBuffers-CaloStage2::token.

Referenced by edm::WorkerManager::processAccumulatorsAsync().

97  {
98  for (auto worker : accumulatorWorkers_) {
99  worker->doWorkAsync<T>(task, info, token, streamID, parentContext, context);
100  }
101  }
static const TGPicture * info(bool iBackgroundIsBlack)
long double T
template<typename T , typename U >
void edm::UnscheduledCallProducer::runNowAsync ( WaitingTaskHolder  task,
typename T::TransitionInfoType const &  info,
ServiceToken const &  token,
StreamID  streamID,
typename T::Context const *  topContext,
U const *  context 
) const
inline

Definition at line 70 of file UnscheduledCallProducer.h.

References info(), unpackBuffers-CaloStage2::token, and unscheduledWorkers_.

Referenced by edm::WorkerManager::processOneOccurrenceAsync().

75  {
76  //do nothing for event since we will run when requested
77  if (!T::isEvent_) {
78  for (auto worker : unscheduledWorkers_) {
79  ParentContext parentContext(context);
80 
81  // We do not need to run prefetching here because this only handles
82  // stream transitions for runs and lumis. There are no products put
83  // into the runs or lumis in stream transitions, so there can be
84  // no data dependencies which require prefetching. Prefetching is
85  // needed for global transitions, but they are run elsewhere.
86  worker->doWorkNoPrefetchingAsync<T>(task, info, token, streamID, parentContext, topContext);
87  }
88  }
89  }
static const TGPicture * info(bool iBackgroundIsBlack)
long double T
void edm::UnscheduledCallProducer::setEventTransitionInfo ( EventTransitionInfo const &  info)
inline

Definition at line 62 of file UnscheduledCallProducer.h.

References aux_, and edm::UnscheduledAuxiliary::setEventTransitionInfo().

Referenced by edm::WorkerManager::setupOnDemandSystem().

static const TGPicture * info(bool iBackgroundIsBlack)
void setEventTransitionInfo(EventTransitionInfo const &info)

Member Data Documentation

worker_container edm::UnscheduledCallProducer::accumulatorWorkers_
private

Definition at line 111 of file UnscheduledCallProducer.h.

Referenced by addWorker(), removeWorker(), and runAccumulatorsAsync().

UnscheduledAuxiliary edm::UnscheduledCallProducer::aux_
private
worker_container edm::UnscheduledCallProducer::unscheduledWorkers_
private

Definition at line 110 of file UnscheduledCallProducer.h.

Referenced by addWorker(), begin(), end(), removeWorker(), and runNowAsync().