ViennaCL - The Vienna Computing Library  1.5.0
Functions
viennacl::scheduler::detail Namespace Reference

Implementation details for the scheduler. More...

Functions

void 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.
void execute_single (statement const &, statement_node const &root_node)
 Deals with x = y for a scalar/vector/matrix x, y.
void execute_impl (statement const &s, statement_node const &root_node)
void execute_axbx (statement const &s, statement_node const &root_node)
 Deals with x = (y) +- (z) where y and z are either data objects or expressions.
void element_op (lhs_rhs_element result, lhs_rhs_element const &x, operation_node_type op_type)
void element_op (lhs_rhs_element result, lhs_rhs_element const &x, lhs_rhs_element const &y, operation_node_type op_type)
template<typename ScalarType1 >
void ax (lhs_rhs_element &x1, lhs_rhs_element const &x2, ScalarType1 const &alpha, vcl_size_t len_alpha, bool reciprocal_alpha, bool flip_sign_alpha)
 Wrapper for viennacl::linalg::av(), taking care of the argument unwrapping.
template<typename ScalarType1 , typename ScalarType2 >
void axbx (lhs_rhs_element &x1, lhs_rhs_element const &x2, ScalarType1 const &alpha, vcl_size_t len_alpha, bool reciprocal_alpha, bool flip_sign_alpha, lhs_rhs_element const &x3, ScalarType2 const &beta, vcl_size_t len_beta, bool reciprocal_beta, bool flip_sign_beta)
 Wrapper for viennacl::linalg::avbv(), taking care of the argument unwrapping.
template<typename ScalarType1 , typename ScalarType2 >
void axbx_x (lhs_rhs_element &x1, lhs_rhs_element const &x2, ScalarType1 const &alpha, vcl_size_t len_alpha, bool reciprocal_alpha, bool flip_sign_alpha, lhs_rhs_element const &x3, ScalarType2 const &beta, vcl_size_t len_beta, bool reciprocal_beta, bool flip_sign_beta)
 Wrapper for viennacl::linalg::avbv_v(), taking care of the argument unwrapping.
template<typename ScalarType1 >
void am (lhs_rhs_element &mat1, lhs_rhs_element const &mat2, ScalarType1 const &alpha, vcl_size_t len_alpha, bool reciprocal_alpha, bool flip_sign_alpha)
 Wrapper for viennacl::linalg::av(), taking care of the argument unwrapping.
template<typename ScalarType1 , typename ScalarType2 >
void ambm (lhs_rhs_element &mat1, lhs_rhs_element const &mat2, ScalarType1 const &alpha, vcl_size_t len_alpha, bool reciprocal_alpha, bool flip_sign_alpha, lhs_rhs_element const &mat3, ScalarType2 const &beta, vcl_size_t len_beta, bool reciprocal_beta, bool flip_sign_beta)
 Wrapper for viennacl::linalg::avbv(), taking care of the argument unwrapping.
template<typename ScalarType1 , typename ScalarType2 >
void ambm_m (lhs_rhs_element &mat1, lhs_rhs_element const &mat2, ScalarType1 const &alpha, vcl_size_t len_alpha, bool reciprocal_alpha, bool flip_sign_alpha, lhs_rhs_element const &mat3, ScalarType2 const &beta, vcl_size_t len_beta, bool reciprocal_beta, bool flip_sign_beta)
 Wrapper for viennacl::linalg::avbv_v(), taking care of the argument unwrapping.
bool matrix_prod_temporary_required (statement const &s, lhs_rhs_element const &elem)
void matrix_matrix_prod (statement const &s, lhs_rhs_element result, lhs_rhs_element const &A, lhs_rhs_element const &B, double alpha, double beta)
void matrix_vector_prod (statement const &s, lhs_rhs_element result, lhs_rhs_element const &A, lhs_rhs_element const &x)
template<typename ScalarType1 >
void as (lhs_rhs_element &s1, lhs_rhs_element const &s2, ScalarType1 const &alpha, vcl_size_t len_alpha, bool reciprocal_alpha, bool flip_sign_alpha)
 Wrapper for viennacl::linalg::av(), taking care of the argument unwrapping.
