ViennaCL - The Vienna Computing Library  1.5.2
Public Member Functions | Static Public Member Functions
scalar_reduction Class Reference

OpenCL kernel generation template for scalar reduction operations such as s = norm_2(x). More...

#include <scalar_reduction.hpp>

Inheritance diagram for scalar_reduction:
profile_base

Public Member Functions

vcl_size_t lmem_used (vcl_size_t scalartype_size) const
 
void init_temporaries (statements_type const &statements) const
 
void set_size_argument (viennacl::scheduler::statement const &s, viennacl::scheduler::statement_node const &, unsigned int &n_arg, viennacl::ocl::kernel &k) const
 
 scalar_reduction (unsigned int vectorization, unsigned int local_size, unsigned int num_groups, unsigned int decomposition)
 The user constructor. More...
 
std::string csv_representation () const
 csv representation of an operation More...
 
unsigned int num_groups () const
 
unsigned int decomposition () const
 
void configure_range_enqueue_arguments (vcl_size_t kernel_id, statements_type const &statements, viennacl::ocl::kernel &k, unsigned int &n_arg) const
 Configures the range and enqueues the arguments associated with the profile. More...
 
void kernel_arguments (statements_type const &statements, std::string &arguments_string) const
 
- Public Member Functions inherited from profile_base
 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...
 
unsigned int vector_size () const
 Get the vector size of the kernel. 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...
 

Static Public Member Functions

static std::string csv_format ()
 

Additional Inherited Members

- Public Types inherited from profile_base
typedef std::list< std::pair
< scheduler::statement,
scheduler::statement_node > > 
statements_type
 
- Protected Member Functions inherited from profile_base
virtual bool invalid_impl (viennacl::ocl::device const &, vcl_size_t) const
 
virtual bool is_slow_impl (viennacl::ocl::device const &) const
 
void configure_local_sizes (viennacl::ocl::kernel &k, vcl_size_t) const
 
virtual void print (std::ostream &s) const
 
- Protected Attributes inherited from profile_base
unsigned int vector_size_
 
vcl_size_t local_size_1_
 
vcl_size_t local_size_2_
 
vcl_size_t num_kernels_
 

Detailed Description

OpenCL kernel generation template for scalar reduction operations such as s = norm_2(x).

Constructor & Destructor Documentation

scalar_reduction ( unsigned int  vectorization,
unsigned int  local_size,
unsigned int  num_groups,
unsigned int  decomposition 
)
inline

The user constructor.

Member Function Documentation

void configure_range_enqueue_arguments ( vcl_size_t  kernel_id,
statements_type const &  statements,
viennacl::ocl::kernel k,
unsigned int &  n_arg 
) const
inlinevirtual

Configures the range and enqueues the arguments associated with the profile.

Implements profile_base.

static std::string csv_format ( )
inlinestatic
std::string csv_representation ( ) const
inlinevirtual

csv representation of an operation

Useful when writing to a file

Implements profile_base.

unsigned int decomposition ( ) const
inline
void init_temporaries ( statements_type const &  statements) const
inline
void kernel_arguments ( statements_type const &  statements,
std::string &  arguments_string 
) const
inlinevirtual

Implements profile_base.

vcl_size_t lmem_used ( vcl_size_t  scalartype_size) const
inlinevirtual

Reimplemented from profile_base.

unsigned int num_groups ( ) const
inline
void set_size_argument ( viennacl::scheduler::statement const &  s,
viennacl::scheduler::statement_node const &  ,
unsigned int &  n_arg,
viennacl::ocl::kernel k 
) const
inline

The documentation for this class was generated from the following file: