ViennaCL - The Vienna Computing Library  1.4.2
Namespaces | Data Structures | Typedefs | Functions | Variables
viennacl::generator Namespace Reference

Provides an OpenCL kernel generator. More...

Namespaces

namespace  math
 

Namespace holding unary math functions for use within the kernel generator.


namespace  result_of
 

Contains all the meta-functions used within the OpenCL kernel generator.


namespace  tree_utils
 

Contains helper routines for manipulating expression trees.


namespace  typelist_utils
 

Contains helper routines for manipulating typelists.


Data Structures

class  custom_operation
 A class for making a custom operation. More...
struct  elementwise_modifier_impl
 Implementation of the elementwise_modifier. More...
struct  elementwise_modifier
struct  get_head
struct  get_head< typelist< Head, Tail > >
struct  transform_inner_prod
 Helper for register_kernels. Transform inner_product into phase 1 of inner_product implementation. More...
struct  transform_inner_prod< compound_node< LHS, inner_prod_type, RHS > >
struct  register_kernels< typelist< Head, Tail >, Res, CurrentIndex >
struct  register_kernels< NullType, Res, CurrentIndex >
struct  program_infos
 functor to get the information necessary to create a program More...
struct  inner_prod_impl_t
struct  make_expression_code
 Inline code for an expression from scalars. More...
struct  make_expression_code< symbolic_constant< VAL > >
struct  make_expression_code< inner_prod_impl_t< T > >
struct  make_expression_code< cpu_symbolic_scalar< ID, SCALARTYPE > >
struct  make_expression_code< gpu_symbolic_scalar< ID, SCALARTYPE > >
struct  make_expression_code< compound_node< LHS, inner_prod_type, RHS > >
struct  make_expression_code< NullType >
struct  make_expression_code< elementwise_modifier< T > >
struct  make_expression_code< compound_node< LHS, OP, RHS > >
struct  dot_product_impl
struct  dot_product_impl< LHS, RHS, 8 >
struct  dot_product_impl< LHS, RHS, 16 >
struct  dot_product
struct  dot_product< LHS, symbolic_constant< 1 > >
struct  make_expression_code< compound_node< LHS, prod_type, RHS > >
struct  make_code< NullType >
struct  make_code< ArithmeticToken< EXPR > >
struct  make_code< InProdToken< T, 1 > >
struct  make_code< InProdToken< T, 0 > >
struct  make_code< MatVecToken< T, OP, Assigned > >
struct  make_code< MatMatToken< T, OP, Assigned > >
struct  typelist
struct  is_typelist
struct  is_typelist< typelist< Head, Tail > >
struct  NullType
struct  Int2Type
struct  get_type_if
struct  get_type_if< TypeTrue, TypeFalse, false >
struct  are_same_type
struct  are_same_type< T, T >
struct  enable_if_c
struct  enable_if_c< false, T >
struct  enable_if
struct  disable_if_c
struct  disable_if_c< true, T >
struct  disable_if
struct  print_align1_type< int >
struct  print_align1_type< unsigned int >
struct  print_align1_type< long >
struct  print_align1_type< unsigned long >
struct  print_align1_type< float >
struct  print_align1_type< double >
struct  print_aligned_type
struct  print_aligned_type< T, 1 >
struct  print_type
struct  print_type< T *, ALIGNMENT >
struct  assign_type
struct  add_type
struct  inplace_add_type
struct  sub_type
struct  inplace_sub_type
struct  scal_mul_type
struct  inplace_scal_mul_type
struct  scal_div_type
struct  inplace_scal_div_type
struct  inner_prod_type
struct  prod_type
struct  elementwise_prod_type
struct  elementwise_div_type
struct  make_inplace
struct  make_inplace< add_type >
struct  make_inplace< sub_type >
struct  make_inplace< scal_mul_type >
struct  make_inplace< scal_div_type >
struct  CHECK_ALIGNMENT_COMPATIBILITY
struct  CHECK_ALIGNMENT_COMPATIBILITY< LHS, symbolic_constant< val > >
struct  CHECK_ALIGNMENT_COMPATIBILITY< symbolic_constant< val >, RHS >
class  symbolic_constant
 Symbolic constant. Used for elementwise operations. More...
