OpenCL C++ Bindings
cl::Kernel Class Reference

Class interface for cl_kernel. More...

Inheritance diagram for cl::Kernel:
cl::detail::Wrapper< cl_kernel >

Public Member Functions

 Kernel (const Program &program, const char *name, cl_int *err=NULL)
 
 Kernel ()
 Default constructor - initializes to NULL.
 
 Kernel (const cl_kernel &kernel, bool retainObject=false)
 Constructor from cl_kernel - takes ownership. More...
 
Kerneloperator= (const cl_kernel &rhs)
 Assignment operator from cl_kernel - takes ownership. More...
 
 Kernel (const Kernel &kernel)
 Copy constructor to forward copy to the superclass correctly. Required for MSVC.
 
Kerneloperator= (const Kernel &kernel)
 Copy assignment to forward copy to the superclass correctly. Required for MSVC.
 
 Kernel (Kernel &&kernel) CL_HPP_NOEXCEPT_
 Move constructor to forward move to the superclass correctly. Required for MSVC.
 
Kerneloperator= (Kernel &&kernel)
 Move assignment to forward move to the superclass correctly. Required for MSVC.
 
template<typename T >
cl_int getInfo (cl_kernel_info name, T *param) const
 
template<cl_int name>
detail::param_traits< detail::cl_kernel_info, name >::param_type getInfo (cl_int *err=NULL) const
 
template<typename T >
cl_int getArgInfo (cl_uint argIndex, cl_kernel_arg_info name, T *param) const
 
template<cl_int name>
detail::param_traits< detail::cl_kernel_arg_info, name >::param_type getArgInfo (cl_uint argIndex, cl_int *err=NULL) const
 
template<typename T >
cl_int getWorkGroupInfo (const Device &device, cl_kernel_work_group_info name, T *param) const
 
template<cl_int name>
detail::param_traits< detail::cl_kernel_work_group_info, name >::param_type getWorkGroupInfo (const Device &device, cl_int *err=NULL) 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 > &argPtr)
 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. More...
 
template<int index, int ArrayLength, class D , typename T0 , typename... Ts>
void setSVMPointersHelper (std::array< void *, ArrayLength > &pointerList, const pointer< T0, D > &t0, Ts...ts)
 
template<int index, int ArrayLength, typename T0 , typename... Ts>
std::enable_if< std::is_pointer< T0 >::value, void >::type setSVMPointersHelper (std::array< void *, ArrayLength > &pointerList, T0 t0, 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)
 
- Public Member Functions inherited from cl::detail::Wrapper< cl_kernel >
 Wrapper (const cl_type &obj, bool retainObject)
 
 Wrapper (const Wrapper< cl_type > &rhs)
 
 Wrapper (Wrapper< cl_type > &&rhs) CL_HPP_NOEXCEPT_
 
Wrapper< cl_type > & operator= (const Wrapper< cl_type > &rhs)
 
Wrapper< cl_type > & operator= (Wrapper< cl_type > &&rhs)
 
Wrapper< cl_type > & operator= (const cl_type &rhs)
 
const cl_type & operator() () const
 
cl_type & operator() ()
 
const cl_type get () const
 
cl_type get ()
 

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 5668 of file cl2.hpp.

Constructor & Destructor Documentation

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

Constructor from cl_kernel - takes ownership.

Parameters
retainObjectwill 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 5684 of file cl2.hpp.

Member Function Documentation

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
svmEnabledTrue 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 5915 of file cl2.hpp.

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 5692 of file cl2.hpp.

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 5879 of file cl2.hpp.

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 5894 of file cl2.hpp.


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