angel
mercurial changeset:
|
C-graph type. More...
#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) |
C-graph type.
Definition at line 90 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 |
Type of property edge index for const c_graph_t.
Definition at line 113 of file angel_types.hpp.
typedef boost::property_map<pure_c_graph_t, EdgeType>::const_type angel::c_graph_t::const_etype_t |
Type of property edge isUnit for const c_graph_t.
Definition at line 117 of file angel_types.hpp.
typedef boost::property_map<pure_c_graph_t, boost::edge_weight_t>::const_type angel::c_graph_t::const_ew_t |
Type of property edge label for const c_graph_t.
Definition at line 109 of file angel_types.hpp.
typedef pure_c_graph_t::edge_descriptor angel::c_graph_t::edge_t |
Edge type.
Definition at line 99 of file angel_types.hpp.
typedef boost::graph_traits<pure_c_graph_t>::edge_iterator angel::c_graph_t::ei_t |
Edge iterator type.
Definition at line 103 of file angel_types.hpp.
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 115 of file angel_types.hpp.
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 119 of file angel_types.hpp.
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 111 of file angel_types.hpp.
typedef boost::graph_traits<pure_c_graph_t>::in_edge_iterator angel::c_graph_t::iei_t |
Iterator type of a vertex's incoming edges.
Definition at line 105 of file angel_types.hpp.
typedef boost::graph_traits<pure_c_graph_t>::out_edge_iterator angel::c_graph_t::oei_t |
Iterator type of a vertex's outgoing edges.
Definition at line 107 of file angel_types.hpp.
Type of basic type from BGL.
Definition at line 95 of file angel_types.hpp.
typedef pure_c_graph_t::vertex_descriptor angel::c_graph_t::vertex_t |
Vertex type.
Definition at line 97 of file angel_types.hpp.
typedef boost::graph_traits<pure_c_graph_t>::vertex_iterator angel::c_graph_t::vi_t |
Vertex iterator type.
Definition at line 101 of file angel_types.hpp.
angel::c_graph_t::c_graph_t | ( | ) | [inline] |
Default constructor.
Definition at line 126 of file angel_types.hpp.
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 134 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 151 of file angel_types.hpp.
References dependents.
angel::c_graph_t::c_graph_t | ( | const c_graph_t & | _g | ) | [inline] |
Copy constructor.
Definition at line 162 of file angel_types.hpp.
bool angel::c_graph_t::check | ( | ) | const |
Check consistency of graph.
Definition at line 30 of file angel_types.cpp.
References angel::dependent, angel::independent, angel::vertex_type(), and angel::write_graph().
bool angel::c_graph_t::check_initial | ( | ) | const |
Check consistency of initial graph.
Definition at line 63 of file angel_types.cpp.
References angel::dependent, angel::independent, and angel::vertex_type().
Referenced by angel::read_graph_eliad().
void angel::c_graph_t::clear_edges | ( | ) | [inline] |
Removes edges explicitly.
Definition at line 203 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 88 of file angel_types.cpp.
References angel::reachable_vertices(), and angel::relevant_vertices().
Referenced by angel::block2loop().
Assign operator.
Definition at line 167 of file angel_types.hpp.
References clear_edges(), dependents, next_edge_number, and X.
Change dependent vertices with successor into intermediate vertices.
Definition at line 79 of file angel_types.cpp.
void angel::c_graph_t::swap | ( | c_graph_t & | _g | ) | [inline] |
Swap.
Definition at line 175 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::v | ( | ) | const [inline] |
Number of variables.
Definition at line 183 of file angel_types.hpp.
Referenced by angel::block2loop(), 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().
enum vertex_type_t angel::c_graph_t::vertex_type | ( | vertex_t | ve | ) | const [inline] |
Vertex type of v
.
Definition at line 187 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(), angel::eliminatable_vertices(), angel::front_edge_elimination(), angel::remove_hoisting_vertices(), angel::remove_trivial_edges(), and angel::semi_eliminatable_vertices().
int angel::c_graph_t::x | ( | ) | const [inline] |
Number of independent variables.
Definition at line 180 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] |
Number of independent variables.
Definition at line 181 of file angel_types.hpp.
Referenced by x().
int angel::c_graph_t::y | ( | ) | const [inline] |
Number of dependent variables.
Definition at line 182 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::z | ( | ) | const [inline] |
Number of intermediate vertices.
Definition at line 184 of file angel_types.hpp.
Referenced by angel::operator==().
void block2loop | ( | const c_graph_t & | block, |
int | loops, | ||
c_graph_t & | loop | ||
) | [friend] |
Generates a DAG that represents a loop over the block.
block | The used block |
loops | The number of loops |
loop | The resulting loop DAG |
int read_graph_eliad | ( | const std::string & | file_name, |
c_graph_t & | cg, | ||
bool | retry | ||
) | [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] |
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 |
void unpack_graph | ( | const graph_package_t & | gp, |
c_graph_t & | cg | ||
) | [friend] |
std::vector<vertex_t> angel::c_graph_t::dependents |
set of dependent vertices
Definition at line 123 of file angel_types.hpp.
Referenced by angel::block2loop(), c_graph_t(), 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(), angel::remove_parallel_edges(), angel::stats2block(), swap(), angel::vertex_eliminatable(), vertex_type(), and y().
useful for insertion of new edges
Definition at line 121 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().
int angel::c_graph_t::X [private] |
Definition at line 92 of file angel_types.hpp.
Referenced by angel::block2loop(), operator=(), angel::read_graph_eliad(), angel::read_graph_xaif_booster(), swap(), vertex_type(), and x().