pub trait KernelTrait: KernelTraitConst {
    fn as_raw_mut_Kernel(&mut self) -> *mut c_void;

    fn create(&mut self, kname: &str, prog: &Program) -> Result<bool> { ... }
    fn create_ext(
        &mut self,
        kname: &str,
        prog: &ProgramSource,
        buildopts: &str,
        errmsg: &mut String
    ) -> Result<bool> { ... } unsafe fn set(
        &mut self,
        i: i32,
        value: *const c_void,
        sz: size_t
    ) -> Result<i32> { ... } fn set_1(&mut self, i: i32, image_2d: &Image2D) -> Result<i32> { ... } fn set_umat(&mut self, i: i32, m: &UMat) -> Result<i32> { ... } fn set_kernel_arg(&mut self, i: i32, arg: &KernelArg) -> Result<i32> { ... } fn run(
        &mut self,
        dims: i32,
        globalsize: &mut [size_t],
        localsize: &mut [size_t],
        sync: bool,
        q: &Queue
    ) -> Result<bool> { ... } fn run_(
        &mut self,
        dims: i32,
        globalsize: &mut [size_t],
        localsize: &mut [size_t],
        sync: bool,
        q: &Queue
    ) -> Result<bool> { ... } fn run_task(&mut self, sync: bool, q: &Queue) -> Result<bool> { ... } fn run_profiling(
        &mut self,
        dims: i32,
        globalsize: &mut [size_t],
        localsize: &mut [size_t],
        q: &Queue
    ) -> Result<i64> { ... } }

Required Methods

Provided Methods

Run the OpenCL kernel (globalsize value may be adjusted)

Parameters
  • dims: the work problem dimensions. It is the length of globalsize and localsize. It can be either 1, 2 or 3.
  • globalsize: work items for each dimension. It is not the final globalsize passed to OpenCL. Each dimension will be adjusted to the nearest integer divisible by the corresponding value in localsize. If localsize is NULL, it will still be adjusted depending on dims. The adjusted values are greater than or equal to the original values.
  • localsize: work-group size for each dimension.
  • sync: specify whether to wait for OpenCL computation to finish before return.
  • q: command queue

Note: Use run_() if your kernel code doesn’t support adjusted globalsize.

C++ default parameters
  • q: Queue()

Run the OpenCL kernel

Parameters
  • dims: the work problem dimensions. It is the length of globalsize and localsize. It can be either 1, 2 or 3.
  • globalsize: work items for each dimension. This value is passed to OpenCL without changes.
  • localsize: work-group size for each dimension.
  • sync: specify whether to wait for OpenCL computation to finish before return.
  • q: command queue
C++ default parameters
  • q: Queue()

Similar to synchronized run_() call with returning of kernel execution time

Separate OpenCL command queue may be used (with CL_QUEUE_PROFILING_ENABLE)

Returns

Execution time in nanoseconds or negative number on error

C++ default parameters
  • q: Queue()

Implementors