All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
viennacl::device_specific Namespace Reference

Provides an OpenCL kernel generator. More...

## Namespaces

| autotune
| Provides the implementation for tuning the kernels for a particular device.
| builtin_database
| detail
| Contains implementation details of the kernel generator.
| profiles
| Namespace holding the various device-specific parameters for generating the best kernels.
| tree_parsing
| utils
| Contains various helper routines for kernel generation.

## Classes

class | binary_leaf
| Binary leaf interface. More...
class | bind_all_unique
class | bind_to_handle
struct | char_to_type
class | execution_handler
class | generator_not_supported_exception
| Exception for the case the generator is unable to deal with the operation. More...
struct | index_tuple
class | lazy_program_compiler
class | mapped_buffer
| Buffered. More...
class | mapped_handle
| Handle. More...
class | mapped_host_scalar
| Host scalar. More...
class | mapped_implicit_matrix
| Implicit matrix. More...
class | mapped_implicit_vector
| Implicit vector. More...
class | mapped_matrix
| Matrix. More...
class | mapped_matrix_column
| Matrix column. More...
class | mapped_matrix_diag
| Matrix diag. More...
class | mapped_matrix_product
| Matrix product. More...
class | mapped_matrix_row
| Matrix row. More...
class | mapped_object
| Mapped Object. More...
class | mapped_reduction
| Reduction. More...
class | mapped_row_wise_reduction
| Vector reduction. More...
class | mapped_scalar
| Scalar. More...
class | mapped_scalar_reduction
| Scalar reduction. More...
class | mapped_trans
| Trans. More...
class | mapped_vector
| Vector. More...
class | mapped_vector_diag
| Vector diag. More...
struct | matrix_product_parameters
class | matrix_product_template
class | statements_container
class | symbolic_binder
class | template_base
class | template_base_impl

## Typedefs

typedef std::pair< vcl_size_t, leaf_t > | mapping_key
typedef std::map< mapping_key, tools::shared_ptr < mapped_object > > | mapping_type
typedef cl_uint | vendor_id_type
typedef cl_device_type | device_type
typedef std::string | device_name_type

## Enumerations

enum | expression_type { SCALAR_AXPY_TYPE, VECTOR_AXPY_TYPE, MATRIX_AXPY_TYPE, REDUCTION_TYPE, ROW_WISE_REDUCTION_Nx_TYPE, ROW_WISE_REDUCTION_Tx_TYPE, MATRIX_PRODUCT_NN_TYPE, MATRIX_PRODUCT_TN_TYPE, MATRIX_PRODUCT_NT_TYPE, MATRIX_PRODUCT_TT_TYPE, INVALID_EXPRESSION_TYPE }
enum | leaf_t { LHS_NODE_TYPE, PARENT_NODE_TYPE, RHS_NODE_TYPE }
enum | binding_policy_t { BIND_ALL_UNIQUE, BIND_TO_HANDLE }
enum | fetching_policy_type { FETCH_FROM_LOCAL, FETCH_FROM_GLOBAL_STRIDED, FETCH_FROM_GLOBAL_CONTIGUOUS }

## Functions

void | execute (template_base const &T, statements_container const &statements, viennacl::ocl::context &ctx=viennacl::ocl::current_context(), bool force_compilation=false)
bool | is_scalar_reduction (scheduler::statement_node const &node)
bool | is_vector_reduction (scheduler::statement_node const &node)
scheduler::statement_node const & | lhs_most (scheduler::statement::container_type const &array, vcl_size_t root)
const char * | expression_type_to_string (expression_type type)
template<typename KeyT , typename ValueT >
ValueT const & | at (std::map< KeyT, ValueT > const &map, KeyT const &key)
| Emulation of C++11's .at() member for std::map<>, const-version. More...
template<typename KeyT , typename ValueT >
ValueT & | at (std::map< KeyT, ValueT > &map, KeyT const &key)
| Emulation of C++11's .at() member for std::map<>, non-const version. More...
tools::shared_ptr < symbolic_binder > | make_binder (binding_policy_t policy)
void | compute_reduction (utils::kernel_generation_stream &os, std::string acc, std::string cur, scheduler::op_element const &op)
void | compute_index_reduction (utils::kernel_generation_stream &os, std::string acc, std::string cur, std::string const &acc_value, std::string const &cur_value, scheduler::op_element const &op)
void | process_all (std::string const &type_key, std::string const &str, utils::kernel_generation_stream &stream, std::vector< mapping_type > const &mappings)
void | process_all_at (std::string const &type_key, std::string const &str, utils::kernel_generation_stream &stream, std::vector< mapping_type > const &mappings, vcl_size_t root_idx, leaf_t leaf)
std::string | neutral_element (scheduler::op_element const &op)
void | enqueue_custom_op (viennacl::device_specific::custom_operation &op, viennacl::ocl::command_queue const &queue)

## Detailed Description

Provides an OpenCL kernel generator.

## Typedef Documentation

typedef std::string viennacl::device_specific::device_name_type

Definition at line 214 of file forwards.h.

typedef cl_device_type viennacl::device_specific::device_type

Definition at line 213 of file forwards.h.

