1 #ifndef VIENNACL_SCHEDULER_EXECUTE_AXBX_HPP
2 #define VIENNACL_SCHEDULER_EXECUTE_AXBX_HPP
61 v, 1.0, 1,
false,
false,
62 w, 1.0, 1,
false, flip_sign_z);
66 v, 1.0, 1,
false,
false,
67 w, 1.0, 1,
false, flip_sign_z);
71 v, 1.0, 1,
false,
true,
72 w, 1.0, 1,
false, !flip_sign_z);
100 v, alpha, 1, is_division,
false,
101 w, 1.0, 1,
false, flip_sign_z);
105 v, alpha, 1, is_division,
false,
106 w, 1.0, 1,
false, flip_sign_z);
110 v, alpha, 1, is_division,
true,
111 w, 1.0, 1,
false, !flip_sign_z);
139 switch (root_node.
op.
type)
143 v, 1.0, 1,
false,
false,
144 w, 1.0, 1,
false, flip_sign_z);
148 v, 1.0, 1,
false,
false,
149 w, 1.0, 1,
false, flip_sign_z);
153 v, 1.0, 1,
false,
true,
154 w, 1.0, 1,
false, !flip_sign_z);
185 switch (root_node.
op.
type)
189 v, 1.0, 1,
false,
false,
190 w, beta, 1, is_division, flip_sign_z);
194 v, 1.0, 1,
false,
false,
195 w, beta, 1, is_division, flip_sign_z);
199 v, 1.0, 1,
false,
true,
200 w, beta, 1, is_division, !flip_sign_z);
228 switch (root_node.
op.
type)
232 v, 1.0, 1,
false,
false,
233 w, 1.0, 1,
false, flip_sign_z);
237 v, 1.0, 1,
false,
false,
238 w, 1.0, 1,
false, flip_sign_z);
242 v, 1.0, 1,
false,
true,
243 w, 1.0, 1,
false, !flip_sign_z);
281 switch (root_node.
op.
type)
285 v, alpha, 1, is_division_y,
false,
286 w, beta, 1, is_division_z, flip_sign_z);
290 v, alpha, 1, is_division_y,
false,
291 w, beta, 1, is_division_z, flip_sign_z);
295 v, alpha, 1, is_division_y,
true,
296 w, beta, 1, is_division_z, !flip_sign_z);
341 switch (root_node.
op.
type)
345 v, 1.0, 1,
false,
false,
346 w, 1.0, 1,
false, flip_sign_z);
350 v, 1.0, 1,
false,
false,
351 w, 1.0, 1,
false, flip_sign_z);
355 v, 1.0, 1,
false,
true,
356 w, 1.0, 1,
false, !flip_sign_z);
viennacl::context extract_context(statement_node const &root_node)
Helper routine for extracting the context in which a statement is executed.
statement_node_subtype subtype
This file provides the forward declarations for the main types used within ViennaCL.
statement_node_type_family type_family
A class representing the 'data' for the LHS or RHS operand of the respective node.
container_type const & array() const
Provides unified wrappers for the common routines {as(), asbs(), asbs_s()}, {av(), avbv(), avbv_v()}, and {am(), ambm(), ambm_m()} such that scheduler logic is not cluttered with numeric type decutions.
operation_node_type_family type_family
Deals with the execution of x = RHS; for a vector x and any compatible right hand side expression RHS...
void delete_element(lhs_rhs_element &elem)
Represents a generic 'context' similar to an OpenCL context, but is backend-agnostic and thus also su...
std::vector< value_type > container_type
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.
statement_node_numeric_type numeric_type
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.
Provides the datastructures for dealing with a single statement such as 'x = y + z;'.
Helper metafunction for checking whether the provided type is viennacl::op_div (for division) ...
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 new_element(lhs_rhs_element &new_elem, lhs_rhs_element const &old_element, viennacl::context const &ctx)
The main class for representing a statement such as x = inner_prod(y,z); at runtime.
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.
Main datastructure for an node in the statement tree.
Exception for the case the scheduler is unable to deal with the operation.