template<typename ScalarType1 , typename ScalarType2 >
void asbs (lhs_rhs_element &s1, lhs_rhs_element const &s2, ScalarType1 const &alpha, vcl_size_t len_alpha, bool reciprocal_alpha, bool flip_sign_alpha, lhs_rhs_element const &s3, ScalarType2 const &beta, vcl_size_t len_beta, bool reciprocal_beta, bool flip_sign_beta)
 Wrapper for viennacl::linalg::avbv(), taking care of the argument unwrapping.
template<typename ScalarType1 , typename ScalarType2 >
void asbs_s (lhs_rhs_element &s1, lhs_rhs_element const &s2, ScalarType1 const &alpha, vcl_size_t len_alpha, bool reciprocal_alpha, bool flip_sign_alpha, lhs_rhs_element const &s3, ScalarType2 const &beta, vcl_size_t len_beta, bool reciprocal_beta, bool flip_sign_beta)
 Wrapper for viennacl::linalg::avbv_v(), taking care of the argument unwrapping.
lhs_rhs_element const & extract_representative_vector (statement const &s, lhs_rhs_element const &element)
float convert_to_float (float f)
float convert_to_float (double d)
float convert_to_float (lhs_rhs_element const &el)
double convert_to_double (float d)
double convert_to_double (double d)
double convert_to_double (lhs_rhs_element const &el)
void new_element (lhs_rhs_element &new_elem, lhs_rhs_element const &old_element)
void delete_element (lhs_rhs_element &elem)
template<typename ScalarType1 >
void av (lhs_rhs_element &vec1, lhs_rhs_element const &vec2, ScalarType1 const &alpha, vcl_size_t len_alpha, bool reciprocal_alpha, bool flip_sign_alpha)
 Wrapper for viennacl::linalg::av(), taking care of the argument unwrapping.
template<typename ScalarType1 , typename ScalarType2 >
void avbv (lhs_rhs_element &vec1, lhs_rhs_element const &vec2, ScalarType1 const &alpha, vcl_size_t len_alpha, bool reciprocal_alpha, bool flip_sign_alpha, lhs_rhs_element const &vec3, ScalarType2 const &beta, vcl_size_t len_beta, bool reciprocal_beta, bool flip_sign_beta)
 Wrapper for viennacl::linalg::avbv(), taking care of the argument unwrapping.
template<typename ScalarType1 , typename ScalarType2 >
void avbv_v (lhs_rhs_element &vec1, lhs_rhs_element const &vec2, ScalarType1 const &alpha, vcl_size_t len_alpha, bool reciprocal_alpha, bool flip_sign_alpha, lhs_rhs_element const &vec3, ScalarType2 const &beta, vcl_size_t len_beta, bool reciprocal_beta, bool flip_sign_beta)
 Wrapper for viennacl::linalg::avbv_v(), taking care of the argument unwrapping.
void norm_impl (lhs_rhs_element const &x, lhs_rhs_element const &s, operation_node_type op_type)
 Dispatcher interface for computing s = norm_1(x)
void inner_prod_impl (lhs_rhs_element const &x, lhs_rhs_element const &y, lhs_rhs_element const &s)
 Dispatcher interface for computing s = inner_prod(x, y)
std::string to_string (viennacl::scheduler::op_element op_elem)
 Helper routine for converting the operation enums to string.
std::string to_string (viennacl::scheduler::lhs_rhs_element element)
 Helper routine converting the enum and union values inside a statement node to a string.
void print_node (std::ostream &os, viennacl::scheduler::statement const &s, vcl_size_t node_index, vcl_size_t indent=0)
 Recursive worker routine for printing a whole statement.

Detailed Description

Implementation details for the scheduler.


Function Documentation

void viennacl::scheduler::detail::am ( lhs_rhs_element &  mat1,
lhs_rhs_element const &  mat2,
ScalarType1 const &  alpha,
vcl_size_t  len_alpha,
bool  reciprocal_alpha,
bool  flip_sign_alpha 
)

Wrapper for viennacl::linalg::av(), taking care of the argument unwrapping.

void viennacl::scheduler::detail::ambm ( lhs_rhs_element &  mat1,
lhs_rhs_element const &  mat2,
ScalarType1 const &  alpha,
vcl_size_t  len_alpha,
bool  reciprocal_alpha,
bool  flip_sign_alpha,
lhs_rhs_element const &  mat3,
ScalarType2 const &  beta,
vcl_size_t  len_beta,
bool  reciprocal_beta,
bool  flip_sign_beta 
)

