ViennaCL - The Vienna Computing Library  1.6.0
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 >
 
struct  viennacl::scheduler::result_of::op_type_info< op_element_cast< char > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_element_cast< unsigned char > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_element_cast< short > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_element_cast< unsigned short > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_element_cast< int > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_element_cast< unsigned int > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_element_cast< long > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_element_cast< unsigned long > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_element_cast< float > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_element_cast< double > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_element_unary< op_abs > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_element_unary< op_acos > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_element_unary< op_asin > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_element_unary< op_atan > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_element_unary< op_ceil > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_element_unary< op_cos > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_element_unary< op_cosh > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_element_unary< op_exp > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_element_unary< op_fabs > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_element_unary< op_floor > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_element_unary< op_log > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_element_unary< op_log10 > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_element_unary< op_sin > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_element_unary< op_sinh > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_element_unary< op_sqrt > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_element_unary< op_tan > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_element_unary< op_tanh > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_element_binary< op_argmax > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_element_binary< op_argmin > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_element_binary< op_pow > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_element_binary< op_eq > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_element_binary< op_neq > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_element_binary< op_greater > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_element_binary< op_less > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_element_binary< op_geq > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_element_binary< op_leq > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_element_binary< op_fmax > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_element_binary< op_fmin > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_norm_1 >
 
struct  viennacl::scheduler::result_of::op_type_info< op_norm_2 >
 
struct  viennacl::scheduler::result_of::op_type_info< op_norm_inf >
 
struct  viennacl::scheduler::result_of::op_type_info< op_max >
 
struct  viennacl::scheduler::result_of::op_type_info< op_min >
 
struct  viennacl::scheduler::result_of::op_type_info< op_trans >
 
struct  viennacl::scheduler::result_of::op_type_info< op_row >
 
struct  viennacl::scheduler::result_of::op_type_info< op_column >
 
struct  viennacl::scheduler::result_of::op_type_info< op_matrix_diag >
 
struct  viennacl::scheduler::result_of::op_type_info< op_vector_diag >
 
struct  viennacl::scheduler::result_of::op_type_info< op_prod >
 
struct  viennacl::scheduler::result_of::op_type_info< op_mat_mat_prod >
 
struct  viennacl::scheduler::result_of::op_type_info< op_inner_prod >
 
struct  viennacl::scheduler::result_of::op_type_info< op_reduce_vector< OP > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_reduce_rows< OP > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_reduce_columns< OP > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_assign >
 
struct  viennacl::scheduler::result_of::op_type_info< op_inplace_add >
 
struct  viennacl::scheduler::result_of::op_type_info< op_inplace_sub >
 
struct  viennacl::scheduler::result_of::op_type_info< op_add >
 
struct  viennacl::scheduler::result_of::op_type_info< op_sub >
 
struct  viennacl::scheduler::result_of::op_type_info< op_element_binary< op_prod > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_element_binary< op_div > >
 
struct  viennacl::scheduler::result_of::op_type_info< op_mult >
 
struct  viennacl::scheduler::result_of::op_type_info< op_div >
 
struct  viennacl::scheduler::result_of::op_type_info< op_flip_sign >
 
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.