ViennaCL - The Vienna Computing Library  1.5.2
Namespaces | Defines | Functions
viennacl/scheduler/execute_elementwise.hpp File Reference

Deals with the execution of unary and binary element-wise operations. More...

#include "viennacl/forwards.h"
#include "viennacl/scheduler/forwards.h"
#include "viennacl/scheduler/execute_util.hpp"
#include "viennacl/linalg/vector_operations.hpp"
#include "viennacl/linalg/matrix_operations.hpp"

Go to the source code of this file.

Namespaces

namespace  viennacl
 

Main namespace in ViennaCL. Holds all the basic types such as vector, matrix, etc. and defines operations upon them.


namespace  viennacl::scheduler
 

Contains the scheduling functionality which allows for dynamic kernel generation as well as the fusion of multiple statements into a single kernel.


namespace  viennacl::scheduler::detail
 

Implementation details for the scheduler.


Defines

#define VIENNACL_SCHEDULER_GENERATE_UNARY_ELEMENT_OP(OPNAME, SCALARTYPE, OPTAG)
#define VIENNACL_SCHEDULER_GENERATE_UNARY_ELEMENT_OP(OPNAME, SCALARTYPE, OPTAG)
#define VIENNACL_SCHEDULER_GENERATE_UNARY_ELEMENT_OP(OPNAME, SCALARTYPE, OPTAG)

Functions

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)
void execute_element_composite (statement const &s, statement_node const &root_node)
 Deals with x = RHS where RHS is a vector expression.

Detailed Description

Deals with the execution of unary and binary element-wise operations.


Define Documentation

#define VIENNACL_SCHEDULER_GENERATE_UNARY_ELEMENT_OP (   OPNAME,
  SCALARTYPE,
  OPTAG 
)
Value:
case OPNAME:  viennacl::linalg::element_op(*result.vector_##SCALARTYPE, \
                                                       viennacl::vector_expression<const vector_base<SCALARTYPE>, const vector_base<SCALARTYPE>, \
                                                                                   op_element_unary<OPTAG> >(*x.vector_##SCALARTYPE, *x.vector_##SCALARTYPE)); break;
#define VIENNACL_SCHEDULER_GENERATE_UNARY_ELEMENT_OP (   OPNAME,
  SCALARTYPE,
  OPTAG 
)
Value:
case OPNAME:  viennacl::linalg::element_op(*result.matrix_row_##SCALARTYPE, \
                                                       viennacl::matrix_expression<const matrix_base<SCALARTYPE, viennacl::row_major>, const matrix_base<SCALARTYPE, viennacl::row_major>, \
                                                                                   op_element_unary<OPTAG> >(*x.matrix_row_##SCALARTYPE, *x.matrix_row_##SCALARTYPE)); break;
#define VIENNACL_SCHEDULER_GENERATE_UNARY_ELEMENT_OP (   OPNAME,
  SCALARTYPE,
  OPTAG 
)
Value:
case OPNAME:  viennacl::linalg::element_op(*result.matrix_col_##SCALARTYPE, \
                                                       viennacl::matrix_expression<const matrix_base<SCALARTYPE, viennacl::column_major>, const matrix_base<SCALARTYPE, viennacl::column_major>, \
                                                                                   op_element_unary<OPTAG> >(*x.matrix_col_##SCALARTYPE, *x.matrix_col_##SCALARTYPE)); break;