显示OpenCL错误代码的便捷方法?

显示OpenCL错误代码的便捷方法?,opencl,error-code,Opencl,Error Code,根据标题,是否有一种方便的方式来显示可读的OpenCL错误代码 能够将'-1000'这样的代码转换为名称将节省大量浏览错误代码的时间。这就是我目前所做的。我相信OpenCL1.2的错误列表是完整的 cl_int result = clSomeFunction(); if(result != CL_SUCCESS) std::cerr << getErrorString(result) << std::endl; 对于任何需要不同版本OpenCL错误代码来字符串

根据标题,是否有一种方便的方式来显示可读的OpenCL错误代码


能够将'-1000'这样的代码转换为名称将节省大量浏览错误代码的时间。

这就是我目前所做的。我相信OpenCL1.2的错误列表是完整的

cl_int result = clSomeFunction();

if(result != CL_SUCCESS)
    std::cerr << getErrorString(result) << std::endl;

对于任何需要不同版本OpenCL错误代码来字符串的人来说,一个小脚本可以帮助你

$ ./clext.py /directory/to/opencl/headers
例如,要为OpenCL2.2创建字符串帮助函数的错误代码,可以运行

$ ./clext.py ~/Developments/OpenCL-Headers/opencl22/CL
将在当前目录中创建文件
clext.h

然后,您可以在项目中包含此文件,并使用调用
const char*clGetErrorString(int errorCode)
从错误代码中获取错误字符串

以下是为OpenCL2.2生成的文件
clext.h
的内容

// auto generated from ./clext.py
#ifndef __CL_EXT__
#define __CL_EXT__


#include <stdio.h>


/*
 * Given a cl code and return a string represenation
 */