class  cpu_symbolic_scalar
 Symbolic scalar type. Will be passed by value. More...
class  gpu_symbolic_scalar
 Symbolic scalar type. Will be passed by pointer. More...
class  symbolic_vector
 Symbolic vector type. More...
class  symbolic_matrix
 Symbolic matrix type. More...
class  compound_node
 Binary node class for storing expression trees. More...
class  compound_node< LHS_, inner_prod_type, RHS_ >
class  compound_node< LHS_, prod_type, RHS_ >
 Specialization for the matrix-vector product. More...
struct  Token
 Base structure for representing Token. More...
struct  MatMatToken
 Base structure for representing Matrix-Matrix Product token. More...
struct  MatVecToken
 Base structure for representing Matrix-Vector Product token. More...
struct  InProdToken
 Base structure for representing Inner Product token. More...
struct  ArithmeticToken
struct  get_operations_lhs
struct  get_operations_lhs< T, typename viennacl::enable_if< result_of::is_assignment_compound< T >::value >::type >
struct  get_operations_lhs< typelist< Head, Tail > >
struct  body_code
 Functor to generates the body code of a kernel from a typelist of expressions. More...
struct  repeater_impl
struct  get_operations_from_expressions< typelist< Head, Tail > >
struct  get_operations_from_expressions< typelist< repeater_impl< Bound, Operations >, Tail > >
struct  get_operations_from_expressions< NullType >

Typedefs

typedef std::multimap
< std::string, std::pair
< unsigned int,
viennacl::tools::shared_ptr
< result_of::runtime_wrapper > > > 
runtime_wrappers_t

Functions

void enqueue_custom_op (viennacl::generator::custom_operation &op, viennacl::ocl::command_queue const &)
template<class T >
std::string to_string (T const t)
std::string to_string (viennacl::row_major const)
std::string to_string (viennacl::column_major const)
template<class T >
enable_if_c
< result_of::is_symbolic_expression
< T >::value, compound_node
< NullType, sub_type, T >
>::type 
operator- (T const &)
 Unary minus operator.
template<class LHS_TYPE , class RHS_TYPE >
enable_if_c
< result_of::is_scalar_expression
< LHS_TYPE >::value||result_of::is_scalar_expression
< RHS_TYPE >::value,
compound_node< LHS_TYPE,
scal_mul_type, RHS_TYPE >
>::type 
operator* (LHS_TYPE const &, RHS_TYPE const &)
 Scalar multiplication operator.
template<long VAL, class RHS_TYPE >
compound_node
< symbolic_constant< VAL >
, elementwise_prod_type,
RHS_TYPE > 
operator* (symbolic_constant< VAL > const &, RHS_TYPE const &)
 Elementwise Scalar multiplication operators with a constant.
template<class LHS_TYPE , long VAL>
compound_node< LHS_TYPE,elementwise_prod_type,
symbolic_constant< VAL > > 
operator* (LHS_TYPE const &, symbolic_constant< VAL > const &)
template<class LHS_TYPE , class RHS_TYPE >
enable_if_c
< result_of::is_scalar_expression
< RHS_TYPE >::value,
compound_node< LHS_TYPE,
scal_div_type, RHS_TYPE >
>::type 
operator/ (LHS_TYPE const &, RHS_TYPE const &)
 Scalar division operator.
template<long VAL, class RHS_TYPE >
compound_node
< symbolic_constant< VAL >
, elementwise_div_type,
RHS_TYPE > 
operator/ (symbolic_constant< VAL > const &, RHS_TYPE const &)
 Elementwise Scalar division operators with a constant.
template<class LHS_TYPE , long VAL>
compound_node< LHS_TYPE,elementwise_div_type,
symbolic_constant< VAL > > 
operator/ (LHS_TYPE const &, symbolic_constant< VAL > const &)
template<class LHS_TYPE , class RHS_TYPE >
enable_if
< result_of::is_same_expression_type
< LHS_TYPE, RHS_TYPE >
, compound_node< LHS_TYPE,
add_type, RHS_TYPE > >::type 
operator+ (LHS_TYPE const &, RHS_TYPE const &)
 Addition operator on 2 elements of the same type.
