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.)
Main namespace in ViennaCL. Holds all the basic types such as vector, matrix, etc. and defines operations upon them.
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.