#include <angel_types.hpp>
Public Types | |
typedef pure_c_graph_t | pure_graph_t |
Type of basic type from BGL. | |
typedef pure_c_graph_t::vertex_descriptor | vertex_t |
Vertex type. | |
typedef pure_c_graph_t::edge_descriptor | edge_t |
Edge type. | |
typedef boost::graph_traits < pure_c_graph_t > ::vertex_iterator | vi_t |
Vertex iterator type. | |
typedef boost::graph_traits < pure_c_graph_t > ::edge_iterator | ei_t |
Edge iterator type. | |
typedef boost::graph_traits < pure_c_graph_t > ::in_edge_iterator | iei_t |
Iterator type of a vertex's incoming edges. | |
typedef boost::graph_traits < pure_c_graph_t > ::out_edge_iterator | oei_t |
Iterator type of a vertex's outgoing edges. | |
typedef boost::property_map < pure_c_graph_t, boost::edge_weight_t > ::const_type | const_ew_t |
Type of property edge label for const c_graph_t. | |
typedef boost::property_map < pure_c_graph_t, boost::edge_weight_t > ::type | ew_t |
Type of property edge label for non-const c_graph_t. | |
typedef boost::property_map < pure_c_graph_t, boost::edge_index_t > ::const_type | const_eind_t |
Type of property edge index for const c_graph_t. | |
typedef boost::property_map < pure_c_graph_t, boost::edge_index_t > ::type | eind_t |
Type of property edge index for non-const c_graph_t. | |
typedef boost::property_map < pure_c_graph_t, EdgeType > ::const_type | const_etype_t |
Type of property edge isUnit for const c_graph_t. | |
typedef boost::property_map < pure_c_graph_t, EdgeType >::type | etype_t |
Type of property edge isUnit for non-const c_graph_t. | |
Public Member Functions | |
c_graph_t () | |
Default constructor. | |
c_graph_t (int V_, int X_, const std::vector< vertex_t > &deps) | |
Constructor with vertex specification. | |
c_graph_t (int X_, int Z_, int Y_) | |
Constructor with vertex specification. | |
c_graph_t (const c_graph_t &_g) | |
Copy constructor. | |
c_graph_t & | operator= (const c_graph_t &_g) |
Assign operator. | |
void | swap (c_graph_t &_g) |
Swap. | |
int | x () const |
Number of independent variables. | |
void | x (int x) |
Number of independent variables. | |
int | y () const |
Number of dependent variables. | |
int | v () const |
Number of variables. | |
int | z () const |
Number of intermediate vertices. | |
enum vertex_type_t | vertex_type (vertex_t ve) const |
Vertex type of v . | |
bool | check () const |
Check consistency of graph. | |
bool | check_initial () const |
Check consistency of initial graph. | |
void | remove_dependents_with_successors () |
Change dependent vertices with successor into intermediate vertices. | |
void | clear_edges () |
Removes edges explicitly. | |
void | clear_graph () |
Remove all vertices that are not connected to dependent and inpedendent vertices. | |
Public Attributes | |
int | next_edge_number |
useful for insertion of new edges | |
std::vector< vertex_t > | dependents |
set of dependent vertices | |
Private Attributes | |
int | X |
Friends | |
int | read_graph_eliad (const std::string &file_name, c_graph_t &cg, bool retry) |
void | stats2block (int inputs, int outputs, const std::vector< c_graph_t > &stats, c_graph_t &block) |
Build a block from a list of statements. | |
void | block2loop (const c_graph_t &block, int loops, c_graph_t &loop) |
Generates a DAG that represents a loop over the block. | |
void | unpack_graph (const graph_package_t &gp, c_graph_t &cg) |
void | read_graph_xaif_booster (const xaifBoosterCrossCountryInterface::LinearizedComputationalGraph &xg, c_graph_t &cg, std::vector< const xaifBoosterCrossCountryInterface::LinearizedComputationalGraphVertex * > &av, std::vector< edge_address_t > &ev) |
Definition at line 79 of file angel_types.hpp.
typedef pure_c_graph_t::vertex_descriptor angel::c_graph_t::vertex_t |
typedef pure_c_graph_t::edge_descriptor angel::c_graph_t::edge_t |
typedef boost::graph_traits<pure_c_graph_t>::vertex_iterator angel::c_graph_t::vi_t |
typedef boost::graph_traits<pure_c_graph_t>::edge_iterator angel::c_graph_t::ei_t |
typedef boost::graph_traits<pure_c_graph_t>::in_edge_iterator angel::c_graph_t::iei_t |
typedef boost::graph_traits<pure_c_graph_t>::out_edge_iterator angel::c_graph_t::oei_t |
typedef boost::property_map<pure_c_graph_t, boost::edge_weight_t>::const_type angel::c_graph_t::const_ew_t |
typedef boost::property_map<pure_c_graph_t, boost::edge_weight_t>::type angel::c_graph_t::ew_t |
Type of property edge label for non-const c_graph_t.
Definition at line 100 of file angel_types.hpp.
typedef boost::property_map<pure_c_graph_t, boost::edge_index_t>::const_type angel::c_graph_t::const_eind_t |
typedef boost::property_map<pure_c_graph_t, boost::edge_index_t>::type angel::c_graph_t::eind_t |
Type of property edge index for non-const c_graph_t.
Definition at line 104 of file angel_types.hpp.
typedef boost::property_map<pure_c_graph_t, EdgeType>::const_type angel::c_graph_t::const_etype_t |
typedef boost::property_map<pure_c_graph_t, EdgeType>::type angel::c_graph_t::etype_t |
Type of property edge isUnit for non-const c_graph_t.
Definition at line 108 of file angel_types.hpp.
angel::c_graph_t::c_graph_t | ( | ) | [inline] |
angel::c_graph_t::c_graph_t | ( | int | V_, | |
int | X_, | |||
const std::vector< vertex_t > & | deps | |||
) | [inline] |
Constructor with vertex specification.
V_ | number of all vertices | |
X_ | number of independent vertices | |
deps | set of dependent vertices |
Definition at line 123 of file angel_types.hpp.
References dependents, and THROW_EXCEPT_MACRO.
angel::c_graph_t::c_graph_t | ( | int | X_, | |
int | Z_, | |||
int | Y_ | |||
) | [inline] |
Constructor with vertex specification.
X_ | number of independent vertices | |
Z_ | number of intermediated vertices | |
Y_ | number of dependent vertices, will be located at the end |
Definition at line 140 of file angel_types.hpp.
References dependents.
angel::c_graph_t::c_graph_t | ( | const c_graph_t & | _g | ) | [inline] |
Assign operator.
Definition at line 156 of file angel_types.hpp.
References clear_edges(), dependents, next_edge_number, and X.
void angel::c_graph_t::swap | ( | c_graph_t & | _g | ) | [inline] |
Swap.
Definition at line 164 of file angel_types.hpp.
References dependents, next_edge_number, and X.
Referenced by angel::permutate_vertices(), angel::random_statement(), angel::read_graph_eliad(), angel::remove_parallel_edges(), and angel::stats2block().
int angel::c_graph_t::x | ( | ) | const [inline] |
Number of independent variables.
Definition at line 169 of file angel_types.hpp.
References X.
Referenced by angel::block2loop(), angel::fme_obj(), angel::in_out_path_lengths(), angel::independent_vertices_to_front(), angel::line_graph_t::line_graph_t(), angel::number_independent_vertices(), angel::operator==(), angel::ourLCG_to_angelLCG(), angel::permutate_vertices(), angel::remove_parallel_edges(), angel::rme_obj(), angel::stats2block(), and z().
void angel::c_graph_t::x | ( | int | x | ) | [inline] |
int angel::c_graph_t::y | ( | ) | const [inline] |
Number of dependent variables.
Definition at line 171 of file angel_types.hpp.
References dependents.
Referenced by angel::block2loop(), angel::line_graph_t::line_graph_t(), angel::operator==(), and z().
int angel::c_graph_t::v | ( | ) | const [inline] |
Number of variables.
Definition at line 172 of file angel_types.hpp.
Referenced by angel::block2loop(), clear_graph(), angel::independent_vertices_to_front(), angel::minimal_markowitz_degree(), angel::operator==(), angel::permutate_vertices(), angel::remove_parallel_edges(), angel::stats2block(), angel::take_over_successors(), vertex_type(), and z().
int angel::c_graph_t::z | ( | ) | const [inline] |
Number of intermediate vertices.
Definition at line 173 of file angel_types.hpp.
Referenced by angel::operator==().
enum vertex_type_t angel::c_graph_t::vertex_type | ( | vertex_t | ve | ) | const [inline] |
Vertex type of v
.
Definition at line 176 of file angel_types.hpp.
References angel::dead_vertex, angel::dependent, dependents, angel::independent, angel::intermediate, angel::undefined_vertex, v(), and X.
Referenced by angel::back_edge_elimination(), check(), check_initial(), angel::eliminatable_vertices(), angel::front_edge_elimination(), angel::remove_hoisting_vertices(), angel::remove_trivial_edges(), and angel::semi_eliminatable_vertices().
bool angel::c_graph_t::check | ( | ) | const |
Check consistency of graph.
Definition at line 22 of file angel_types.cpp.
References angel::dependent, angel::independent, vertex_type(), and angel::write_graph().
Referenced by check_initial().
bool angel::c_graph_t::check_initial | ( | ) | const |
Check consistency of initial graph.
Definition at line 55 of file angel_types.cpp.
References check(), angel::dependent, angel::independent, and vertex_type().
Referenced by angel::read_graph_eliad().
void angel::c_graph_t::remove_dependents_with_successors | ( | ) |
Change dependent vertices with successor into intermediate vertices.
Definition at line 71 of file angel_types.cpp.
References dependents.
void angel::c_graph_t::clear_edges | ( | ) | [inline] |
Removes edges explicitly.
Definition at line 192 of file angel_types.hpp.
Referenced by operator=().
void angel::c_graph_t::clear_graph | ( | ) |
Remove all vertices that are not connected to dependent and inpedendent vertices.
Definition at line 80 of file angel_types.cpp.
References dependents, angel::reachable_vertices(), angel::relevant_vertices(), v(), and X.
Referenced by angel::block2loop().
int read_graph_eliad | ( | const std::string & | file_name, | |
c_graph_t & | cg, | |||
bool | retry | |||
) | [friend] |
void stats2block | ( | int | inputs, | |
int | outputs, | |||
const std::vector< c_graph_t > & | stats, | |||
c_graph_t & | block | |||
) | [friend] |
Build a block from a list of statements.
inputs | The number of the block's inputs | |
outputs | The number of the block's outputs | |
stats | List of statements | |
block | The resulting block |
Generates a DAG that represents a loop over the block.
block | The used block | |
loops | The number of loops | |
loop | The resulting loop DAG |
void unpack_graph | ( | const graph_package_t & | gp, | |
c_graph_t & | cg | |||
) | [friend] |
void read_graph_xaif_booster | ( | const xaifBoosterCrossCountryInterface::LinearizedComputationalGraph & | xg, | |
c_graph_t & | cg, | |||
std::vector< const xaifBoosterCrossCountryInterface::LinearizedComputationalGraphVertex * > & | av, | |||
std::vector< edge_address_t > & | ev | |||
) | [friend] |
int angel::c_graph_t::X [private] |
Definition at line 81 of file angel_types.hpp.
Referenced by angel::block2loop(), clear_graph(), operator=(), angel::read_graph_eliad(), angel::read_graph_xaif_booster(), swap(), vertex_type(), and x().
useful for insertion of new edges
Definition at line 110 of file angel_types.hpp.
Referenced by angel::back_edge_elimination(), angel::block2loop(), angel::front_edge_elimination(), angel::multiply_edge_pair_directly(), operator=(), angel::pair_elim(), angel::pairElim_noJAE(), angel::postroute_edge_directly(), angel::postrouteEdge_noJAE(), angel::preroute_edge_directly(), angel::prerouteEdge_noJAE(), and swap().
std::vector<vertex_t> angel::c_graph_t::dependents |
set of dependent vertices
Definition at line 112 of file angel_types.hpp.
Referenced by angel::block2loop(), c_graph_t(), clear_graph(), xaifBoosterCrossCountryInterface::compute_elimination_sequence_lsa_vertex(), angel::line_graph_t::line_graph_t(), angel::number_dependent_vertices(), operator=(), angel::operator==(), angel::ourLCG_to_angelLCG(), angel::permutate_vertices(), angel::read_graph_eliad(), angel::read_graph_xaif_booster(), remove_dependents_with_successors(), angel::remove_parallel_edges(), angel::stats2block(), swap(), angel::vertex_eliminatable(), vertex_type(), and y().