/home/runner/work/HiCR/HiCR/include/hicr/frontends/tasking/worker.hpp Source File
|
HiCR
|
worker.hpp
Go to the documentation of this file.
147 };
183 __INLINE__ void setCallbackMap(workerCallbackMap_t *callbackMap) { _callbackMap = callbackMap; }
208 if (_processingUnits.empty()) HICR_THROW_LOGIC("Attempting to initialize worker without any assigned resources");
211 if (prevState != state_t::uninitialized && prevState != state_t::terminated) HICR_THROW_RUNTIME("Attempting to initialize already initialized worker");
229 if (prevState != state_t::ready) HICR_THROW_RUNTIME("Attempting to start worker that is not in the 'initialized' state");
234 // Creating new execution unit (the processing unit must support an execution unit of 'host' type)
235 auto executionUnit = _executionStateComputeManager->createExecutionUnit([](void *worker) { static_cast<HiCR::tasking::Worker *>(worker)->mainLoop(); });
284 if (prevState != state_t::running && prevState != state_t::suspending) HICR_THROW_RUNTIME("Attempting to stop worker that is not in a terminate-able state");
295 if (prevState != state_t::terminating && prevState != state_t::running && prevState != state_t::suspended && prevState != state_t::suspending && prevState != state_t::resuming)
296 HICR_THROW_RUNTIME("Attempting to wait for a worker that has not yet started or has already terminated");
310 __INLINE__ void addProcessingUnit(std::unique_ptr<HiCR::ProcessingUnit> pu) { _processingUnits.push_back(std::move(pu)); }
317 __INLINE__ std::vector<std::unique_ptr<HiCR::ProcessingUnit>> &getProcessingUnits() { return _processingUnits; }
324 __INLINE__ void setSuspendInterval(size_t suspendIntervalMs) { _suspendIntervalMs = suspendIntervalMs; }
401 auto executionState = _executionStateComputeManager->createExecutionState(_currentTask->getExecutionUnit(), _currentTask);
421 for (size_t i = 1; i < _processingUnits.size(); i++) _processingUnitComputeManager->suspend(_processingUnits[i]);
430 for (size_t i = 1; i < _processingUnits.size(); i++) _processingUnitComputeManager->resume(_processingUnits[i]);
443 for (size_t i = 1; i < _processingUnits.size(); i++) _processingUnitComputeManager->terminate(_processingUnits[i]);
Definition computeManager.hpp:48
__INLINE__ void initialize(std::unique_ptr< HiCR::ProcessingUnit > &processingUnit)
Definition computeManager.hpp:93
__INLINE__ void suspend(std::unique_ptr< HiCR::ProcessingUnit > &processingUnit)
Definition computeManager.hpp:135
__INLINE__ void start(std::unique_ptr< HiCR::ProcessingUnit > &processingUnit, std::unique_ptr< HiCR::ExecutionState > &executionState)
Definition computeManager.hpp:115
virtual std::unique_ptr< HiCR::ExecutionState > createExecutionState(std::shared_ptr< HiCR::ExecutionUnit > executionUnit, void *const argument=nullptr) const =0
__INLINE__ void terminate(std::unique_ptr< HiCR::ProcessingUnit > &processingUnit)
Definition computeManager.hpp:175
virtual __INLINE__ std::shared_ptr< HiCR::ExecutionUnit > createExecutionUnit(const replicableFc_t &function)
Definition computeManager.hpp:63
__INLINE__ void await(std::unique_ptr< HiCR::ProcessingUnit > &processingUnit)
Definition computeManager.hpp:189
__INLINE__ void resume(std::unique_ptr< HiCR::ProcessingUnit > &processingUnit)
Definition computeManager.hpp:155
Definition callbackMap.hpp:40
Definition task.hpp:57
__INLINE__ std::shared_ptr< HiCR::ExecutionUnit > getExecutionUnit() const
Definition task.hpp:152
__INLINE__ void initialize(std::unique_ptr< HiCR::ExecutionState > executionState)
Definition task.hpp:159
__INLINE__ const HiCR::ExecutionState::state_t getState()
Definition task.hpp:131
Definition worker.hpp:64
HiCR::tasking::CallbackMap< Worker *, callback_t > workerCallbackMap_t
Definition worker.hpp:101
__INLINE__ void setSuspendInterval(size_t suspendIntervalMs)
Definition worker.hpp:324
__INLINE__ std::vector< std::unique_ptr< HiCR::ProcessingUnit > > & getProcessingUnits()
Definition worker.hpp:317
Worker(HiCR::ComputeManager *executionStateComputeManager, HiCR::ComputeManager *processingUnitComputeManager, pullFunction_t pullFunction, workerCallbackMap_t *callbackMap=nullptr)
Definition worker.hpp:157
__INLINE__ HiCR::tasking::Task * getCurrentTask()
Definition worker.hpp:197
__INLINE__ workerCallbackMap_t * getCallbackMap()
Definition worker.hpp:190
__INLINE__ void addProcessingUnit(std::unique_ptr< HiCR::ProcessingUnit > pu)
Definition worker.hpp:310
virtual __INLINE__ bool checkResumeConditions()
Definition worker.hpp:333
__INLINE__ void setCallbackMap(workerCallbackMap_t *callbackMap)
Definition worker.hpp:183
Provides a definition for the abstract compute manager class.
Provides a definition for a HiCR ProcessingUnit class.
Provides a failure model and corresponding exception classes.
This file implements the HiCR task class.
constexpr size_t _MILISECONDS_PER_SECOND
Definition worker.hpp:49
std::function< HiCR::tasking::Task *()> pullFunction_t
Definition worker.hpp:54
constexpr size_t _DEFAULT_SUSPEND_INTERVAL_MS
Definition worker.hpp:44
Generated by