const char* clGetErrorString(int errorCode) {
    switch (errorCode) {
        case 0: return "CL_SUCCESS";
        case -1: return "CL_DEVICE_NOT_FOUND";
        case -2: return "CL_DEVICE_NOT_AVAILABLE";
        case -3: return "CL_COMPILER_NOT_AVAILABLE";
        case -4: return "CL_MEM_OBJECT_ALLOCATION_FAILURE";
        case -5: return "CL_OUT_OF_RESOURCES";
        case -6: return "CL_OUT_OF_HOST_MEMORY";
        case -7: return "CL_PROFILING_INFO_NOT_AVAILABLE";
        case -8: return "CL_MEM_COPY_OVERLAP";
        case -9: return "CL_IMAGE_FORMAT_MISMATCH";
        case -10: return "CL_IMAGE_FORMAT_NOT_SUPPORTED";
        case -12: return "CL_MAP_FAILURE";
        case -13: return "CL_MISALIGNED_SUB_BUFFER_OFFSET";
        case -14: return "CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST";
        case -15: return "CL_COMPILE_PROGRAM_FAILURE";
        case -16: return "CL_LINKER_NOT_AVAILABLE";
        case -17: return "CL_LINK_PROGRAM_FAILURE";
        case -18: return "CL_DEVICE_PARTITION_FAILED";
        case -19: return "CL_KERNEL_ARG_INFO_NOT_AVAILABLE";
        case -30: return "CL_INVALID_VALUE";
        case -31: return "CL_INVALID_DEVICE_TYPE";
        case -32: return "CL_INVALID_PLATFORM";
        case -33: return "CL_INVALID_DEVICE";
        case -34: return "CL_INVALID_CONTEXT";
        case -35: return "CL_INVALID_QUEUE_PROPERTIES";
        case -36: return "CL_INVALID_COMMAND_QUEUE";
        case -37: return "CL_INVALID_HOST_PTR";
        case -38: return "CL_INVALID_MEM_OBJECT";
        case -39: return "CL_INVALID_IMAGE_FORMAT_DESCRIPTOR";
        case -40: return "CL_INVALID_IMAGE_SIZE";
        case -41: return "CL_INVALID_SAMPLER";
        case -42: return "CL_INVALID_BINARY";
        case -43: return "CL_INVALID_BUILD_OPTIONS";
        case -44: return "CL_INVALID_PROGRAM";
        case -45: return "CL_INVALID_PROGRAM_EXECUTABLE";
        case -46: return "CL_INVALID_KERNEL_NAME";
        case -47: return "CL_INVALID_KERNEL_DEFINITION";
        case -48: return "CL_INVALID_KERNEL";
        case -49: return "CL_INVALID_ARG_INDEX";
        case -50: return "CL_INVALID_ARG_VALUE";
        case -51: return "CL_INVALID_ARG_SIZE";
        case -52: return "CL_INVALID_KERNEL_ARGS";
        case -53: return "CL_INVALID_WORK_DIMENSION";
        case -54: return "CL_INVALID_WORK_GROUP_SIZE";
        case -55: return "CL_INVALID_WORK_ITEM_SIZE";
        case -56: return "CL_INVALID_GLOBAL_OFFSET";
        case -57: return "CL_INVALID_EVENT_WAIT_LIST";
        case -58: return "CL_INVALID_EVENT";
        case -59: return "CL_INVALID_OPERATION";
        case -60: return "CL_INVALID_GL_OBJECT";
        case -61: return "CL_INVALID_BUFFER_SIZE";
        case -62: return "CL_INVALID_MIP_LEVEL";
        case -63: return "CL_INVALID_GLOBAL_WORK_SIZE";
        case -64: return "CL_INVALID_PROPERTY";
        case -65: return "CL_INVALID_IMAGE_DESCRIPTOR";
        case -66: return "CL_INVALID_COMPILER_OPTIONS";
        case -67: return "CL_INVALID_LINKER_OPTIONS";
        case -68: return "CL_INVALID_DEVICE_PARTITION_COUNT";
        case -69: return "CL_INVALID_PIPE_SIZE";
        case -70: return "CL_INVALID_DEVICE_QUEUE";
        case -71: return "CL_INVALID_SPEC_ID";
        case -72: return "CL_MAX_SIZE_RESTRICTION_EXCEEDED";
        case -1002: return "CL_INVALID_D3D10_DEVICE_KHR";
        case -1003: return "CL_INVALID_D3D10_RESOURCE_KHR";
        case -1004: return "CL_D3D10_RESOURCE_ALREADY_ACQUIRED_KHR";
        case -1005: return "CL_D3D10_RESOURCE_NOT_ACQUIRED_KHR";
        case -1006: return "CL_INVALID_D3D11_DEVICE_KHR";
        case -1007: return "CL_INVALID_D3D11_RESOURCE_KHR";
        case -1008: return "CL_D3D11_RESOURCE_ALREADY_ACQUIRED_KHR";
        case -1009: return "CL_D3D11_RESOURCE_NOT_ACQUIRED_KHR";
        case -1010: return "CL_INVALID_DX9_MEDIA_ADAPTER_KHR";
        case -1011: return "CL_INVALID_DX9_MEDIA_SURFACE_KHR";
        case -1012: return "CL_DX9_MEDIA_SURFACE_ALREADY_ACQUIRED_KHR";
        case -1013: return "CL_DX9_MEDIA_SURFACE_NOT_ACQUIRED_KHR";
        case -1093: return "CL_INVALID_EGL_OBJECT_KHR";
        case -1092: return "CL_EGL_RESOURCE_NOT_ACQUIRED_KHR";
        case -1001: return "CL_PLATFORM_NOT_FOUND_KHR";
        case -1057: return "CL_DEVICE_PARTITION_FAILED_EXT";
        case -1058: return "CL_INVALID_PARTITION_COUNT_EXT";
        case -1059: return "CL_INVALID_PARTITION_NAME_EXT";
        case -1094: return "CL_INVALID_ACCELERATOR_INTEL";
        case -1095: return "CL_INVALID_ACCELERATOR_TYPE_INTEL";
        case -1096: return "CL_INVALID_ACCELERATOR_DESCRIPTOR_INTEL";
        case -1097: return "CL_ACCELERATOR_TYPE_NOT_SUPPORTED_INTEL";
        case -1000: return "CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR";
        case -1098: return "CL_INVALID_VA_API_MEDIA_ADAPTER_INTEL";
        case -1099: return "CL_INVALID_VA_API_MEDIA_SURFACE_INTEL";
        case -1100: return "CL_VA_API_MEDIA_SURFACE_ALREADY_ACQUIRED_INTEL";
        case -1101: return "CL_VA_API_MEDIA_SURFACE_NOT_ACQUIRED_INTEL";
        default: return "CL_UNKNOWN_ERROR";
    }
}

/*
 * check cl error, if not CL_SUCCESS, print to stderr
 */
int clCheckError(int errorCode) {
    if (errorCode != 0) {
        fprintf(stderr, "%s\n", clGetErrorString(errorCode));
    }
    return errorCode;
}

