OpenCL support

Overview

// enums

enum cv::ocl::OclVectorStrategy;

// classes

class cv::ocl::Context;
class cv::ocl::Device;
class cv::ocl::Image2D;
class cv::ocl::Kernel;
class cv::ocl::KernelArg;
class cv::ocl::Platform;
class cv::ocl::PlatformInfo;
class cv::ocl::Program;
class cv::ocl::ProgramSource;
class cv::ocl::Queue;

// global functions

void
cv::ocl::attachContext(
    const String& platformName,
    void* platformID,
    void* context,
    void* deviceID
    );

void
cv::ocl::buildOptionsAddMatrixDescription(
    String& buildOptions,
    const String& name,
    InputArray _m
    );

int
cv::ocl::checkOptimalVectorWidth(
    const int* vectorWidths,
    InputArray src1,
    InputArray src2 = noArray(),
    InputArray src3 = noArray(),
    InputArray src4 = noArray(),
    InputArray src5 = noArray(),
    InputArray src6 = noArray(),
    InputArray src7 = noArray(),
    InputArray src8 = noArray(),
    InputArray src9 = noArray(),
    OclVectorStrategy strat = OCL_VECTOR_DEFAULT
    );

void
cv::ocl::convertFromBuffer(
    void* cl_mem_buffer,
    size_t step,
    int rows,
    int cols,
    int type,
    UMat& dst
    );

void
cv::ocl::convertFromImage(
    void* cl_mem_image,
    UMat& dst
    );

const char*
cv::ocl::convertTypeStr(
    int sdepth,
    int ddepth,
    int cn,
    char* buf
    );

void
cv::ocl::finish();

MatAllocator*
cv::ocl::getOpenCLAllocator();

void
cv::ocl::getPlatfomsInfo(std::vector<PlatformInfo>& platform_info);

bool
cv::ocl::haveAmdBlas();

bool
cv::ocl::haveAmdFft();

bool
cv::ocl::haveOpenCL();

bool
cv::ocl::haveSVM();

void
cv::ocl::initializeContextFromHandle(
    Context& ctx,
    void* platform,
    void* context,
    void* device
    );

String
cv::ocl::kernelToStr(
    InputArray _kernel,
    int ddepth = -1,
    const char* name = NULL
    );

const char*
cv::ocl::memopTypeToStr(int t);

int
cv::ocl::predictOptimalVectorWidth(
    InputArray src1,
    InputArray src2 = noArray(),
    InputArray src3 = noArray(),
    InputArray src4 = noArray(),
    InputArray src5 = noArray(),
    InputArray src6 = noArray(),
    InputArray src7 = noArray(),
    InputArray src8 = noArray(),
    InputArray src9 = noArray(),
    OclVectorStrategy strat = OCL_VECTOR_DEFAULT
    );

int
cv::ocl::predictOptimalVectorWidthMax(
    InputArray src1,
    InputArray src2 = noArray(),
    InputArray src3 = noArray(),
    InputArray src4 = noArray(),
    InputArray src5 = noArray(),
    InputArray src6 = noArray(),
    InputArray src7 = noArray(),
    InputArray src8 = noArray(),
    InputArray src9 = noArray()
    );

void
cv::ocl::setUseOpenCL(bool flag);

const char*
cv::ocl::typeToStr(int t);

bool
cv::ocl::useOpenCL();

const char*
cv::ocl::vecopTypeToStr(int t);

Detailed Documentation

Global Functions

void
cv::ocl::attachContext(
    const String& platformName,
    void* platformID,
    void* context,
    void* deviceID
    )

Attaches OpenCL context to OpenCV.

OpenCV will check if available OpenCL platform has platformName name, then assign context to OpenCV and call clRetainContext function. The deviceID device will be used as target device and new command queue will be created.

Parameters:

platformName name of OpenCL platform to attach, this string is used to check if platform is available to OpenCV at runtime
platformID ID of platform attached context was created for
context OpenCL context to be attached to OpenCV
deviceID ID of device, must be created from attached context
void
cv::ocl::convertFromBuffer(
    void* cl_mem_buffer,
    size_t step,
    int rows,
    int cols,
    int type,
    UMat& dst
    )

Convert OpenCL buffer to UMat.

OpenCL buffer (cl_mem_buffer) should contain 2D image data, compatible with OpenCV. Memory content is not copied from clBuffer to UMat. Instead, buffer handle assigned to UMat and clRetainMemObject is called.

Parameters:

cl_mem_buffer source clBuffer handle
step num of bytes in single row
rows number of rows
cols number of cols
type OpenCV type of image
dst destination UMat
void
cv::ocl::convertFromImage(
    void* cl_mem_image,
    UMat& dst
    )

Convert OpenCL image2d_t to UMat.

OpenCL image2d_t (cl_mem_image), should be compatible with OpenCV UMat formats. Memory content is copied from image to UMat with clEnqueueCopyImageToBuffer function.

Parameters:

cl_mem_image source image2d_t handle
dst destination UMat