All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
forwards.h File Reference

Provides the datastructures for dealing with a single statement such as 'x = y + z;'. More...

`#include "viennacl/meta/enable_if.hpp"`
`#include "viennacl/meta/predicate.hpp"`
`#include "viennacl/forwards.h"`
`#include <vector>`

Go to the source code of this file.

## Classes

class | viennacl::scheduler::statement_not_supported_exception
| Exception for the case the scheduler is unable to deal with the operation. More...
struct | viennacl::scheduler::result_of::op_type_info< T >
| Metafunction for querying type informations. More...
struct | viennacl::scheduler::result_of::numeric_type_id< T >
| Helper metafunction for obtaining the runtime type ID for a numerical type. More...
struct | viennacl::scheduler::lhs_rhs_element
| A class representing the 'data' for the LHS or RHS operand of the respective node. More...
struct | viennacl::scheduler::op_element
| Struct for holding the type family as well as the type of an operation (could be addition, subtraction, norm, etc.) More...
struct | viennacl::scheduler::statement_node
| Main datastructure for an node in the statement tree. More...
struct | viennacl::scheduler::result_of::num_nodes< T >
struct | viennacl::scheduler::result_of::num_nodes< vector_expression< LHS, RHS, OP > >
struct | viennacl::scheduler::result_of::num_nodes< const vector_expression< LHS, RHS, OP > >
struct | viennacl::scheduler::result_of::num_nodes< matrix_expression< LHS, RHS, OP > >
struct | viennacl::scheduler::result_of::num_nodes< const matrix_expression< LHS, RHS, OP > >
struct | viennacl::scheduler::result_of::num_nodes< scalar_expression< LHS, RHS, OP > >
struct | viennacl::scheduler::result_of::num_nodes< const scalar_expression< LHS, RHS, OP > >
class | viennacl::scheduler::statement
| The main class for representing a statement such as x = inner_prod(y,z); at runtime. More...

## Namespaces

| viennacl
| Main namespace in ViennaCL. Holds all the basic types such as vector, matrix, etc. and defines operations upon them.
| viennacl::scheduler
| Contains the scheduling functionality which allows for dynamic kernel generation as well as the fusion of multiple statements into a single kernel.
| viennacl::scheduler::result_of
| Helper metafunctions used for the scheduler.
| viennacl::scheduler::detail
| Implementation details for the scheduler.

## Enumerations

enum | viennacl::scheduler::operation_node_type_family { viennacl::scheduler::OPERATION_INVALID_TYPE_FAMILY = 0, viennacl::scheduler::OPERATION_UNARY_TYPE_FAMILY, viennacl::scheduler::OPERATION_BINARY_TYPE_FAMILY, viennacl::scheduler::OPERATION_VECTOR_REDUCTION_TYPE_FAMILY, viennacl::scheduler::OPERATION_ROWS_REDUCTION_TYPE_FAMILY, viennacl::scheduler::OPERATION_COLUMNS_REDUCTION_TYPE_FAMILY }
| Optimization enum for grouping operations into unary or binary operations. Just for optimization of lookups. More...

enum

