OpenCL C++ Bindings: cl::Kernel Class Reference

OpenCL C++ Bindings

Loading...
Searching...
No Matches
cl::Kernel Class Reference

Class interface for cl_kernel. More...

`#include <opencl.hpp>`

Inheritance diagram for cl::Kernel:

## Public Member Functions
| Kernel (const Program &program, const string &name, cl_int *err=nullptr)
| Kernel (const Program &program, const char *name, cl_int *err=nullptr)
| Kernel ()
| Default constructor - initializes to nullptr.
| Kernel (const cl_kernel &kernel, bool retainObject=false)
| Constructor from cl_kernel - takes ownership.
Kernel & | operator= (const cl_kernel &rhs)
| Assignment operator from cl_kernel - takes ownership.
template<typename T>
cl_int | getInfo (cl_kernel_info name, T *param) const
template<cl_kernel_info name>
detail::param_traits< detail::cl_kernel_info, name >::param_type | getInfo (cl_int *err=nullptr) const
template<typename T>
cl_int | getArgInfo (cl_uint argIndex, cl_kernel_arg_info name, T *param) const
template<cl_kernel_arg_info name>
detail::param_traits< detail::cl_kernel_arg_info, name >::param_type | getArgInfo (cl_uint argIndex, cl_int *err=nullptr) const
template<typename T>
cl_int | getWorkGroupInfo (const Device &device, cl_kernel_work_group_info name, T *param) const
template<cl_kernel_work_group_info name>
detail::param_traits< detail::cl_kernel_work_group_info, name >::param_type | getWorkGroupInfo (const Device &device, cl_int *err=nullptr) const
cl_int | getSubGroupInfo (const cl::Device &dev, cl_kernel_sub_group_info name, const cl::NDRange &range, size_type *param) const
template<cl_kernel_sub_group_info name>
size_type | getSubGroupInfo (const cl::Device &dev, const cl::NDRange &range, cl_int *err=nullptr) const
template<typename T, class D>
cl_int | setArg (cl_uint index, const cl::pointer< T, D > &argPtr)
| setArg overload taking a shared_ptr type
template<typename T, class Alloc>
cl_int | setArg (cl_uint index, const cl::vector< T, Alloc > &arg)
| setArg overload taking a vector type.
template<typename T>
std::enable_if< std::is_pointer< T >::value, cl_int >::type | setArg (cl_uint index, const T argPtr)
| setArg overload taking a pointer type
template<typename T>
std::enable_if<!std::is_pointer< T >::value, cl_int >::type | setArg (cl_uint index, const T &value)
| setArg overload taking a POD type
cl_int | setArg (cl_uint index, size_type size, const void *argPtr)
cl_int | setSVMPointers (const vector< void * > &pointerList)
template<int ArrayLength>
cl_int | setSVMPointers (const std::array< void *, ArrayLength > &pointerList)
cl_int | enableFineGrainedSystemSVM (bool svmEnabled)
| Enable fine-grained system SVM.
template<int index, int ArrayLength, class D, typename T0, typename T1, typename... Ts>
void | setSVMPointersHelper (std::array< void *, ArrayLength > &pointerList, const pointer< T0, D > &t0, const pointer< T1, D > &t1, Ts &... ts)
template<int index, int ArrayLength, typename T0, typename T1, typename... Ts>
std::enable_if< std::is_pointer< T0 >::value, void >::type | setSVMPointersHelper (std::array< void *, ArrayLength > &pointerList, T0 t0, T1 t1, Ts... ts)
template<int index, int ArrayLength, typename T0, class D>
void | setSVMPointersHelper (std::array< void *, ArrayLength > &pointerList, const pointer< T0, D > &t0)
template<int index, int ArrayLength, typename T0>
std::enable_if< std::is_pointer< T0 >::value, void >::type | setSVMPointersHelper (std::array< void *, ArrayLength > &pointerList, T0 t0)
template<typename T0, typename... Ts>
cl_int | setSVMPointers (const T0 &t0, Ts &... ts)
template<typename T>
cl_int | setExecInfo (cl_kernel_exec_info param_name, const T &val)
template<cl_kernel_exec_info name>
cl_int | setExecInfo (typename detail::param_traits< detail::cl_kernel_exec_info, name >::param_type &val)
Kernel | clone ()
Public Member Functions inherited from cl::detail::Wrapper< cl_kernel >
Wrapper< cl_type > & | operator= (const Wrapper< cl_type > &rhs)
const cl_type & | operator() () const
cl_type | get () const

## Additional Inherited Members
Public Types inherited from cl::detail::Wrapper< cl_kernel >
typedef cl_kernel | cl_type
Protected Member Functions inherited from cl::detail::Wrapper< cl_kernel >
cl_int | retain () const
cl_int | release () const
Protected Attributes inherited from cl::detail::Wrapper< cl_kernel >
cl_type | object_

