Peano
Loading...
Searching...
No Matches
Task.h
Go to the documentation of this file.
1// This file is part of the Peano project. For conditions of distribution and
2// use, please see the copyright notice at www.peano-framework.org
3#pragma once
4
5#include <functional>
6#include <limits>
7#include <list>
8#include <set>
9#include <string>
10#include <tuple>
11#include <vector>
12
13#include "multicore.h"
14
15
16namespace tarch {
17 namespace multicore {
21 class Task {
22 protected:
23 const int _taskType;
25
26 public:
27 static constexpr int DefaultPriority = 1024;
28 static constexpr int Host = -1;
29 static constexpr int DontFuse = -1;
30
66 Task(int taskType, int priority);
67
68 virtual ~Task() {}
69
70 int getTaskType() const;
71 int getPriority() const;
72
78 void setPriority(int priority);
79
83 virtual bool canFuse() const;
84
89 virtual bool run() = 0;
90
136 virtual bool fuse(const std::list<Task*>& otherTasks, int targetDevice = Host);
137
138 virtual std::string toString() const;
139 };
140
148 public:
149 bool operator()(const Task& lhs, const Task& rhs) const;
150 bool operator()(Task* lhs, Task* rhs) const;
151 };
152
200 private:
205 std::function<bool()> _taskFunctor;
206
207 #if PeanoDebug>0
208 std::string _taskDescription;
209 #endif
210
211 public:
214
222 int taskType,
223 int priority,
224 const std::function<bool()>& taskFunctor
225 #if PeanoDebug>0
226 , const std::string& taskDescription = ""
227 #endif
228 );
229
230 virtual bool run() override;
231
232 virtual std::string toString() const override;
233 };
234
241 class EmptyTask: public Task {
242 public:
243 EmptyTask() = delete;
244
250 EmptyTask(int priority);
251
252 virtual bool run() override;
253
254 virtual std::string toString() const override;
255 };
256
273 private:
278 std::function<bool()>& _taskFunctor;
279
280 public:
283
284 TaskWithoutCopyOfFunctor(int taskType, int priority, std::function<bool()>& taskFunctor);
285
286 virtual bool run() override;
287 };
288 } // namespace multicore
289} // namespace tarch
290
291bool operator<(const tarch::multicore::Task& lhs, const tarch::multicore::Task& rhs);
bool operator<(const tarch::multicore::Task &lhs, const tarch::multicore::Task &rhs)
Definition Task.cpp:19
An empty task.
Definition Task.h:241
virtual bool run() override
Definition Task.cpp:96
virtual std::string toString() const override
Definition Task.cpp:100
Helper class if you wanna administer tasks with in a queue.
Definition Task.h:147
bool operator()(const Task &lhs, const Task &rhs) const
Definition Task.cpp:21
Frequently used implementation for job with a functor.
Definition Task.h:199
virtual std::string toString() const override
Definition Task.cpp:76
std::function< bool()> _taskFunctor
See the outer class description for an explanation why this is an attribute, i.e.
Definition Task.h:205
TaskWithCopyOfFunctor(const TaskWithCopyOfFunctor &)=delete
virtual bool run() override
Definition Task.cpp:72
Frequently used implementation for job with a functor.
Definition Task.h:272
TaskWithoutCopyOfFunctor(const TaskWithoutCopyOfFunctor &)=delete
std::function< bool()> & _taskFunctor
See the outer class description for an explanation why this is an attribute, i.e.
Definition Task.h:278
Abstract super class for a job.
Definition Task.h:21
virtual std::string toString() const
Definition Task.cpp:53
virtual bool canFuse() const
Definition Task.cpp:31
const int _taskType
Definition Task.h:23
int getPriority() const
Definition Task.cpp:33
static constexpr int Host
Definition Task.h:28
virtual bool run()=0
Task(int taskType, int priority)
Construct task.
Definition Task.cpp:25
static constexpr int DontFuse
Definition Task.h:29
static constexpr int DefaultPriority
Definition Task.h:27
int getTaskType() const
Definition Task.cpp:40
virtual ~Task()
Definition Task.h:68
virtual bool fuse(const std::list< Task * > &otherTasks, int targetDevice=Host)
Fuse multiple tasks.
Definition Task.cpp:42
void setPriority(int priority)
Set priority.
Definition Task.cpp:35
Have to include this header, as I need access to the SYCL_EXTERNAL keyword.
Definition accelerator.h:19