ViennaCL - The Vienna Computing Library
1.5.1
|
Base class for an operation profile. More...
#include <profile_base.hpp>
Public Types | |
typedef std::list< std::pair < scheduler::statement, scheduler::statement_node > > | statements_type |
Public Member Functions | |
profile_base (unsigned int vectorization, vcl_size_t local_size_1, vcl_size_t local_size_2, vcl_size_t num_kernels) | |
The constructor. More... | |
virtual | ~profile_base () |
The destructor. More... | |
virtual void | configure_range_enqueue_arguments (vcl_size_t kernel_id, statements_type const &statements, viennacl::ocl::kernel &k, unsigned int &n_arg) const =0 |
Configures the range and enqueues the arguments associated with the profile. More... | |
virtual void | kernel_arguments (statements_type const &statements, std::string &arguments_string) const =0 |
unsigned int | vector_size () const |
Get the vector size of the kernel. More... | |
virtual std::string | csv_representation () const =0 |
csv representation of an operation More... | |
bool | is_slow (viennacl::ocl::device const &dev) const |
returns whether or not the profile is likely to be slow on a particular device More... | |
bool | is_invalid (viennacl::ocl::device const &dev, vcl_size_t scalartype_size) const |
returns whether or not the profile leads to undefined behavior on particular device More... | |
vcl_size_t | num_kernels () const |
Returns the number of kernels needed by this operation. More... | |
virtual void | operator() (utils::kernel_generation_stream &stream, vcl_size_t device_offset, statements_type const &statements) const |
Generates the code associated with this profile onto the provided stream Redirects to the virtual core() method. More... | |
Protected Member Functions | |
virtual bool | invalid_impl (viennacl::ocl::device const &, vcl_size_t) const |
virtual bool | is_slow_impl (viennacl::ocl::device const &) const |
virtual vcl_size_t | lmem_used (vcl_size_t) const |
void | configure_local_sizes (viennacl::ocl::kernel &k, vcl_size_t) const |
virtual void | print (std::ostream &s) const |
virtual void | core (vcl_size_t kernel_id, utils::kernel_generation_stream &stream, statements_type const &statements, std::vector< detail::mapping_type > const &mapping) const =0 |
Generates the body of the associated kernel function. More... | |
Protected Attributes | |
unsigned int | vector_size_ |
vcl_size_t | local_size_1_ |
vcl_size_t | local_size_2_ |
vcl_size_t | num_kernels_ |
Friends | |
std::ostream & | operator<< (std::ostream &, profile_base const &) |
Base class for an operation profile.
typedef std::list< std::pair<scheduler::statement, scheduler::statement_node> > statements_type |
|
inline |
The constructor.
|
inlinevirtual |
The destructor.
|
inlineprotected |
|
pure virtual |
Configures the range and enqueues the arguments associated with the profile.
Implemented in scalar_reduction, matrix_saxpy, matrix_product, vector_reduction, and vector_saxpy.
|
protectedpure virtual |
Generates the body of the associated kernel function.
kernel_id | If this profile requires multiple kernel, the index for which the core should be generated |
stream | The output stream the kernel is written to |
statements | the statements for which the code should be generated |
mapping | the mapping of the statement_nodes to the mapped_objects |
|
pure virtual |
csv representation of an operation
Useful when writing to a file
Implemented in scalar_reduction, matrix_saxpy, matrix_product, vector_reduction, and vector_saxpy.
|
inlineprotectedvirtual |
|
inline |
returns whether or not the profile leads to undefined behavior on particular device
dev | the given device |
scalartype_size | Local memory required to execute the kernel |
|
inline |
returns whether or not the profile is likely to be slow on a particular device
dev | the given device |
|
inlineprotectedvirtual |
|
pure virtual |
Implemented in scalar_reduction, matrix_product, matrix_saxpy, vector_reduction, and vector_saxpy.
|
inlineprotectedvirtual |
Reimplemented in scalar_reduction.
|
inline |
Returns the number of kernels needed by this operation.
|
inlinevirtual |
Generates the code associated with this profile onto the provided stream Redirects to the virtual core() method.
stream | Stream onto which the code should be generated |
device_offset | the index of the device in the context (used for the kernel name) |
statements | the statements associated with this profile |
Get Prototype, initialize mapping
|
inlineprotectedvirtual |
|
inline |
Get the vector size of the kernel.
|
friend |
|
protected |
|
protected |
|
protected |
|
protected |