|
| typedef std::unordered_map< CPS::Task::Ptr, std::deque< CPS::Task::Ptr > > | Edges |
| |
| typedef std::chrono::steady_clock::duration | TaskTime |
| | Time measurement for the task execution.
|
| |
|
| | Scheduler (CPS::Logger::Level logLevel=CPS::Logger::Level::off) |
| |
| virtual void | createSchedule (const CPS::Task::List &tasks, const Edges &inEdges, const Edges &outEdges)=0 |
| | Creates the schedule for the given dependency graph.
|
| |
| virtual void | step (Real time, Int timeStepCount)=0 |
| | Performs a single simulation step.
|
| |
| virtual void | stop () |
| | Called on simulation stop to reliably clean up e.g. running helper threads.
|
| |
| void | resolveDeps (CPS::Task::List &tasks, Edges &inEdges, Edges &outEdges) |
| |
| TaskTime | getAveragedMeasurement (CPS::Task::Ptr task) |
| |
|
| static void | levelSchedule (const CPS::Task::List &tasks, const Edges &inEdges, const Edges &outEdges, std::vector< CPS::Task::List > &levels) |
| |
Definition at line 27 of file Scheduler.h.
◆ Edges
Edges describe the dependency from the first task to a list of other tasks or the other way around.
Definition at line 31 of file Scheduler.h.
◆ TaskTime
Time measurement for the task execution.
Definition at line 33 of file Scheduler.h.
◆ Scheduler()
| DPsim::Scheduler::Scheduler |
( |
CPS::Logger::Level | logLevel = CPS::Logger::Level::off | ) |
|
|
inline |
◆ ~Scheduler()
| virtual DPsim::Scheduler::~Scheduler |
( |
| ) |
|
|
inlinevirtual |
◆ createSchedule()
| virtual void DPsim::Scheduler::createSchedule |
( |
const CPS::Task::List & | tasks, |
|
|
const Edges & | inEdges, |
|
|
const Edges & | outEdges ) |
|
pure virtual |
◆ getAveragedMeasurement() [1/2]
◆ getAveragedMeasurement() [2/2]
| TaskTime DPsim::Scheduler::getAveragedMeasurement |
( |
CPS::Task::Ptr | task | ) |
|
|
inline |
◆ initMeasurements()
| void Scheduler::initMeasurements |
( |
const CPS::Task::List & | tasks | ) |
|
|
protected |
◆ levelSchedule()
| void Scheduler::levelSchedule |
( |
const CPS::Task::List & | tasks, |
|
|
const Edges & | inEdges, |
|
|
const Edges & | outEdges, |
|
|
std::vector< CPS::Task::List > & | levels ) |
|
staticprotected |
Separate topologically sorted list of tasks into levels which can be executed in parallel
Definition at line 190 of file Scheduler.cpp.
◆ readMeasurements()
| void Scheduler::readMeasurements |
( |
CPS::String | filename, |
|
|
std::unordered_map< CPS::String, TaskTime::rep > & | measurements ) |
|
protected |
Read measurement data from file to use it for the scheduling.
Definition at line 45 of file Scheduler.cpp.
◆ resolveDeps()
| void Scheduler::resolveDeps |
( |
CPS::Task::List & | tasks, |
|
|
Edges & | inEdges, |
|
|
Edges & | outEdges ) |
Helper function that resolves the task-attribute dependencies to task-task dependencies and inserts a root task
CHECK: Having external be the nullptr can lead to segfaults rather quickly. Maybe make it a special kind of attribute
Definition at line 78 of file Scheduler.cpp.
◆ step()
| virtual void DPsim::Scheduler::step |
( |
Real | time, |
|
|
Int | timeStepCount ) |
|
pure virtual |
◆ stop()
| virtual void DPsim::Scheduler::stop |
( |
| ) |
|
|
inlinevirtual |
◆ topologicalSort()
| void Scheduler::topologicalSort |
( |
const CPS::Task::List & | tasks, |
|
|
const Edges & | inEdges, |
|
|
const Edges & | outEdges, |
|
|
CPS::Task::List & | sortedTasks ) |
|
protected |
Simple topological sort, filtering out tasks that do not need to be executed.
Definition at line 120 of file Scheduler.cpp.
◆ updateMeasurement()
Not thread-safe for multiple calls with same task, but should only be called once for each task in each step anyway
Definition at line 28 of file Scheduler.cpp.
◆ writeMeasurements()
| void Scheduler::writeMeasurements |
( |
CPS::String | filename | ) |
|
|
protected |
Write measurement data to file.
Definition at line 32 of file Scheduler.cpp.
◆ external
◆ mLogLevel
| CPS::Logger::Level DPsim::Scheduler::mLogLevel |
|
protected |
◆ mRoot
| CPS::Task::Ptr DPsim::Scheduler::mRoot |
|
protected |
◆ mSLog
| CPS::Logger::Log DPsim::Scheduler::mSLog |
|
protected |
The documentation for this class was generated from the following files: