ViennaCL - The Vienna Computing Library  1.7.1
Free open-source GPU-accelerated linear algebra and solver library.
 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.