Contains the scheduling functionality which allows for dynamic kernel generation as well as the fusion of multiple statements into a single kernel.
More...
Namespaces |
namespace | detail |
| Implementation details for the scheduler.
|
namespace | result_of |
| Helper metafunctions used for the scheduler.
|
Data Structures |
class | statement_not_supported_exception |
| Exception for the case the scheduler is unable to deal with the operation. More...
|
struct | lhs_rhs_element |
| A class representing the 'data' for the LHS or RHS operand of the respective node. More...
|
struct | op_element |
| Struct for holding the type family as well as the type of an operation (could be addition, subtraction, norm, etc.) More...
|
struct | statement_node |
| Main datastructure for an node in the statement tree. More...
|
class | statement |
| The main class for representing a statement such as x = inner_prod(y,z); at runtime. More...
|
Enumerations |
enum | operation_node_type_family { OPERATION_INVALID_TYPE_FAMILY = 0,
OPERATION_UNARY_TYPE_FAMILY,
OPERATION_BINARY_TYPE_FAMILY
} |
| Optimization enum for grouping operations into unary or binary operations. Just for optimization of lookups. More...
|
enum | operation_node_type {
OPERATION_INVALID_TYPE = 0,
OPERATION_UNARY_ABS_TYPE,
OPERATION_UNARY_ACOS_TYPE,
OPERATION_UNARY_ASIN_TYPE,
OPERATION_UNARY_ATAN_TYPE,
OPERATION_UNARY_CEIL_TYPE,
OPERATION_UNARY_COS_TYPE,
OPERATION_UNARY_COSH_TYPE,
OPERATION_UNARY_EXP_TYPE,
OPERATION_UNARY_FABS_TYPE,
OPERATION_UNARY_FLOOR_TYPE,
OPERATION_UNARY_LOG_TYPE,
OPERATION_UNARY_LOG10_TYPE,
OPERATION_UNARY_SIN_TYPE,
OPERATION_UNARY_SINH_TYPE,
OPERATION_UNARY_SQRT_TYPE,
OPERATION_UNARY_TAN_TYPE,
OPERATION_UNARY_TANH_TYPE,
OPERATION_UNARY_TRANS_TYPE,
OPERATION_UNARY_NORM_1_TYPE,
OPERATION_UNARY_NORM_2_TYPE,
OPERATION_UNARY_NORM_INF_TYPE,
OPERATION_BINARY_ACCESS_TYPE,
OPERATION_BINARY_ASSIGN_TYPE,
OPERATION_BINARY_INPLACE_ADD_TYPE,
OPERATION_BINARY_INPLACE_SUB_TYPE,
OPERATION_BINARY_ADD_TYPE,
OPERATION_BINARY_SUB_TYPE,
OPERATION_BINARY_MAT_VEC_PROD_TYPE,
OPERATION_BINARY_MAT_MAT_PROD_TYPE,
OPERATION_BINARY_MULT_TYPE,
OPERATION_BINARY_DIV_TYPE,
OPERATION_BINARY_ELEMENT_PROD_TYPE,
OPERATION_BINARY_ELEMENT_DIV_TYPE,
OPERATION_BINARY_INNER_PROD_TYPE
} |
| Enumeration for identifying the possible operations. More...
|
enum | statement_node_type_family {
INVALID_TYPE_FAMILY = 0,
COMPOSITE_OPERATION_FAMILY,
SCALAR_TYPE_FAMILY,
VECTOR_TYPE_FAMILY,
MATRIX_TYPE_FAMILY
} |
| Groups the type of a node in the statement tree. Used for faster dispatching. More...
|
enum | statement_node_subtype {
INVALID_SUBTYPE = 0,
HOST_SCALAR_TYPE,
DEVICE_SCALAR_TYPE,
DENSE_VECTOR_TYPE,
IMPLICIT_VECTOR_TYPE,
DENSE_ROW_MATRIX_TYPE,
DENSE_COL_MATRIX_TYPE,
IMPLICIT_MATRIX_TYPE,
COMPRESSED_MATRIX_TYPE,
COORDINATE_MATRIX_TYPE,
ELL_MATRIX_TYPE,
HYB_MATRIX_TYPE
} |
| Encodes the type of a node in the statement tree. More...
|
enum | statement_node_numeric_type {
INVALID_NUMERIC_TYPE = 0,
CHAR_TYPE,
UCHAR_TYPE,
SHORT_TYPE,
USHORT_TYPE,
INT_TYPE,
UINT_TYPE,
LONG_TYPE,
ULONG_TYPE,
HALF_TYPE,
FLOAT_TYPE,
DOUBLE_TYPE
} |
| Encodes the type of a node in the statement tree. More...
|
Functions |
void | execute (statement const &s) |
void | execute_element_composite (statement const &s, statement_node const &root_node) |
| Deals with x = RHS where RHS is a vector expression.
|
void | execute_matrix_prod (statement const &s, statement_node const &root_node) |
void | execute_scalar_assign_composite (statement const &s, statement_node const &root_node) |
| Deals with x = RHS where RHS is a vector expression.
|
std::ostream & | operator<< (std::ostream &os, viennacl::scheduler::statement_node const &s_node) |
| Print a single statement_node. Non-recursive.
|
std::ostream & | operator<< (std::ostream &os, viennacl::scheduler::statement const &s) |
| Writes a string identifying the scheduler statement to an output stream.
|
Contains the scheduling functionality which allows for dynamic kernel generation as well as the fusion of multiple statements into a single kernel.