## Detailed Description

Class interface for cl_kernel.

Note
  Copies of these objects are shallow, meaning that the copy will refer to the same underlying cl_kernel as the original. For details, see clRetainKernel() and clReleaseKernel().

See also
  cl_kernel

Definition at line 6289 of file opencl.hpp.

## Constructor & Destructor Documentation

## ◆ Kernel() [1/4]

cl::Kernel::Kernel | ( | const Program & | program,
|  | const string & | name,
|  | cl_int * | err = nullptr )
| inline

Definition at line 7549 of file opencl.hpp.

## ◆ Kernel() [2/4]

cl::Kernel::Kernel | ( | const Program & | program,
|  | const char * | name,
|  | cl_int * | err = nullptr )
| inline

Definition at line 7561 of file opencl.hpp.

## ◆ Kernel() [3/4]

cl::Kernel::Kernel | ( |  | ) |
| inline

Default constructor - initializes to nullptr.

Definition at line 6296 of file opencl.hpp.

## ◆ Kernel() [4/4]

cl::Kernel::Kernel | ( | const cl_kernel & | kernel,
|  | bool | retainObject = false )
| inlineexplicit

Constructor from cl_kernel - takes ownership.

Parameters

  retainObject | will cause the constructor to retain its cl object. Defaults to false to maintain compatibility with earlier versions. This effectively transfers ownership of a refcount on the cl_kernel into the new Kernel object.

Definition at line 6306 of file opencl.hpp.

## Member Function Documentation

## ◆ clone()

Kernel cl::Kernel::clone | ( |  | ) |
| inline

Make a deep copy of the kernel object including its arguments.

Returns
  A new kernel object with internal state entirely separate from that of the original but with any arguments set on the original intact.

Definition at line 6601 of file opencl.hpp.

## ◆ enableFineGrainedSystemSVM()

cl_int cl::Kernel::enableFineGrainedSystemSVM | ( | bool | svmEnabled | ) |
| inline

Enable fine-grained system SVM.

Note
  It is only possible to enable fine-grained system SVM if all devices in the context associated with kernel support it.

Parameters

  svmEnabled | True if fine-grained system SVM is requested. False otherwise.

Returns
  CL_SUCCESS if the function was executed succesfully. CL_INVALID_OPERATION if no devices in the context support fine-grained system SVM.

See also
  clSetKernelExecInfo

Definition at line 6521 of file opencl.hpp.

## ◆ getArgInfo() [1/2]

template<cl_kernel_arg_info name>

detail::param_traits< detail::cl_kernel_arg_info, name >::param_type cl::Kernel::getArgInfo | ( | cl_uint | argIndex,
|  | cl_int * | err = nullptr ) const
| inline

Definition at line 6355 of file opencl.hpp.

## ◆ getArgInfo() [2/2]

template<typename T>

cl_int cl::Kernel::getArgInfo | ( | cl_uint | argIndex,
|  | cl_kernel_arg_info | name,
|  | T * | param ) const
| inline

Definition at line 6346 of file opencl.hpp.

## ◆ getInfo() [1/2]

template<cl_kernel_info name>

detail::param_traits< detail::cl_kernel_info, name >::param_type cl::Kernel::getInfo | ( | cl_int * | err = nullptr | ) | const
| inline

Definition at line 6333 of file opencl.hpp.

## ◆ getInfo() [2/2]

template<typename T>

cl_int cl::Kernel::getInfo | ( | cl_kernel_info | name,
|  | T * | param ) const
| inline

Definition at line 6324 of file opencl.hpp.

## ◆ getSubGroupInfo() [1/2]

cl_int cl::Kernel::getSubGroupInfo | ( | const cl::Device & | dev,
|  | cl_kernel_sub_group_info | name,
|  | const cl::NDRange & | range,
|  | size_type * | param ) const
| inline

Definition at line 6391 of file opencl.hpp.

## ◆ getSubGroupInfo() [2/2]

template<cl_kernel_sub_group_info name>

size_type cl::Kernel::getSubGroupInfo | ( | const cl::Device & | dev,
|  | const cl::NDRange & | range,
|  | cl_int * | err = nullptr ) const
| inline

Definition at line 6413 of file opencl.hpp.

## ◆ getWorkGroupInfo() [1/2]

template<cl_kernel_work_group_info name>

detail::param_traits< detail::cl_kernel_work_group_info, name >::param_type cl::Kernel::getWorkGroupInfo | ( | const Device & | device,
|  | cl_int * | err = nullptr ) const
| inline

Definition at line 6379 of file opencl.hpp.

## ◆ getWorkGroupInfo() [2/2]

template<typename T>

cl_int cl::Kernel::getWorkGroupInfo | ( | const Device & | device,
|  | cl_kernel_work_group_info | name,
|  | T * | param ) const
| inline

