1
0
mirror of https://github.com/paboyle/Grid.git synced 2026-01-05 09:29:35 +00:00

Hadrons: starting scheduler implementation

This commit is contained in:
2015-12-07 18:26:38 +00:00
parent 20ce7e0270
commit d4db009a58
4 changed files with 142 additions and 33 deletions

View File

@@ -101,6 +101,11 @@ private:
std::set<Edge> edgeSet_;
};
// build depedency matrix from topological sorts
template <typename T>
std::map<T, std::map<T, bool>>
makeDependencyMatrix(const std::vector<std::vector<T>> &topSort);
/******************************************************************************
* template implementation *
******************************************************************************/
@@ -556,6 +561,33 @@ std::vector<std::vector<T>> Graph<T>::allTopoSort(void)
return res;
}
// build depedency matrix from topological sorts ///////////////////////////////
template <typename T>
std::map<T, std::map<T, bool>>
makeDependencyMatrix(const std::vector<std::vector<T>> &topSort)
{
std::map<T, std::map<T, bool>> m;
const std::vector<T> &vList = topSort[0];
for (auto &v1: vList)
for (auto &v2: vList)
{
bool dep = true;
for (auto &t: topSort)
{
auto i1 = std::find(t.begin(), t.end(), v1);
auto i2 = std::find(t.begin(), t.end(), v2);
dep = dep and (i1 - i2 > 0);
if (!dep) break;
}
m[v1][v2] = dep;
}
return m;
}
END_HADRONS_NAMESPACE
#endif // Hadrons_Graph_hpp_