1 #ifndef VIENNACL_SCHEDULER_EXECUTE_HPP
2 #define VIENNACL_SCHEDULER_EXECUTE_HPP
56 if (scalar_is_temporary)
104 switch (root_node.
op.
type)
108 v, alpha, 1, is_division,
false);
112 u, 1.0, 1,
false,
false,
113 v, alpha, 1, is_division,
false);
117 u, 1.0, 1,
false,
false,
118 v, alpha, 1, is_division,
true);
133 switch (root_node.
op.
type)
137 v, alpha, 1, is_division,
false);
141 u, 1.0, 1,
false,
false,
142 v, alpha, 1, is_division,
false);
146 u, 1.0, 1,
false,
false,
147 v, alpha, 1, is_division,
true);
157 if (scalar_is_temporary)
207 u, 1.0, 1,
false,
false,
208 v, 1.0, 1,
false,
false);
213 u, 1.0, 1,
false,
false,
214 v, 1.0, 1,
false,
true);
232 switch (root_node.
op.
type)
236 v, 1.0, 1,
false,
false);
240 u, 1.0, 1,
false,
false,
241 v, 1.0, 1,
false,
false);
245 u, 1.0, 1,
false,
false,
246 v, 1.0, 1,
false,
true);
Deals with the execution of unary and binary element-wise operations.
void execute_matrix_prod(statement const &s, statement_node const &root_node)
viennacl::context extract_context(statement_node const &root_node)
Helper routine for extracting the context in which a statement is executed.
void assign_trans(lhs_rhs_element const &A, lhs_rhs_element const &B)
Scheduler unwrapper for A =/+=/-= trans(B)
Deals with matrix-vector and matrix-matrix products.
statement_node_subtype subtype
void execute_scalar_assign_composite(statement const &s, statement_node const &root_node)
Deals with x = RHS where RHS is a vector expression.
This file provides the forward declarations for the main types used within ViennaCL.
statement_node_type_family type_family
void execute(statement const &s)
A class representing the 'data' for the LHS or RHS operand of the respective node.
container_type const & array() const
void execute_element_composite(statement const &s, statement_node const &root_node)
Deals with x = RHS where RHS is a vector expression.
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...
void execute_single(statement const &, statement_node const &root_node)
Deals with x = y for a scalar/vector/matrix x, y.
std::vector< value_type > container_type
void execute_impl(statement const &s, statement_node const &root_node)
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 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 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.
Provides various utilities for implementing the execution of statements.
Main datastructure for an node in the statement tree.
Exception for the case the scheduler is unable to deal with the operation.
Provides the datastructures for dealing with statements of the type x = (y) +- (z) ...