Definition at line 6368 of file opencl.hpp.

## ◆ operator=()

Kernel & cl::Kernel::operator= | ( | const cl_kernel & | rhs | ) |
| inline

Assignment operator from cl_kernel - takes ownership.

This effectively transfers ownership of a refcount on the rhs and calls clReleaseKernel() on the value previously held by this instance.

Definition at line 6314 of file opencl.hpp.

## ◆ setArg() [1/5]

template<typename T, class D>

cl_int cl::Kernel::setArg | ( | cl_uint | index,
|  | const cl::pointer< T, D > & | argPtr )
| inline

setArg overload taking a shared_ptr type

Definition at line 6428 of file opencl.hpp.

## ◆ setArg() [2/5]

template<typename T, class Alloc>

cl_int cl::Kernel::setArg | ( | cl_uint | index,
|  | const cl::vector< T, Alloc > & | arg )
| inline

setArg overload taking a vector type.

Definition at line 6438 of file opencl.hpp.

## ◆ setArg() [3/5]

template<typename T>

std::enable_if<!std::is_pointer< T >::value, cl_int >::type cl::Kernel::setArg | ( | cl_uint | index,
|  | const T & | value )
| inline

setArg overload taking a POD type

Definition at line 6462 of file opencl.hpp.

## ◆ setArg() [4/5]

template<typename T>

std::enable_if< std::is_pointer< T >::value, cl_int >::type cl::Kernel::setArg | ( | cl_uint | index,
|  | const T | argPtr )
| inline

setArg overload taking a pointer type

Definition at line 6450 of file opencl.hpp.

## ◆ setArg() [5/5]

cl_int cl::Kernel::setArg | ( | cl_uint | index,
|  | size_type | size,
|  | const void * | argPtr )
| inline

Definition at line 6473 of file opencl.hpp.

## ◆ setExecInfo() [1/2]

template<typename T>

cl_int cl::Kernel::setExecInfo | ( | cl_kernel_exec_info | param_name,
|  | const T & | val )
| inline

Definition at line 6578 of file opencl.hpp.

## ◆ setExecInfo() [2/2]

template<cl_kernel_exec_info name>

cl_int cl::Kernel::setExecInfo | ( | typename detail::param_traits< detail::cl_kernel_exec_info, name >::param_type & | val | ) |
| inline

Definition at line 6589 of file opencl.hpp.

## ◆ setSVMPointers() [1/3]

template<int ArrayLength>

cl_int cl::Kernel::setSVMPointers | ( | const std::array< void *, ArrayLength > & | pointerList | ) |
| inline

Specify a std::array of SVM pointers that the kernel may access in addition to its arguments.

Definition at line 6500 of file opencl.hpp.

## ◆ setSVMPointers() [2/3]

template<typename T0, typename... Ts>

cl_int cl::Kernel::setSVMPointers | ( | const T0 & | t0,
|  | Ts &... | ts )
| inline

Definition at line 6564 of file opencl.hpp.

## ◆ setSVMPointers() [3/3]

cl_int cl::Kernel::setSVMPointers | ( | const vector< void * > & | pointerList | ) |
| inline

Specify a vector of SVM pointers that the kernel may access in addition to its arguments.

Definition at line 6485 of file opencl.hpp.

## ◆ setSVMPointersHelper() [1/4]

template<int index, int ArrayLength, typename T0, class D>

void cl::Kernel::setSVMPointersHelper | ( | std::array< void *, ArrayLength > & | pointerList,
|  | const pointer< T0, D > & | t0 )
| inline

Definition at line 6550 of file opencl.hpp.

## ◆ setSVMPointersHelper() [2/4]

template<int index, int ArrayLength, class D, typename T0, typename T1, typename... Ts>

void cl::Kernel::setSVMPointersHelper | ( | std::array< void *, ArrayLength > & | pointerList,
|  | const pointer< T0, D > & | t0,
|  | const pointer< T1, D > & | t1,
|  | Ts &... | ts )
| inline

Definition at line 6535 of file opencl.hpp.

## ◆ setSVMPointersHelper() [3/4]

template<int index, int ArrayLength, typename T0>

std::enable_if< std::is_pointer< T0 >::value, void >::type cl::Kernel::setSVMPointersHelper | ( | std::array< void *, ArrayLength > & | pointerList,
|  | T0 | t0 )
| inline

Definition at line 6558 of file opencl.hpp.

## ◆ setSVMPointersHelper() [4/4]

template<int index, int ArrayLength, typename T0, typename T1, typename... Ts>

std::enable_if< std::is_pointer< T0 >::value, void >::type cl::Kernel::setSVMPointersHelper | ( | std::array< void *, ArrayLength > & | pointerList,
|  | T0 | t0,
|  | T1 | t1,
|  | Ts... | ts )
| inline

Definition at line 6543 of file opencl.hpp.

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

- opencl.hpp