Wrapper for viennacl::linalg::avbv(), taking care of the argument unwrapping.

void viennacl::scheduler::detail::ambm_m ( lhs_rhs_element &  mat1,
lhs_rhs_element const &  mat2,
ScalarType1 const &  alpha,
vcl_size_t  len_alpha,
bool  reciprocal_alpha,
bool  flip_sign_alpha,
lhs_rhs_element const &  mat3,
ScalarType2 const &  beta,
vcl_size_t  len_beta,
bool  reciprocal_beta,
bool  flip_sign_beta 
)

Wrapper for viennacl::linalg::avbv_v(), taking care of the argument unwrapping.

void viennacl::scheduler::detail::as ( lhs_rhs_element &  s1,
lhs_rhs_element const &  s2,
ScalarType1 const &  alpha,
vcl_size_t  len_alpha,
bool  reciprocal_alpha,
bool  flip_sign_alpha 
)

Wrapper for viennacl::linalg::av(), taking care of the argument unwrapping.

void viennacl::scheduler::detail::asbs ( lhs_rhs_element &  s1,
lhs_rhs_element const &  s2,
ScalarType1 const &  alpha,
vcl_size_t  len_alpha,
bool  reciprocal_alpha,
bool  flip_sign_alpha,
lhs_rhs_element const &  s3,
ScalarType2 const &  beta,
vcl_size_t  len_beta,
bool  reciprocal_beta,
bool  flip_sign_beta 
)

Wrapper for viennacl::linalg::avbv(), taking care of the argument unwrapping.

void viennacl::scheduler::detail::asbs_s ( lhs_rhs_element &  s1,
lhs_rhs_element const &  s2,
ScalarType1 const &  alpha,
vcl_size_t  len_alpha,
bool  reciprocal_alpha,
bool  flip_sign_alpha,
lhs_rhs_element const &  s3,
ScalarType2 const &  beta,
vcl_size_t  len_beta,
bool  reciprocal_beta,
bool  flip_sign_beta 
)

Wrapper for viennacl::linalg::avbv_v(), taking care of the argument unwrapping.

void viennacl::scheduler::detail::av ( lhs_rhs_element &  vec1,
lhs_rhs_element const &  vec2,
ScalarType1 const &  alpha,
vcl_size_t  len_alpha,
bool  reciprocal_alpha,
bool  flip_sign_alpha 
)

Wrapper for viennacl::linalg::av(), taking care of the argument unwrapping.

void viennacl::scheduler::detail::avbv ( lhs_rhs_element &  vec1,
lhs_rhs_element const &  vec2,
ScalarType1 const &  alpha,
vcl_size_t  len_alpha,
bool  reciprocal_alpha,
bool  flip_sign_alpha,
lhs_rhs_element const &  vec3,
ScalarType2 const &  beta,
vcl_size_t  len_beta,
bool  reciprocal_beta,
bool  flip_sign_beta 
)

Wrapper for viennacl::linalg::avbv(), taking care of the argument unwrapping.

void viennacl::scheduler::detail::avbv_v ( lhs_rhs_element &  vec1,
lhs_rhs_element const &  vec2,
ScalarType1 const &  alpha,
vcl_size_t  len_alpha,
bool  reciprocal_alpha,
bool  flip_sign_alpha,
lhs_rhs_element const &  vec3,
ScalarType2 const &  beta,
vcl_size_t  len_beta,
bool  reciprocal_beta,
bool  flip_sign_beta 
)

Wrapper for viennacl::linalg::avbv_v(), taking care of the argument unwrapping.

void viennacl::scheduler::detail::ax ( lhs_rhs_element &  x1,
lhs_rhs_element const &  x2,
ScalarType1 const &  alpha,
vcl_size_t  len_alpha,
bool  reciprocal_alpha,
bool  flip_sign_alpha 
)

Wrapper for viennacl::linalg::av(), taking care of the argument unwrapping.

