21 for (
auto p : products ) rank += p->getConsumers().size();
38 myfile.
open(
"InputExecutionPlan.graphml", std::ios::in );
45 boost::dynamic_properties dp;
46 dp.property(
"name",
get( &AlgoTraceProps::m_name, execPlan ) );
47 dp.property(
"index",
get( &AlgoTraceProps::m_index, execPlan ) );
48 dp.property(
"dataRank",
get( &AlgoTraceProps::m_rank, execPlan ) );
49 dp.property(
"runtime",
get( &AlgoTraceProps::m_runtime, execPlan ) );
51 boost::read_graphml( myfile, execPlan, dp );
53 typedef boost::graph_traits<precedence::PrecTrace>::vertex_iterator itV;
56 for ( vp = boost::vertices( execPlan ); vp.first != vp.second; ++vp.first ) {
58 auto index =
get( &AlgoTraceProps::m_name, execPlan );
59 if ( index[v] == node.
name() ) {
74 typename boost::graph_traits<precedence::PrecTrace>::adjacency_iterator itVB;
75 typename boost::graph_traits<precedence::PrecTrace>::adjacency_iterator itVE;
77 for ( boost::tie( itVB, itVE ) = adjacent_vertices( vertex,
graph ); itVB != itVE; ++itVB ) {
87 myfile.
open(
"InputExecutionPlan.graphml", std::ios::in );
93 boost::dynamic_properties dp;
94 dp.property(
"name",
get( &AlgoTraceProps::m_name, execPlan ) );
95 dp.property(
"index",
get( &AlgoTraceProps::m_index, execPlan ) );
96 dp.property(
"dataRank",
get( &AlgoTraceProps::m_rank, execPlan ) );
97 dp.property(
"runtime",
get( &AlgoTraceProps::m_runtime, execPlan ) );
99 boost::read_graphml( myfile, execPlan, dp );
101 typedef boost::graph_traits<precedence::PrecTrace>::vertex_iterator itV;
104 for ( vp = boost::vertices( execPlan ); vp.first != vp.second; ++vp.first ) {
106 auto index =
get( &AlgoTraceProps::m_name, execPlan );
107 if ( index[v] == node.
name() ) {
108 auto index_runtime =
get( &AlgoTraceProps::m_runtime, execPlan );
109 float rank = index_runtime[v];
121 myfile.
open(
"Eccentricity.graphml", std::ios::in );
125 boost::dynamic_properties dp;
131 boost::read_graphml( myfile, execPlan, dp );
133 typedef boost::graph_traits<precedence::PrecTrace>::vertex_iterator itV;
136 for ( vp = boost::vertices( execPlan ); vp.first != vp.second; ++vp.first ) {
139 if ( index[v] == node.
name() ) {
141 float rank = index_eccentricity[v];
171 if ( products.empty() )
174 for (
auto p : products )
175 for (
auto algoNode : p->getConsumers() )
recursiveVisit( *algoNode );
boost::graph_traits< PrecTrace >::vertex_descriptor AlgoTraceVertex
void setRank(float &rank)
Set Algorithm rank.
bool visit(AlgorithmNode &) override
void recursiveVisit(AlgorithmNode &)
Depth-first node parser to calculate node eccentricity (only within the data realm of the precedence ...
auto get(const Handle &handle, const Algo &, const EventContext &) -> decltype(details::deref(handle.get()))
bool visit(AlgorithmNode &) override
bool visit(AlgorithmNode &) override
void runThroughAdjacents(boost::graph_traits< precedence::PrecTrace >::vertex_descriptor, precedence::PrecTrace)
boost::adjacency_list< boost::vecS, boost::vecS, boost::bidirectionalS, AlgoTraceProps > PrecTrace
const std::vector< DataNode * > & getOutputDataNodes() const
Get all supplier nodes.
bool visit(AlgorithmNode &) override
bool visit(AlgorithmNode &) override
const std::string & name() const
Get node name.