template<class LHS_TYPE , class RHS_TYPE >
enable_if
< result_of::is_same_expression_type
< LHS_TYPE, RHS_TYPE >
, compound_node< LHS_TYPE,
sub_type, RHS_TYPE > >::type 
operator- (LHS_TYPE const &, RHS_TYPE const &)
 Substraction operator on 2 elements of the same type.
template<class T >
viennacl::enable_if
< result_of::is_matrix_expression
< T >::value, compound_node< T,
prod_type, symbolic_constant
< 1 > > >::type 
sum (T t, symbolic_constant< 1 >)
template<class T >
viennacl::enable_if
< result_of::is_vector_expression
< T >::value, compound_node< T,
inner_prod_type,
symbolic_constant
< 1 > > >::type 
sum (T t)
template<class Bound , class T , class T2 >
repeater_impl< Bound,
VIENNACL_TYPELIST2(T, T2) > 
repeat (Bound, T, T2)
template<class Bound , class T , class T2 , class T3 >
repeater_impl< Bound,
VIENNACL_TYPELIST3(T, T2, T3) > 
repeat (Bound, T, T2, T3)
template<class Bound , class T , class T2 , class T3 , class T4 >
repeater_impl< Bound,
VIENNACL_TYPELIST4(T, T2, T3,
T4) > 
repeat (Bound, T, T2, T3, T4)
template<class Bound , class T , class T2 , class T3 , class T4 , class T5 >
repeater_impl< Bound,
VIENNACL_TYPELIST5(T, T2, T3,
T4, T5) > 
repeat (Bound, T, T2, T3, T4, T5)

Variables

