1 #ifndef VIENNACL_SCHEDULER_EXECUTE_MATRIX_PROD_HPP
2 #define VIENNACL_SCHEDULER_EXECUTE_MATRIX_PROD_HPP
100 *result.
matrix_float, static_cast<float>(alpha), static_cast<float>(beta));
break;
129 *result.
matrix_float, static_cast<float>(alpha), static_cast<float>(beta));
break;
162 *result.
matrix_float, static_cast<float>(alpha), static_cast<float>(beta));
break;
293 std::cout <<
"A.subtype: " << A.
subtype << std::endl;
314 if (lhs_needs_temporary)
316 std::cout <<
"Temporary for LHS!" << std::endl;
333 if (rhs_needs_temporary)
377 y2, 1.0, 1,
false,
false,
378 new_root_z.
lhs, alpha, 1,
false,
false);
395 if (lhs_needs_temporary)
398 if (rhs_needs_temporary)
Implementations of dense matrix related operations including matrix-vector products.
void execute_matrix_prod(statement const &s, statement_node const &root_node)
Implementations of vector operations.
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
Expression template class for representing a tree of expressions which ultimately result in a matrix...
viennacl::coordinate_matrix< double > * coordinate_matrix_double
This file provides the forward declarations for the main types used within ViennaCL.
void matrix_vector_prod(statement const &s, lhs_rhs_element result, lhs_rhs_element const &A, lhs_rhs_element const &x)
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
Implementation of the coordinate_matrix class.
viennacl::matrix_base< double > * matrix_double
void delete_element(lhs_rhs_element &elem)
viennacl::hyb_matrix< double > * hyb_matrix_double
Represents a generic 'context' similar to an OpenCL context, but is backend-agnostic and thus also su...
Main namespace in ViennaCL. Holds all the basic types such as vector, matrix, etc. and defines operations upon them.
Implementation of the hyb_matrix class.
viennacl::compressed_matrix< float > * compressed_matrix_float
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
Implementation of the compressed_matrix class.
viennacl::vector_base< float > * vector_float
Implementations of operations using sparse matrices.
viennacl::matrix_base< float > * matrix_float
viennacl::vector_base< double > * vector_double
Implementation of the ell_matrix class.
viennacl::compressed_matrix< double > * compressed_matrix_double
viennacl::ell_matrix< double > * ell_matrix_double
viennacl::hyb_matrix< float > * hyb_matrix_float
Provides the datastructures for dealing with a single statement such as 'x = y + z;'.
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)
viennacl::ell_matrix< float > * ell_matrix_float
A tag class representing transposed matrices.
The main class for representing a statement such as x = inner_prod(y,z); at runtime.
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 prod_impl(const matrix_base< NumericT > &mat, const vector_base< NumericT > &vec, vector_base< NumericT > &result)
Carries out matrix-vector multiplication.
bool matrix_prod_temporary_required(statement const &s, lhs_rhs_element const &elem)
viennacl::coordinate_matrix< float > * coordinate_matrix_float
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.