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. More... | |
void | execute_single (statement const &, statement_node const &root_node) |
Deals with x = y for a scalar/vector/matrix x, y. More... | |
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. More... | |
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. More... | |
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. More... | |
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. More... | |
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. More... | |
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. More... | |
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. More... | |
void | assign_trans (lhs_rhs_element const &A, lhs_rhs_element const &B) |
Scheduler unwrapper for A =/+=/-= trans(B) More... | |
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. More... | |
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. More... | |
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. More... | |
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) |
viennacl::context | extract_context (statement_node const &root_node) |
Helper routine for extracting the context in which a statement is executed. More... | |
void | new_element (lhs_rhs_element &new_elem, lhs_rhs_element const &old_element, viennacl::context const &ctx) |
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. More... | |
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. More... | |
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. More... | |
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) More... | |
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) More... | |
std::string | to_string (viennacl::scheduler::op_element op_elem) |
Helper routine for converting the operation enums to string. More... | |
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. More... | |
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. More... | |
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.
Definition at line 42 of file execute_matrix_dispatcher.hpp.
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.
Definition at line 73 of file execute_matrix_dispatcher.hpp.
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.
Definition at line 114 of file execute_matrix_dispatcher.hpp.
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.
Definition at line 42 of file execute_scalar_dispatcher.hpp.
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.
Definition at line 68 of file execute_scalar_dispatcher.hpp.
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.
Definition at line 98 of file execute_scalar_dispatcher.hpp.
|
inline |
Scheduler unwrapper for A =/+=/-= trans(B)
Definition at line 154 of file execute_matrix_dispatcher.hpp.
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.
Definition at line 42 of file execute_vector_dispatcher.hpp.
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.
Definition at line 68 of file execute_vector_dispatcher.hpp.
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.
Definition at line 98 of file execute_vector_dispatcher.hpp.
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.
Definition at line 44 of file execute_generic_dispatcher.hpp.
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.
Definition at line 67 of file execute_generic_dispatcher.hpp.
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.
Definition at line 99 of file execute_generic_dispatcher.hpp.
|
inline |
Definition at line 89 of file execute_util.hpp.
|
inline |
Definition at line 90 of file execute_util.hpp.
|
inline |
Definition at line 91 of file execute_util.hpp.
|
inline |
Definition at line 76 of file execute_util.hpp.
|
inline |
Definition at line 77 of file execute_util.hpp.
|
inline |
Definition at line 78 of file execute_util.hpp.
|
inline |
Definition at line 266 of file execute_util.hpp.
|
inline |
Definition at line 39 of file execute_elementwise.hpp.
|
inline |
Definition at line 176 of file execute_elementwise.hpp.
|
inline |
Deals with x = (y) +- (z) where y and z are either data objects or expressions.
Definition at line 40 of file execute_axbx.hpp.
|
inline |
Deals with x = RHS where RHS is an expression and x is either a scalar, a vector, or a matrix.
Definition at line 42 of file execute.hpp.
|
inline |
Definition at line 255 of file execute.hpp.
|
inline |
Deals with x = y for a scalar/vector/matrix x, y.
Definition at line 228 of file execute.hpp.
|
inline |
Helper routine for extracting the context in which a statement is executed.
As all statements are of the type x = EXPR, it is sufficient to extract the context from x.
Definition at line 105 of file execute_util.hpp.
|
inline |
Definition at line 41 of file execute_util.hpp.
|
inline |
Dispatcher interface for computing s = inner_prod(x, y)
Definition at line 172 of file execute_vector_dispatcher.hpp.
|
inline |
Definition at line 57 of file execute_matrix_prod.hpp.
|
inline |
Definition at line 44 of file execute_matrix_prod.hpp.
|
inline |
Definition at line 180 of file execute_matrix_prod.hpp.
|
inline |
Definition at line 204 of file execute_util.hpp.
|
inline |
Dispatcher interface for computing s = norm_1(x)
Definition at line 128 of file execute_vector_dispatcher.hpp.
|
inline |
|
inline |
|
inline |