symbolic_vector< 0, float, 1 > symv_0_f
symbolic_vector< 1, float, 1 > symv_1_f
symbolic_vector< 2, float, 1 > symv_2_f
symbolic_vector< 3, float, 1 > symv_3_f
symbolic_vector< 4, float, 1 > symv_4_f
symbolic_vector< 5, float, 1 > symv_5_f
symbolic_vector< 6, float, 1 > symv_6_f
symbolic_vector< 0, float, 4 > symv_0_f_4
symbolic_vector< 1, float, 4 > symv_1_f_4
symbolic_vector< 2, float, 4 > symv_2_f_4
symbolic_vector< 3, float, 4 > symv_3_f_4
symbolic_vector< 4, float, 4 > symv_4_f_4
symbolic_vector< 5, float, 4 > symv_5_f_4
symbolic_vector< 6, float, 4 > symv_6_f_4
symbolic_vector< 0, float, 16 > symv_0_f_16
symbolic_vector< 1, float, 16 > symv_1_f_16
symbolic_vector< 2, float, 16 > symv_2_f_16
symbolic_vector< 3, float, 16 > symv_3_f_16
symbolic_vector< 4, float, 16 > symv_4_f_16
symbolic_vector< 5, float, 16 > symv_5_f_16
symbolic_vector< 6, float, 16 > symv_6_f_16
symbolic_vector< 0, double, 1 > symv_0_d
symbolic_vector< 1, double, 1 > symv_1_d
symbolic_vector< 2, double, 1 > symv_2_d
symbolic_vector< 3, double, 1 > symv_3_d
symbolic_vector< 4, double, 1 > symv_4_d
symbolic_vector< 5, double, 1 > symv_5_d
symbolic_vector< 6, double, 1 > symv_6_d
symbolic_vector< 0, double, 4 > symv_0_d_4
symbolic_vector< 1, double, 4 > symv_1_d_4
symbolic_vector< 2, double, 4 > symv_2_d_4
symbolic_vector< 3, double, 4 > symv_3_d_4
symbolic_vector< 4, double, 4 > symv_4_d_4
symbolic_vector< 5, double, 4 > symv_5_d_4
symbolic_vector< 6, double, 4 > symv_6_d_4
symbolic_vector< 0, double, 16 > symv_0_d_16
symbolic_vector< 1, double, 16 > symv_1_d_16
symbolic_vector< 2, double, 16 > symv_2_d_16
symbolic_vector< 3, double, 16 > symv_3_d_16
symbolic_vector< 4, double, 16 > symv_4_d_16
symbolic_vector< 5, double, 16 > symv_5_d_16
symbolic_vector< 6, double, 16 > symv_6_d_16
symbolic_matrix< 0, float,
viennacl::row_major, 1 > 
symm_0_f
symbolic_matrix< 1, float,
viennacl::row_major, 1 > 
symm_1_f
symbolic_matrix< 2, float,
viennacl::row_major, 1 > 
symm_2_f
symbolic_matrix< 3, float,
viennacl::row_major, 1 > 
symm_3_f
symbolic_matrix< 4, float,
viennacl::row_major, 1 > 
symm_4_f
symbolic_matrix< 5, float,
viennacl::row_major, 1 > 
symm_5_f
symbolic_matrix< 6, float,
viennacl::row_major, 1 > 
symm_6_f
symbolic_matrix< 0, float,
viennacl::row_major, 16 > 
symm_0_f_r_16
symbolic_matrix< 1, float,
viennacl::row_major, 16 > 
symm_1_f_r_16
symbolic_matrix< 2, float,
viennacl::row_major, 16 > 
symm_2_f_r_16
symbolic_matrix< 3, float,
viennacl::row_major, 16 > 
symm_3_f_r_16
symbolic_matrix< 4, float,
viennacl::row_major, 16 > 
symm_4_f_r_16
symbolic_matrix< 5, float,
viennacl::row_major, 16 > 
symm_5_f_r_16
symbolic_matrix< 6, float,
viennacl::row_major, 16 > 
symm_6_f_r_16
symbolic_matrix< 0, double,
viennacl::row_major, 1 > 
symm_0_d
symbolic_matrix< 1, double,
viennacl::row_major, 1 > 
symm_1_d
symbolic_matrix< 2, double,
viennacl::row_major, 1 > 
symm_2_d
symbolic_matrix< 3, double,
viennacl::row_major, 1 > 
symm_3_d
symbolic_matrix< 4, double,
viennacl::row_major, 1 > 
symm_4_d
symbolic_matrix< 5, double,
viennacl::row_major, 1 > 
symm_5_d
symbolic_matrix< 6, double,
viennacl::row_major, 1 > 
symm_6_d
symbolic_matrix< 0, double,
viennacl::row_major, 16 > 
symm_0_d_r_16
symbolic_matrix< 1, double,
viennacl::row_major, 16 > 
symm_1_d_r_16
symbolic_matrix< 2, double,
viennacl::row_major, 16 > 
symm_2_d_r_16
symbolic_matrix< 3, double,
viennacl::row_major, 16 > 
symm_3_d_r_16
symbolic_matrix< 4, double,
viennacl::row_major, 16 > 
symm_4_d_r_16
symbolic_matrix< 5, double,
viennacl::row_major, 16 > 
symm_5_d_r_16
symbolic_matrix< 6, double,
viennacl::row_major, 16 > 
symm_6_d_r_16
symbolic_matrix< 0, float,
viennacl::column_major, 1 > 
symm_0_f_c
symbolic_matrix< 1, float,
viennacl::column_major, 1 > 
symm_1_f_c
symbolic_matrix< 2, float,
viennacl::column_major, 1 > 
symm_2_f_c
symbolic_matrix< 3, float,
viennacl::column_major, 1 > 
symm_3_f_c
symbolic_matrix< 4, float,
viennacl::column_major, 1 > 
symm_4_f_c
symbolic_matrix< 5, float,
viennacl::column_major, 1 > 
symm_5_f_c
symbolic_matrix< 6, float,
viennacl::column_major, 1 > 
symm_6_f_c
symbolic_matrix< 0, float,
viennacl::column_major, 16 > 
symm_0_f_c_16
symbolic_matrix< 1, float,
viennacl::column_major, 16 > 
symm_1_f_c_16
symbolic_matrix< 2, float,
viennacl::column_major, 16 > 
symm_2_f_c_16
symbolic_matrix< 3, float,
viennacl::column_major, 16 > 
symm_3_f_c_16
symbolic_matrix< 4, float,
viennacl::column_major, 16 > 
symm_4_f_c_16
symbolic_matrix< 5, float,
viennacl::column_major, 16 > 
symm_5_f_c_16
symbolic_matrix< 6, float,
viennacl::column_major, 16 > 
symm_6_f_c_16
symbolic_matrix< 0, double,
viennacl::column_major, 1 > 
symm_0_d_c
symbolic_matrix< 1, double,
viennacl::column_major, 1 > 
symm_1_d_c
symbolic_matrix< 2, double,
viennacl::column_major, 1 > 
symm_2_d_c
symbolic_matrix< 3, double,
viennacl::column_major, 1 > 
symm_3_d_c
symbolic_matrix< 4, double,
viennacl::column_major, 1 > 
symm_4_d_c
symbolic_matrix< 5, double,
viennacl::column_major, 1 > 
symm_5_d_c
symbolic_matrix< 6, double,
viennacl::column_major, 1 > 
symm_6_d_c
symbolic_matrix< 0, double,
viennacl::column_major, 16 > 
symm_0_d_c_16
symbolic_matrix< 1, double,
viennacl::column_major, 16 > 
symm_1_d_c_16
symbolic_matrix< 2, double,
viennacl::column_major, 16 > 
symm_2_d_c_16
symbolic_matrix< 3, double,
viennacl::column_major, 16 > 
symm_3_d_c_16
symbolic_matrix< 4, double,
viennacl::column_major, 16 > 
symm_4_d_c_16
symbolic_matrix< 5, double,
viennacl::column_major, 16 > 
symm_5_d_c_16
symbolic_matrix< 6, double,
viennacl::column_major, 16 > 
symm_6_d_c_16
cpu_symbolic_scalar< 0, float > c_syms_0_f
cpu_symbolic_scalar< 1, float > c_syms_1_f
cpu_symbolic_scalar< 2, float > c_syms_2_f
cpu_symbolic_scalar< 3, float > c_syms_3_f
cpu_symbolic_scalar< 4, float > c_syms_4_f
cpu_symbolic_scalar< 5, float > c_syms_5_f
cpu_symbolic_scalar< 6, float > c_syms_6_f
cpu_symbolic_scalar< 0, double > c_syms_0_d
cpu_symbolic_scalar< 1, double > c_syms_1_d
cpu_symbolic_scalar< 2, double > c_syms_2_d
cpu_symbolic_scalar< 3, double > c_syms_3_d
cpu_symbolic_scalar< 4, double > c_syms_4_d
cpu_symbolic_scalar< 5, double > c_syms_5_d
cpu_symbolic_scalar< 6, double > c_syms_6_d
gpu_symbolic_scalar< 0, float > syms_0_f
gpu_symbolic_scalar< 1, float > syms_1_f
gpu_symbolic_scalar< 2, float > syms_2_f
gpu_symbolic_scalar< 3, float > syms_3_f
gpu_symbolic_scalar< 4, float > syms_4_f
gpu_symbolic_scalar< 5, float > syms_5_f
gpu_symbolic_scalar< 6, float > syms_6_f
gpu_symbolic_scalar< 0, double > syms_0_d
gpu_symbolic_scalar< 1, double > syms_1_d
gpu_symbolic_scalar< 2, double > syms_2_d
gpu_symbolic_scalar< 3, double > syms_3_d
gpu_symbolic_scalar< 4, double > syms_4_d
gpu_symbolic_scalar< 5, double > syms_5_d
gpu_symbolic_scalar< 6, double > syms_6_d
enable_if
< result_of::is_same_expression_type
< LHS, RHS >, compound_node
< LHS, inner_prod_type, RHS >
>::type 
inner_prod (LHS, RHS)
 Inner product operator.
