|
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 |
1.8.6