#endif /* __CL_EXT__*/
//从自动生成。/clext.py
#ifndef_uucl_uext__
#定义uu CL_uext__
#包括
/*
*给定cl代码并返回字符串表示
*/
常量字符*clGetErrorString(int errorCode){
开关(错误代码){
案例0:返回“CL_成功”;
案例1:返回“未找到CL_设备”;
案例2:返回“CL_设备不可用”;
案例3:返回“CL_编译器不可用”;
案例4:返回“CL\u MEM\u OBJECT\u ALLOCATION\u FAILURE”;
案例5:返回“CL_OUT_OF_RESOURCES”;
案例6:返回“CL_OUT_OF_HOST_MEMORY”;
案例7:返回“CL_分析信息不可用”;
案例8:返回“CL_MEM_COPY_OVERLAP”;
案例9:返回“CL\U图像\U格式\U不匹配”;
案例10:返回“不支持CL_图像格式”;
案例12:返回“CL_映射失败”;
案例13:返回“CL\u未对齐\u子\u缓冲区\u偏移”;
案例14:返回“等待列表中事件的执行状态错误”;
案例15:返回“CL_编译程序失败”;
案例16:返回“CL_链接器不可用”;
案例17:返回“CL_链接程序失败”;
案例18:返回“CL_设备分区失败”;
案例19:返回“CL\u内核\u参数\u信息\u不可用”;
案例-30:返回“CL_无效值”;
案例31:返回“CL\U无效\U设备\U类型”;
案例32:返回“CL\U平台无效”;
案例33:返回“CL_无效装置”;
案例34:返回“CL_无效上下文”;
案例35:返回“CL\u无效队列\u属性”;
案例36:返回“CL_无效命令_队列”;
案例37:返回“CL\U无效\U主机\U PTR”;
案例38:返回“CL_无效成员对象”;
案例39:返回“CL\U无效\U图像\U格式\U描述符”;
案例-40:返回“CL\u无效\u图像\u大小”;
案例41:返回“CL_无效采样器”;
案例42:返回“CL\U无效\U二进制”;
案例43:返回“CL_无效的构建选项”;
案例44:返回“CLU无效程序”;
案例-45:返回“CL\u无效\u程序\u可执行文件”;
案例46:返回“CL\u无效\u内核\u名称”;
案例47:返回“CL\u无效\u内核\u定义”;
案例-48:返回“CL\u无效\u内核”;
案例49:返回“CL_无效参数_索引”;
案例50:返回“CL_无效参数值”;
案例51:返回“CL_无效参数_大小”;
案例52:返回“CL\u无效\u内核\u参数”;
案例53:返回“CL\U无效\U工作\U维度”;
案例54:返回“CL\U无效\U工作\U组大小”;
案例55:返回“CL\U无效\U工作\U项目\U大小”;
案例56:返回“CL\U无效\U全局\U偏移”;
案例57:返回“CL\U无效事件等待列表”;
案例58:返回“CL_无效事件”;
案例59:返回“CLU无效操作”;
案例-60:返回“CL\U无效\U GL\U对象”;
案例61:返回“CL\U无效\U缓冲区大小”;
案例62:返回“CL\U无效\U MIP\U级别”;
案例63:返回“CL\U无效\U全局\U工作大小”;
案例64:返回“CL_无效属性”;
案例65:返回“CL\U无效\U图像\U描述符”;
案例66:返回“CL\u无效\u编译器\u选项”;
案例67:返回“CL_无效链接器_选项”;
案例68:返回“CL\U无效\U设备\U分区\U计数”;
案例69:返回“CL_无效的管道尺寸”;
案例70:返回“CL\U无效\U设备\U队列”;
案例71:返回“CL\U规格ID无效”;
案例72:返回“超过最大尺寸限制”;
案例-1002:返回“CL\U无效\U D3D10\U设备\U KHR”;
案例-1003:返回“CL\U无效\U D3D10\U资源\U KHR”;
案例-1004:返回“已获得的资源”;
案例-1005:返回“未获得资源”一词;
案例-1006:返回“CL\U无效\U D3D11\U设备\U KHR”;
案例-1007:返回“CL\U无效\U D3D11\U资源\U KHR”;
案例-1008:返回“已获得的资源”;
案例-1009:返回“未获得资源”一词;
案例1010:返回“CL\U无效\U DX9\U媒体\U适配器\U KHR”;
案例1011:返回“CL\U无效\U DX9\U介质\U表面\U KHR”;
案例1012:返回“CL_DX9_介质_表面_已_获得_KHR”;
案例1013:返回“CL_DX9_介质_表面_未获得_KHR”;
案例-1093:返回“CL_无效对象”;
案例-1092:返回“未获得资源”;
案例-1001:返回“CL_平台未找到”;
案例-1057:返回“CL\U设备\U分区\U失败\U扩展”;
案例-1058:返回“CL\U无效分区\U计数\U扩展”;
案例-1059:返回“CL\U无效分区\U名称\U扩展”;
案例-1094:返回“CL\u无效\u加速器\u英特尔”;
案例-1095:返回“CL\u无效\u加速器\u类型\u英特尔”;
案例-1096:返回“CL\u无效\u加速器\u描述符\u英特尔”;
案例-1097:返回“CL\U加速器类型\U不受支持\U英特尔”;
案例1000:返回“CL\U无效\U GL\U共享组\U参考\U KHR”;
案例-1098:返回“CL\u无效\u VA\u API\u媒体\u适配器\u英特尔”;
案例-1099:返回“CL\u无效\u VA\u API\u媒体\u表面\u英特尔”;
案例-1100:返回“CL_VA_API_MEDIA_SURFACE_Haven_ACQUIRED_INTEL”;
案例-1101:retu
// auto generated from ./clext.py
#ifndef __CL_EXT__
#define __CL_EXT__


#include <stdio.h>


/*
 * Given a cl code and return a string represenation
 */
const char* clGetErrorString(int errorCode) {
    switch (errorCode) {
        case 0: return "CL_SUCCESS";
        case -1: return "CL_DEVICE_NOT_FOUND";
        case -2: return "CL_DEVICE_NOT_AVAILABLE";
        case -3: return "CL_COMPILER_NOT_AVAILABLE";
        case -4: return "CL_MEM_OBJECT_ALLOCATION_FAILURE";
        case -5: return "CL_OUT_OF_RESOURCES";
        case -6: return "CL_OUT_OF_HOST_MEMORY";
        case -7: return "CL_PROFILING_INFO_NOT_AVAILABLE";
        case -8: return "CL_MEM_COPY_OVERLAP";
        case -9: return "CL_IMAGE_FORMAT_MISMATCH";
        case -10: return "CL_IMAGE_FORMAT_NOT_SUPPORTED";
        case -12: return "CL_MAP_FAILURE";
        case -13: return "CL_MISALIGNED_SUB_BUFFER_OFFSET";
        case -14: return "CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST";
        case -15: return "CL_COMPILE_PROGRAM_FAILURE";
        case -16: return "CL_LINKER_NOT_AVAILABLE";
        case -17: return "CL_LINK_PROGRAM_FAILURE";
        case -18: return "CL_DEVICE_PARTITION_FAILED";
        case -19: return "CL_KERNEL_ARG_INFO_NOT_AVAILABLE";
        case -30: return "CL_INVALID_VALUE";
        case -31: return "CL_INVALID_DEVICE_TYPE";
        case -32: return "CL_INVALID_PLATFORM";
        case -33: return "CL_INVALID_DEVICE";
        case -34: return "CL_INVALID_CONTEXT";
        case -35: return "CL_INVALID_QUEUE_PROPERTIES";
        case -36: return "CL_INVALID_COMMAND_QUEUE";
        case -37: return "CL_INVALID_HOST_PTR";
        case -38: return "CL_INVALID_MEM_OBJECT";
        case -39: return "CL_INVALID_IMAGE_FORMAT_DESCRIPTOR";
        case -40: return "CL_INVALID_IMAGE_SIZE";
        case -41: return "CL_INVALID_SAMPLER";
        case -42: return "CL_INVALID_BINARY";
        case -43: return "CL_INVALID_BUILD_OPTIONS";
        case -44: return "CL_INVALID_PROGRAM";
        case -45: return "CL_INVALID_PROGRAM_EXECUTABLE";
        case -46: return "CL_INVALID_KERNEL_NAME";
        case -47: return "CL_INVALID_KERNEL_DEFINITION";
        case -48: return "CL_INVALID_KERNEL";
        case -49: return "CL_INVALID_ARG_INDEX";
        case -50: return "CL_INVALID_ARG_VALUE";
        case -51: return "CL_INVALID_ARG_SIZE";
        case -52: return "CL_INVALID_KERNEL_ARGS";
        case -53: return "CL_INVALID_WORK_DIMENSION";
        case -54: return "CL_INVALID_WORK_GROUP_SIZE";
        case -55: return "CL_INVALID_WORK_ITEM_SIZE";
        case -56: return "CL_INVALID_GLOBAL_OFFSET";
        case -57: return "CL_INVALID_EVENT_WAIT_LIST";
        case -58: return "CL_INVALID_EVENT";
        case -59: return "CL_INVALID_OPERATION";
        case -60: return "CL_INVALID_GL_OBJECT";
        case -61: return "CL_INVALID_BUFFER_SIZE";
        case -62: return "CL_INVALID_MIP_LEVEL";
        case -63: return "CL_INVALID_GLOBAL_WORK_SIZE";
        case -64: return "CL_INVALID_PROPERTY";
        case -65: return "CL_INVALID_IMAGE_DESCRIPTOR";
        case -66: return "CL_INVALID_COMPILER_OPTIONS";
        case -67: return "CL_INVALID_LINKER_OPTIONS";
        case -68: return "CL_INVALID_DEVICE_PARTITION_COUNT";
        case -69: return "CL_INVALID_PIPE_SIZE";
        case -70: return "CL_INVALID_DEVICE_QUEUE";
        case -71: return "CL_INVALID_SPEC_ID";
        case -72: return "CL_MAX_SIZE_RESTRICTION_EXCEEDED";
        case -1002: return "CL_INVALID_D3D10_DEVICE_KHR";
        case -1003: return "CL_INVALID_D3D10_RESOURCE_KHR";
        case -1004: return "CL_D3D10_RESOURCE_ALREADY_ACQUIRED_KHR";
        case -1005: return "CL_D3D10_RESOURCE_NOT_ACQUIRED_KHR";
        case -1006: return "CL_INVALID_D3D11_DEVICE_KHR";
        case -1007: return "CL_INVALID_D3D11_RESOURCE_KHR";
        case -1008: return "CL_D3D11_RESOURCE_ALREADY_ACQUIRED_KHR";
        case -1009: return "CL_D3D11_RESOURCE_NOT_ACQUIRED_KHR";
        case -1010: return "CL_INVALID_DX9_MEDIA_ADAPTER_KHR";
        case -1011: return "CL_INVALID_DX9_MEDIA_SURFACE_KHR";
        case -1012: return "CL_DX9_MEDIA_SURFACE_ALREADY_ACQUIRED_KHR";
        case -1013: return "CL_DX9_MEDIA_SURFACE_NOT_ACQUIRED_KHR";
        case -1093: return "CL_INVALID_EGL_OBJECT_KHR";
        case -1092: return "CL_EGL_RESOURCE_NOT_ACQUIRED_KHR";
        case -1001: return "CL_PLATFORM_NOT_FOUND_KHR";
        case -1057: return "CL_DEVICE_PARTITION_FAILED_EXT";
        case -1058: return "CL_INVALID_PARTITION_COUNT_EXT";
        case -1059: return "CL_INVALID_PARTITION_NAME_EXT";
        case -1094: return "CL_INVALID_ACCELERATOR_INTEL";
        case -1095: return "CL_INVALID_ACCELERATOR_TYPE_INTEL";
        case -1096: return "CL_INVALID_ACCELERATOR_DESCRIPTOR_INTEL";
        case -1097: return "CL_ACCELERATOR_TYPE_NOT_SUPPORTED_INTEL";
        case -1000: return "CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR";
        case -1098: return "CL_INVALID_VA_API_MEDIA_ADAPTER_INTEL";
        case -1099: return "CL_INVALID_VA_API_MEDIA_SURFACE_INTEL";
        case -1100: return "CL_VA_API_MEDIA_SURFACE_ALREADY_ACQUIRED_INTEL";
        case -1101: return "CL_VA_API_MEDIA_SURFACE_NOT_ACQUIRED_INTEL";
        default: return "CL_UNKNOWN_ERROR";
    }
}

/*
 * check cl error, if not CL_SUCCESS, print to stderr
 */
int clCheckError(int errorCode) {
    if (errorCode != 0) {
        fprintf(stderr, "%s\n", clGetErrorString(errorCode));
    }
    return errorCode;
}

#endif /* __CL_EXT__*/
#define CaseReturnString(x) case x: return #x; char *opencl_errstr(cl_int err) { switch (err) { CaseReturnString(CL_SUCCESS ) CaseReturnString(CL_DEVICE_NOT_FOUND ) CaseReturnString(CL_DEVICE_NOT_AVAILABLE ) CaseReturnString(CL_COMPILER_NOT_AVAILABLE ) CaseReturnString(CL_MEM_OBJECT_ALLOCATION_FAILURE ) CaseReturnString(CL_OUT_OF_RESOURCES ) CaseReturnString(CL_OUT_OF_HOST_MEMORY ) CaseReturnString(CL_PROFILING_INFO_NOT_AVAILABLE ) CaseReturnString(CL_MEM_COPY_OVERLAP ) CaseReturnString(CL_IMAGE_FORMAT_MISMATCH ) CaseReturnString(CL_IMAGE_FORMAT_NOT_SUPPORTED ) CaseReturnString(CL_BUILD_PROGRAM_FAILURE ) CaseReturnString(CL_MAP_FAILURE ) CaseReturnString(CL_MISALIGNED_SUB_BUFFER_OFFSET ) CaseReturnString(CL_COMPILE_PROGRAM_FAILURE ) CaseReturnString(CL_LINKER_NOT_AVAILABLE ) CaseReturnString(CL_LINK_PROGRAM_FAILURE ) CaseReturnString(CL_DEVICE_PARTITION_FAILED ) CaseReturnString(CL_KERNEL_ARG_INFO_NOT_AVAILABLE ) CaseReturnString(CL_INVALID_VALUE ) CaseReturnString(CL_INVALID_DEVICE_TYPE ) CaseReturnString(CL_INVALID_PLATFORM ) CaseReturnString(CL_INVALID_DEVICE ) CaseReturnString(CL_INVALID_CONTEXT ) CaseReturnString(CL_INVALID_QUEUE_PROPERTIES ) CaseReturnString(CL_INVALID_COMMAND_QUEUE ) CaseReturnString(CL_INVALID_HOST_PTR ) CaseReturnString(CL_INVALID_MEM_OBJECT ) CaseReturnString(CL_INVALID_IMAGE_FORMAT_DESCRIPTOR) CaseReturnString(CL_INVALID_IMAGE_SIZE ) CaseReturnString(CL_INVALID_SAMPLER ) CaseReturnString(CL_INVALID_BINARY ) CaseReturnString(CL_INVALID_BUILD_OPTIONS ) CaseReturnString(CL_INVALID_PROGRAM ) CaseReturnString(CL_INVALID_PROGRAM_EXECUTABLE ) CaseReturnString(CL_INVALID_KERNEL_NAME ) CaseReturnString(CL_INVALID_KERNEL_DEFINITION ) CaseReturnString(CL_INVALID_KERNEL ) CaseReturnString(CL_INVALID_ARG_INDEX ) CaseReturnString(CL_INVALID_ARG_VALUE ) CaseReturnString(CL_INVALID_ARG_SIZE ) CaseReturnString(CL_INVALID_KERNEL_ARGS ) CaseReturnString(CL_INVALID_WORK_DIMENSION ) CaseReturnString(CL_INVALID_WORK_GROUP_SIZE ) CaseReturnString(CL_INVALID_WORK_ITEM_SIZE ) CaseReturnString(CL_INVALID_GLOBAL_OFFSET ) CaseReturnString(CL_INVALID_EVENT_WAIT_LIST ) CaseReturnString(CL_INVALID_EVENT ) CaseReturnString(CL_INVALID_OPERATION ) CaseReturnString(CL_INVALID_GL_OBJECT ) CaseReturnString(CL_INVALID_BUFFER_SIZE ) CaseReturnString(CL_INVALID_MIP_LEVEL ) CaseReturnString(CL_INVALID_GLOBAL_WORK_SIZE ) CaseReturnString(CL_INVALID_PROPERTY ) CaseReturnString(CL_INVALID_IMAGE_DESCRIPTOR ) CaseReturnString(CL_INVALID_COMPILER_OPTIONS ) CaseReturnString(CL_INVALID_LINKER_OPTIONS ) CaseReturnString(CL_INVALID_DEVICE_PARTITION_COUNT ) default: return "Unknown OpenCL error code"; } }