Peano
Loading...
Searching...
No Matches
TaskNumber.h
Go to the documentation of this file.
1// This file is part of the SWIFT2 project. For conditions of distribution and
2// use, please see the copyright notice at www.peano-framework.org
3#pragma once
4
5
6#include <functional>
7#include <set>
8#include <string>
9#include <vector>
10
14
15
16namespace swift2 {
29 struct TaskNumber {
30 public:
37
50 TaskNumber(int number0, TaskAssociation number1);
51
55 static const TaskNumber NoOutDependencies;
56
57 std::string toString() const;
58
60
64 bool operator<(const TaskNumber& rhs) const;
65 bool equals(const TaskNumber& rhs) const;
66
67 private:
70 };
71
72 std::string toString(const std::set<TaskNumber>& numbers);
73 std::string toString(const TaskNumber numbers[TwoPowerD]);
74
80 int flatten(const TaskNumber& numbers);
81 std::set<int> flatten(const std::set<TaskNumber>& numbers);
82
95 template <typename Vertex>
96 std::set<::swift2::TaskNumber> getVertexNumbersOfParentVertices(
100 );
101
102 template <typename Vertex>
103 std::set<::swift2::TaskNumber> getVertexNumbersOfParentVertices(
107 int dimension
108 );
109
123 using PendingDependencies = std::set<std::pair<::swift2::TaskNumber, ::swift2::TaskNumber>>;
124
132 std::set<::swift2::TaskNumber> getDependenciesForTask(
133 const ::swift2::TaskNumber& task, PendingDependencies& pendingDependencies
134 );
135} // namespace swift2
136
137
138
139bool operator==(const swift2::TaskNumber& lhs, const swift2::TaskNumber& rhs);
140bool operator!=(const swift2::TaskNumber& lhs, const swift2::TaskNumber& rhs);
141
142
143#include "TaskNumber.cpph"
#define TwoPowerD
Definition Globals.h:19
bool operator!=(const swift2::TaskNumber &lhs, const swift2::TaskNumber &rhs)
bool operator==(const swift2::TaskNumber &lhs, const swift2::TaskNumber &rhs)
This file is part of the SWIFT 2 project.
std::set< std::pair<::swift2::TaskNumber, ::swift2::TaskNumber > > PendingDependencies
Pending dependencies container.
Definition TaskNumber.h:123
int flatten(const TaskNumber &numbers)
Alias around method flatten().
std::string toString(const std::set< TaskNumber > &numbers)
std::set<::swift2::TaskNumber > getVertexNumbersOfParentVertices(const peano4::datamanagement::VertexMarker &marker, peano4::datamanagement::VertexEnumerator< Vertex > coarseGridVertices, ::swift2::TaskNumber::TaskAssociation taskAssociation)
Get numbers of parent vertices.
std::set<::swift2::TaskNumber > getDependenciesForTask(const ::swift2::TaskNumber &task, PendingDependencies &pendingDependencies)
Extract set of dependencies for given task.
Vertex enumerator within array.
Vertex marker to provide information about selected vertex.
Task Number.
Definition TaskNumber.h:29
TaskAssociation _taskAssociation
Definition TaskNumber.h:69
static const TaskNumber NoOutDependencies
Defines the max indices for each entry in TaskNumber.
Definition TaskNumber.h:9
tarch::multicore::TaskNumber flatten() const
TaskNumber(int number0, TaskAssociation number1)
Construct new task number.
std::string toString() const
bool equals(const TaskNumber &rhs) const
bool operator<(const TaskNumber &rhs) const
Total order on object.
Simple vector class.
Definition Vector.h:134