ViennaCL - The Vienna Computing Library  1.7.1
Free open-source GPU-accelerated linear algebra and solver library.
 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

Definition at line 214 of file forwards.h.

Definition at line 213 of file forwards.h.

Definition at line 188 of file forwards.h.

Definition at line 212 of file forwards.h.

Enumeration Type Documentation

Enumerator
BIND_ALL_UNIQUE 
BIND_TO_HANDLE 

Definition at line 246 of file forwards.h.

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.

Enumerator
FETCH_FROM_LOCAL 
FETCH_FROM_GLOBAL_STRIDED 
FETCH_FROM_GLOBAL_CONTIGUOUS 

Definition at line 47 of file template_base.hpp.

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.