void viennacl::scheduler::detail::axbx ( lhs_rhs_element &  x1,
lhs_rhs_element const &  x2,
ScalarType1 const &  alpha,
vcl_size_t  len_alpha,
bool  reciprocal_alpha,
bool  flip_sign_alpha,
lhs_rhs_element const &  x3,
ScalarType2 const &  beta,
vcl_size_t  len_beta,
bool  reciprocal_beta,
bool  flip_sign_beta 
)

Wrapper for viennacl::linalg::avbv(), taking care of the argument unwrapping.

void viennacl::scheduler::detail::axbx_x ( lhs_rhs_element &  x1,
lhs_rhs_element const &  x2,
ScalarType1 const &  alpha,
vcl_size_t  len_alpha,
bool  reciprocal_alpha,
bool  flip_sign_alpha,
lhs_rhs_element const &  x3,
ScalarType2 const &  beta,
vcl_size_t  len_beta,
bool  reciprocal_beta,
bool  flip_sign_beta 
)

Wrapper for viennacl::linalg::avbv_v(), taking care of the argument unwrapping.

double viennacl::scheduler::detail::convert_to_double ( float  d) [inline]
double viennacl::scheduler::detail::convert_to_double ( double  d) [inline]
double viennacl::scheduler::detail::convert_to_double ( lhs_rhs_element const &  el) [inline]
float viennacl::scheduler::detail::convert_to_float ( float  f) [inline]
float viennacl::scheduler::detail::convert_to_float ( double  d) [inline]
float viennacl::scheduler::detail::convert_to_float ( lhs_rhs_element const &  el) [inline]
void viennacl::scheduler::detail::delete_element ( lhs_rhs_element &  elem) [inline]
void viennacl::scheduler::detail::element_op ( lhs_rhs_element  result,
lhs_rhs_element const &  x,
operation_node_type  op_type 
) [inline]
void viennacl::scheduler::detail::element_op ( lhs_rhs_element  result,
lhs_rhs_element const &  x,
lhs_rhs_element const &  y,
operation_node_type  op_type 
) [inline]
void viennacl::scheduler::detail::execute_axbx ( statement const &  s,
statement_node const &  root_node 
) [inline]

Deals with x = (y) +- (z) where y and z are either data objects or expressions.

void execute_composite ( statement const &  s,
statement_node const &  root_node 
) [inline]

Deals with x = RHS where RHS is an expression and x is either a scalar, a vector, or a matrix.

void viennacl::scheduler::detail::execute_impl ( statement const &  s,
statement_node const &  root_node 
) [inline]
void viennacl::scheduler::detail::execute_single ( statement const &  ,
statement_node const &  root_node 
) [inline]

Deals with x = y for a scalar/vector/matrix x, y.

lhs_rhs_element const& viennacl::scheduler::detail::extract_representative_vector ( statement const &  s,
lhs_rhs_element const &  element 
) [inline]
void viennacl::scheduler::detail::inner_prod_impl ( lhs_rhs_element const &  x,
lhs_rhs_element const &  y,
lhs_rhs_element const &  s 
) [inline]

Dispatcher interface for computing s = inner_prod(x, y)

void viennacl::scheduler::detail::matrix_matrix_prod ( statement const &  s,
lhs_rhs_element  result,
lhs_rhs_element const &  A,
lhs_rhs_element const &  B,
double  alpha,
double  beta 
) [inline]
bool viennacl::scheduler::detail::matrix_prod_temporary_required ( statement const &  s,
lhs_rhs_element const &  elem 
) [inline]
void viennacl::scheduler::detail::matrix_vector_prod ( statement const &  s,
lhs_rhs_element  result,
lhs_rhs_element const &  A,
lhs_rhs_element const &  x 
) [inline]
void viennacl::scheduler::detail::new_element ( lhs_rhs_element &  new_elem,
lhs_rhs_element const &  old_element 
) [inline]
void viennacl::scheduler::detail::norm_impl ( lhs_rhs_element const &  x,
lhs_rhs_element const &  s,
operation_node_type  op_type 
) [inline]

Dispatcher interface for computing s = norm_1(x)

void viennacl::scheduler::detail::print_node ( std::ostream &  os,
viennacl::scheduler::statement const &  s,
vcl_size_t  node_index,
vcl_size_t  indent = 0 
)

Recursive worker routine for printing a whole statement.

Helper routine for converting the operation enums to string.

Helper routine converting the enum and union values inside a statement node to a string.