compound_node< LHS, prod_type,
RHS > 
prod (LHS, RHS)
 Product operator.
compound_node< LHS,
elementwise_prod_type, RHS > 
element_prod (LHS, RHS)
compound_node< LHS,
elementwise_div_type, RHS > 
element_div (LHS, RHS)
repeater_impl< Bound,
VIENNACL_TYPELIST1(T) > 
repeat (Bound, T)

Detailed Description

Provides an OpenCL kernel generator.


Typedef Documentation

typedef std::multimap<std::string, std::pair<unsigned int,viennacl::tools::shared_ptr<result_of::runtime_wrapper> > > runtime_wrappers_t

Function Documentation

enable_if_c<result_of::is_scalar_expression<LHS_TYPE>::value || result_of::is_scalar_expression<RHS_TYPE>::value, compound_node<LHS_TYPE,scal_mul_type,RHS_TYPE> >::type viennacl::generator::operator* ( LHS_TYPE const &  ,
RHS_TYPE const &   
)

Scalar multiplication operator.

compound_node<symbolic_constant<VAL>,elementwise_prod_type,RHS_TYPE> viennacl::generator::operator* ( symbolic_constant< VAL > const &  ,
RHS_TYPE const &   
)

Elementwise Scalar multiplication operators with a constant.

