1 #ifndef VIENNACL_SCHEDULER_IO_HPP
2 #define VIENNACL_SCHEDULER_IO_HPP
39 #define VIENNACL_TRANSLATE_OP_TO_STRING(NAME) case NAME: return #NAME;
98 return "OPERATION_INVALID_TYPE";
105 #undef VIENNACL_TRANSLATE_OP_TO_STRING
107 #define VIENNACL_TRANSLATE_ELEMENT_TO_STRING(NAME, ELEMENT) case NAME: ss << "(" << element.ELEMENT << ")"; return #NAME + ss.str();
112 std::stringstream ss;
117 return "COMPOSITE_OPERATION_FAMILY" + ss.str();
123 ss <<
", HOST_SCALAR_TYPE ";
142 ss <<
", DEVICE_SCALAR_TYPE";
162 ss <<
", DENSE_VECTOR_TYPE ";
184 ss <<
", DENSE_MATRIX_TYPE ";
207 return "INVALID_TYPE_FAMILY";
213 #undef VIENNACL_TRANSLATE_ELEMENT_TO_STRING
236 StatementNodeContainer
const & nodes = s.
array();
237 StatementNode
const & current_node = nodes[node_index];
242 os <<
"Node " << node_index <<
": " << current_node << std::endl;
245 print_node(os, s, current_node.lhs.node_index, indent+1);
248 print_node(os, s, current_node.rhs.node_index, indent+1);
statement_node_subtype subtype
This file provides the forward declarations for the main types used within ViennaCL.
statement_node_type_family type_family
A class representing the 'data' for the LHS or RHS operand of the respective node.
container_type const & array() const
#define VIENNACL_TRANSLATE_OP_TO_STRING(NAME)
operation_node_type_family type_family
Struct for holding the type family as well as the type of an operation (could be addition, subtraction, norm, etc.)
std::vector< value_type > container_type
std::string to_string(viennacl::scheduler::op_element op_elem)
Helper routine for converting the operation enums to string.
#define VIENNACL_TRANSLATE_ELEMENT_TO_STRING(NAME, ELEMENT)
statement_node_numeric_type numeric_type
Provides the datastructures for dealing with a single statement such as 'x = y + z;'.
void print_node(std::ostream &os, viennacl::scheduler::statement const &s, vcl_size_t node_index, vcl_size_t indent=0)
Recursive worker routine for printing a whole statement.
std::ostream & operator<<(std::ostream &os, viennacl::scheduler::statement_node const &s_node)
Print a single statement_node. Non-recursive.
The main class for representing a statement such as x = inner_prod(y,z); at runtime.
Main datastructure for an node in the statement tree.
Exception for the case the scheduler is unable to deal with the operation.