ViennaCL - The Vienna Computing Library
1.5.0
|
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. |
Implementation details for the scheduler.
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.
std::string viennacl::scheduler::detail::to_string | ( | viennacl::scheduler::op_element | op_elem | ) |
Helper routine for converting the operation enums to string.
std::string viennacl::scheduler::detail::to_string | ( | viennacl::scheduler::lhs_rhs_element | element | ) |
Helper routine converting the enum and union values inside a statement node to a string.