compound_node<LHS_TYPE ,elementwise_prod_type,symbolic_constant<VAL> > viennacl::generator::operator* ( LHS_TYPE const &  ,
symbolic_constant< VAL > const &   
)
enable_if< result_of::is_same_expression_type<LHS_TYPE, RHS_TYPE>, compound_node<LHS_TYPE, add_type, RHS_TYPE> >::type viennacl::generator::operator+ ( LHS_TYPE const &  ,
RHS_TYPE const &   
)

Addition operator on 2 elements of the same type.

enable_if_c<result_of::is_symbolic_expression<T>::value,compound_node<NullType,sub_type,T> >::type viennacl::generator::operator- ( T const &  )

Unary minus operator.

enable_if< result_of::is_same_expression_type<LHS_TYPE, RHS_TYPE>, compound_node<LHS_TYPE, sub_type, RHS_TYPE> >::type viennacl::generator::operator- ( LHS_TYPE const &  ,
RHS_TYPE const &   
)

Substraction operator on 2 elements of the same type.

enable_if_c< result_of::is_scalar_expression<RHS_TYPE>::value, compound_node<LHS_TYPE,scal_div_type,RHS_TYPE> >::type viennacl::generator::operator/ ( LHS_TYPE const &  ,
RHS_TYPE const &   
)

Scalar division operator.

compound_node<symbolic_constant<VAL>,elementwise_div_type,RHS_TYPE> viennacl::generator::operator/ ( symbolic_constant< VAL > const &  ,
RHS_TYPE const &   
)

Elementwise Scalar division operators with a constant.

compound_node<LHS_TYPE ,elementwise_div_type,symbolic_constant<VAL> > viennacl::generator::operator/ ( LHS_TYPE const &  ,
symbolic_constant< VAL > const &   
)
repeater_impl<Bound, VIENNACL_TYPELIST2(T,T2) > viennacl::generator::repeat ( Bound  ,
,
T2   
)
repeater_impl<Bound, VIENNACL_TYPELIST3(T,T2,T3) > viennacl::generator::repeat ( Bound  ,
,
T2  ,
T3   
)
repeater_impl<Bound, VIENNACL_TYPELIST4(T,T2, T3, T4) > viennacl::generator::repeat ( Bound  ,
,
T2  ,
T3  ,
T4   
)
repeater_impl<Bound, VIENNACL_TYPELIST5(T,T2, T3, T4, T5) > viennacl::generator::repeat ( Bound  ,
,
T2  ,
T3  ,
T4  ,
T5   
)
std::string viennacl::generator::to_string ( T const  t) [inline]
std::string viennacl::generator::to_string ( viennacl::row_major  const) [inline]
std::string viennacl::generator::to_string ( viennacl::column_major  const) [inline]

Variable Documentation

Inner product operator.

compound_node<LHS,prod_type,RHS> prod(LHS, RHS)

Product operator.

repeater_impl<Bound, VIENNACL_TYPELIST5(T,T2, T3, T4, T5) > repeat(Bound, T, T2, T3, T4, T5)