显示OpenCL错误代码的便捷方法?
根据标题,是否有一种方便的方式来显示可读的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错误代码来字符串
能够将'-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";
}
}