typedef std::pair<vcl_size_t, leaf_t> viennacl::device_specific::mapping_key

Definition at line 188 of file forwards.h.

typedef std::map<mapping_key, tools::shared_ptr<mapped_object> > viennacl::device_specific::mapping_type

Definition at line 191 of file forwards.h.

typedef cl_uint viennacl::device_specific::vendor_id_type

Definition at line 212 of file forwards.h.

## Enumeration Type Documentation

enum viennacl::device_specific::binding_policy_t

Enumerator
BIND_ALL_UNIQUE |
BIND_TO_HANDLE |

Definition at line 246 of file forwards.h.

enum viennacl::device_specific::expression_type

Enumerator
SCALAR_AXPY_TYPE |
VECTOR_AXPY_TYPE |
MATRIX_AXPY_TYPE |
REDUCTION_TYPE |
ROW_WISE_REDUCTION_Nx_TYPE |
ROW_WISE_REDUCTION_Tx_TYPE |
MATRIX_PRODUCT_NN_TYPE |
MATRIX_PRODUCT_TN_TYPE |
MATRIX_PRODUCT_NT_TYPE |
MATRIX_PRODUCT_TT_TYPE |
INVALID_EXPRESSION_TYPE |

Definition at line 95 of file forwards.h.

enum viennacl::device_specific::fetching_policy_type

Enumerator
FETCH_FROM_LOCAL |
FETCH_FROM_GLOBAL_STRIDED |
FETCH_FROM_GLOBAL_CONTIGUOUS |

Definition at line 47 of file template_base.hpp.

enum viennacl::device_specific::leaf_t

Enumerator
LHS_NODE_TYPE |
PARENT_NODE_TYPE |
RHS_NODE_TYPE |

Definition at line 180 of file forwards.h.

## Function Documentation

template<typename KeyT , typename ValueT >

ValueT const& viennacl::device_specific::at | ( | std::map< KeyT, ValueT > const & | map,
|  | KeyT const & | key
| ) |  |

Emulation of C++11's .at() member for std::map<>, const-version.

Definition at line 142 of file forwards.h.

template<typename KeyT , typename ValueT >

ValueT& viennacl::device_specific::at | ( | std::map< KeyT, ValueT > & | map,
|  | KeyT const & | key
| ) |  |

Emulation of C++11's .at() member for std::map<>, non-const version.

Definition at line 153 of file forwards.h.

void viennacl::device_specific::compute_index_reduction | ( | utils::kernel_generation_stream & | os,
|  | std::string | acc,
|  | std::string | cur,
|  | std::string const & | acc_value,
|  | std::string const & | cur_value,
|  | scheduler::op_element const & | op
| ) |  |

inline

Definition at line 48 of file utils.hpp.

void viennacl::device_specific::compute_reduction | ( | utils::kernel_generation_stream & | os,
|  | std::string | acc,
|  | std::string | cur,
|  | scheduler::op_element const & | op
| ) |  |

inline

Definition at line 40 of file utils.hpp.

void viennacl::device_specific::enqueue_custom_op | ( | viennacl::device_specific::custom_operation & | op,
|  | viennacl::ocl::command_queue const & | queue
| ) |  |

void viennacl::device_specific::execute | ( | template_base const & | T,
|  | statements_container const & | statements,
|  | viennacl::ocl::context & | ctx = `viennacl::ocl::current_context()`,
|  | bool | force_compilation = `false`
| ) |  |

inline

Definition at line 44 of file execute.hpp.

const char* viennacl::device_specific::expression_type_to_string | ( | expression_type | type | ) |

inline

Definition at line 110 of file forwards.h.

bool viennacl::device_specific::is_scalar_reduction | ( | scheduler::statement_node const & | node | ) |

inline

Definition at line 75 of file forwards.h.

bool viennacl::device_specific::is_vector_reduction | ( | scheduler::statement_node const & | node | ) |

inline

Definition at line 80 of file forwards.h.

scheduler::statement_node const& viennacl::device_specific::lhs_most | ( | scheduler::statement::container_type const & | array,
|  | vcl_size_t | root
| ) |  |

inline

Definition at line 87 of file forwards.h.

tools::shared_ptr<symbolic_binder> viennacl::device_specific::make_binder | ( | binding_policy_t | policy | ) |

inline

Definition at line 251 of file forwards.h.

std::string viennacl::device_specific::neutral_element | ( | scheduler::op_element const & | op | ) |

inline

Definition at line 82 of file utils.hpp.

void viennacl::device_specific::process_all | ( | std::string const & | type_key,
|  | std::string const & | str,
|  | utils::kernel_generation_stream & | stream,
|  | std::vector< mapping_type > const & | mappings
| ) |  |

inline

Definition at line 60 of file utils.hpp.

void viennacl::device_specific::process_all_at | ( | std::string const & | type_key,
|  | std::string const & | str,
|  | utils::kernel_generation_stream & | stream,
|  | std::vector< mapping_type > const & | mappings,
|  | vcl_size_t | root_idx,
|  | leaf_t | leaf
| ) |  |

inline

Definition at line 70 of file utils.hpp.