viennacl::scheduler::operation_node_type {
viennacl::scheduler::OPERATION_INVALID_TYPE = 0, viennacl::scheduler::OPERATION_UNARY_MINUS_TYPE, viennacl::scheduler::OPERATION_UNARY_CAST_CHAR_TYPE, viennacl::scheduler::OPERATION_UNARY_CAST_UCHAR_TYPE,
viennacl::scheduler::OPERATION_UNARY_CAST_SHORT_TYPE, viennacl::scheduler::OPERATION_UNARY_CAST_USHORT_TYPE, viennacl::scheduler::OPERATION_UNARY_CAST_INT_TYPE, viennacl::scheduler::OPERATION_UNARY_CAST_UINT_TYPE,
viennacl::scheduler::OPERATION_UNARY_CAST_LONG_TYPE, viennacl::scheduler::OPERATION_UNARY_CAST_ULONG_TYPE, viennacl::scheduler::OPERATION_UNARY_CAST_HALF_TYPE, viennacl::scheduler::OPERATION_UNARY_CAST_FLOAT_TYPE,
viennacl::scheduler::OPERATION_UNARY_CAST_DOUBLE_TYPE, viennacl::scheduler::OPERATION_UNARY_ABS_TYPE, viennacl::scheduler::OPERATION_UNARY_ACOS_TYPE, viennacl::scheduler::OPERATION_UNARY_ASIN_TYPE,
viennacl::scheduler::OPERATION_UNARY_ATAN_TYPE, viennacl::scheduler::OPERATION_UNARY_CEIL_TYPE, viennacl::scheduler::OPERATION_UNARY_COS_TYPE, viennacl::scheduler::OPERATION_UNARY_COSH_TYPE,
viennacl::scheduler::OPERATION_UNARY_EXP_TYPE, viennacl::scheduler::OPERATION_UNARY_FABS_TYPE, viennacl::scheduler::OPERATION_UNARY_FLOOR_TYPE, viennacl::scheduler::OPERATION_UNARY_LOG_TYPE,
viennacl::scheduler::OPERATION_UNARY_LOG10_TYPE, viennacl::scheduler::OPERATION_UNARY_SIN_TYPE, viennacl::scheduler::OPERATION_UNARY_SINH_TYPE, viennacl::scheduler::OPERATION_UNARY_SQRT_TYPE,
viennacl::scheduler::OPERATION_UNARY_TAN_TYPE, viennacl::scheduler::OPERATION_UNARY_TANH_TYPE, viennacl::scheduler::OPERATION_UNARY_TRANS_TYPE, viennacl::scheduler::OPERATION_UNARY_NORM_1_TYPE,
viennacl::scheduler::OPERATION_UNARY_NORM_2_TYPE, viennacl::scheduler::OPERATION_UNARY_NORM_INF_TYPE, viennacl::scheduler::OPERATION_UNARY_MAX_TYPE, viennacl::scheduler::OPERATION_UNARY_MIN_TYPE,
viennacl::scheduler::OPERATION_BINARY_ACCESS_TYPE, viennacl::scheduler::OPERATION_BINARY_ASSIGN_TYPE, viennacl::scheduler::OPERATION_BINARY_INPLACE_ADD_TYPE, viennacl::scheduler::OPERATION_BINARY_INPLACE_SUB_TYPE,
viennacl::scheduler::OPERATION_BINARY_ADD_TYPE, viennacl::scheduler::OPERATION_BINARY_SUB_TYPE, viennacl::scheduler::OPERATION_BINARY_MULT_TYPE, viennacl::scheduler::OPERATION_BINARY_DIV_TYPE,
viennacl::scheduler::OPERATION_BINARY_ELEMENT_ARGFMAX_TYPE, viennacl::scheduler::OPERATION_BINARY_ELEMENT_ARGFMIN_TYPE, viennacl::scheduler::OPERATION_BINARY_ELEMENT_ARGMAX_TYPE, viennacl::scheduler::OPERATION_BINARY_ELEMENT_ARGMIN_TYPE,
viennacl::scheduler::OPERATION_BINARY_ELEMENT_PROD_TYPE, viennacl::scheduler::OPERATION_BINARY_ELEMENT_DIV_TYPE, viennacl::scheduler::OPERATION_BINARY_ELEMENT_EQ_TYPE, viennacl::scheduler::OPERATION_BINARY_ELEMENT_NEQ_TYPE,
viennacl::scheduler::OPERATION_BINARY_ELEMENT_GREATER_TYPE, viennacl::scheduler::OPERATION_BINARY_ELEMENT_GEQ_TYPE, viennacl::scheduler::OPERATION_BINARY_ELEMENT_LESS_TYPE, viennacl::scheduler::OPERATION_BINARY_ELEMENT_LEQ_TYPE,
viennacl::scheduler::OPERATION_BINARY_ELEMENT_POW_TYPE, viennacl::scheduler::OPERATION_BINARY_ELEMENT_FMAX_TYPE, viennacl::scheduler::OPERATION_BINARY_ELEMENT_FMIN_TYPE, viennacl::scheduler::OPERATION_BINARY_ELEMENT_MAX_TYPE,
viennacl::scheduler::OPERATION_BINARY_ELEMENT_MIN_TYPE, viennacl::scheduler::OPERATION_BINARY_MATRIX_DIAG_TYPE, viennacl::scheduler::OPERATION_BINARY_VECTOR_DIAG_TYPE, viennacl::scheduler::OPERATION_BINARY_MATRIX_ROW_TYPE,
viennacl::scheduler::OPERATION_BINARY_MATRIX_COLUMN_TYPE, viennacl::scheduler::OPERATION_BINARY_MAT_VEC_PROD_TYPE, viennacl::scheduler::OPERATION_BINARY_MAT_MAT_PROD_TYPE, viennacl::scheduler::OPERATION_BINARY_INNER_PROD_TYPE
}

| Enumeration for identifying the possible operations. More...
enum | viennacl::scheduler::statement_node_type_family { viennacl::scheduler::INVALID_TYPE_FAMILY = 0, viennacl::scheduler::COMPOSITE_OPERATION_FAMILY, viennacl::scheduler::SCALAR_TYPE_FAMILY, viennacl::scheduler::VECTOR_TYPE_FAMILY, viennacl::scheduler::MATRIX_TYPE_FAMILY }
| Groups the type of a node in the statement tree. Used for faster dispatching. More...

enum

viennacl::scheduler::statement_node_subtype {
viennacl::scheduler::INVALID_SUBTYPE = 0, viennacl::scheduler::HOST_SCALAR_TYPE, viennacl::scheduler::DEVICE_SCALAR_TYPE, viennacl::scheduler::DENSE_VECTOR_TYPE,
viennacl::scheduler::IMPLICIT_VECTOR_TYPE, viennacl::scheduler::DENSE_MATRIX_TYPE, viennacl::scheduler::IMPLICIT_MATRIX_TYPE, viennacl::scheduler::COMPRESSED_MATRIX_TYPE,
viennacl::scheduler::COORDINATE_MATRIX_TYPE, viennacl::scheduler::ELL_MATRIX_TYPE, viennacl::scheduler::HYB_MATRIX_TYPE
}

| Encodes the type of a node in the statement tree. More...

enum

viennacl::scheduler::statement_node_numeric_type {
viennacl::scheduler::INVALID_NUMERIC_TYPE = 0, viennacl::scheduler::CHAR_TYPE, viennacl::scheduler::UCHAR_TYPE, viennacl::scheduler::SHORT_TYPE,
viennacl::scheduler::USHORT_TYPE, viennacl::scheduler::INT_TYPE, viennacl::scheduler::UINT_TYPE, viennacl::scheduler::LONG_TYPE,
viennacl::scheduler::ULONG_TYPE, viennacl::scheduler::HALF_TYPE, viennacl::scheduler::FLOAT_TYPE, viennacl::scheduler::DOUBLE_TYPE
}

| Encodes the type of a node in the statement tree. More...

## Functions

void | viennacl::scheduler::detail::execute_composite (statement const &s, statement_node const &root_node)
| Deals with x = RHS where RHS is an expression and x is either a scalar, a vector, or a matrix. More...

## Detailed Description

Provides the datastructures for dealing with a single statement such as 'x = y + z;'.

Definition in file forwards.h.