OpenCL錯誤碼轉字符串(以中文表示)
錯誤代碼位:0 ~ -19、-30 ~ -68
const char* errorCodeToString(cl_int errCode) {
const char* err = NULL;
switch (errCode) {
case CL_SUCCESS:
err = "CL_SUCCESS:命令成功執行,沒有出現錯誤!";
break;
case CL_DEVICE_NOT_FOUND:
err = "CL_DEVICE_NOT_FOUND:未發現與條件匹配的OpenCL設備!";
break;
case CL_DEVICE_NOT_AVAILABLE:
err = "CL_DEVICE_NOT_AVAILABLE:OpenCL設備目前不可用!";
break;
case CL_COMPILER_NOT_AVAILABLE:
err = "CL_COMPILER_NOT_AVAILABLE:程序由源代碼創建,不過沒有可用的OpenCL C編譯器!";
break;
case CL_MEM_OBJECT_ALLOCATION_FAILURE:
err = "CL_MEM_OBJECT_ALLOCATION_FAILURE:無法爲內存對象或圖像對象分配內存!";
break;
case CL_OUT_OF_RESOURCES:
err = "CL_OUT_OF_RESOURCES:沒有足夠的資源執行命令!";
break;
case CL_OUT_OF_HOST_MEMORY:
err = "CL_OUT_OF_HOST_MEMORY:宿主機上沒有足夠的內存執行命令!";
break;
case CL_PROFILING_INFO_NOT_AVAILABLE:
err = "CL_PROFILING_INFO_NOT_AVAILABLE:無法得到事件的性能評測信息或者命令隊列不支持性能評測!";
break;
case CL_MEM_COPY_OVERLAP:
err = "CL_MEM_COPY_OVERLAP:兩個緩衝區在同一個內存區域重疊!";
break;
case CL_IMAGE_FORMAT_MISMATCH:
err = "CL_IMAGE_FORMAT_MISMATCH:圖像未採用相同的圖像格式!";
break;
case CL_IMAGE_FORMAT_NOT_SUPPORTED:
err = "CL_IMAGE_FORMAT_NOT_SUPPORTED:不支持指定的圖像格式!";
break;
case CL_BUILD_PROGRAM_FAILURE:
err = "CL_BUILD_PROGRAM_FAILURE:無法爲程序構建可執行代碼!";
break;
case CL_MAP_FAILURE:
err = "CL_MAP_FAILURE:內存區域無法映射到宿主機內存!";
break;
case CL_MISALIGNED_SUB_BUFFER_OFFSET:
err = "CL_MISALIGNED_SUB_BUFFER_OFFSET:子緩衝區偏移不對中!";
break;
case CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST:
err = "CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST:等待列表中事件的執行狀態錯誤!";
break;
case CL_COMPILE_PROGRAM_FAILURE:
err = "CL_COMPILE_PROGRAM_FAILURE:編譯程序失敗!";
break;
case CL_LINKER_NOT_AVAILABLE:
err = "CL_LINKER_NOT_AVAILABLE:鏈接器不可用!";
break;
case CL_LINK_PROGRAM_FAILURE:
err = "CL_LINK_PROGRAM_FAILURE:鏈接程序失敗!";
break;
case CL_DEVICE_PARTITION_FAILED:
err = "CL_DEVICE_PARTITION_FAILED:設備分區失敗!";
break;
case CL_KERNEL_ARG_INFO_NOT_AVAILABLE:
err = "CL_KERNEL_ARG_INFO_NOT_AVAILABLE:內核參數信息不可用!";
break;
case CL_INVALID_VALUE:
err = "CL_INVALID_VALUE:命令的一個或多個參數指定了非法值!";
break;
case CL_INVALID_DEVICE_TYPE:
err = "CL_INVALID_DEVICE_TYPE:傳入的設備類型不是合法值!";
break;
case CL_INVALID_PLATFORM:
err = "CL_INVALID_PLATFORM:傳入的平臺不是合法值!";
break;
case CL_INVALID_DEVICE:
err = "CL_INVALID_DEVICE:傳入的設備不是合法值!";
break;
case CL_INVALID_CONTEXT:
err = "CL_INVALID_CONTEXT:傳入的上下文不是合法值!";
break;
case CL_INVALID_QUEUE_PROPERTIES:
err = "CL_INVALID_QUEUE_PROPERTIES:設備不支持命令隊列屬性!";
break;
case CL_INVALID_COMMAND_QUEUE:
err = "CL_INVALID_COMMAND_QUEUE:傳入的命令隊列不是合法值!";
break;
case CL_INVALID_HOST_PTR:
err = "CL_INVALID_HOST_PTR:宿主機指針不合法!";
break;
case CL_INVALID_MEM_OBJECT:
err = "CL_INVALID_MEM_OBJECT:傳入的內存對象不是合法值!";
break;
case CL_INVALID_IMAGE_FORMAT_DESCRIPTOR:
err = "CL_INVALID_IMAGE_FORMAT_DESCRIPTOR:傳入的圖像格式描述符不是合法值!";
break;
case CL_INVALID_IMAGE_SIZE:
err = "CL_INVALID_IMAGE_SIZE:設備不支持這個圖像大小!";
break;
case CL_INVALID_SAMPLER:
err = "CL_INVALID_SAMPLER:傳入的採樣工具不是合法值!";
break;
case CL_INVALID_BINARY:
err = "CL_INVALID_BINARY:傳入了非法的二進制程序!";
break;
case CL_INVALID_BUILD_OPTIONS:
err = "CL_INVALID_BUILD_OPTIONS:一個或多個構建選項不合法!";
break;
case CL_INVALID_PROGRAM:
err = "CL_INVALID_PROGRAM:傳入的程序不是合法值!";
break;
case CL_INVALID_PROGRAM_EXECUTABLE:
err = "CL_INVALID_PROGRAM_EXECUTABLE:程序未能成功地構建命令隊列關聯設備上的一個可執行程序!";
break;
case CL_INVALID_KERNEL_NAME:
err = "CL_INVALID_KERNEL_NAME:程序中不存在指定的內核!";
break;
case CL_INVALID_KERNEL_DEFINITION:
err = "CL_INVALID_KERNEL_DEFINITION:程序源代碼中定義的內核不合法!";
break;
case CL_INVALID_KERNEL:
err = "CL_INVALID_KERNEL:傳入的內核不是合法值!";
break;
case CL_INVALID_ARG_INDEX:
err = "CL_INVALID_ARG_INDEX:參數索引指示的參數對於內核不合法!";
break;
case CL_INVALID_ARG_VALUE:
err = "CL_INVALID_ARG_VALUE:對於一個非局部參數,內核參數值爲NULL;或者對於一個局部參數,內核參數值爲非NULL!";
break;
case CL_INVALID_ARG_SIZE:
err = "CL_INVALID_ARG_SIZE:參數大小與內核參數不一致!";
break;
case CL_INVALID_KERNEL_ARGS:
err = "CL_INVALID_KERNEL_ARGS:一個或多個內核參數未賦值!";
break;
case CL_INVALID_WORK_DIMENSION:
err = "CL_INVALID_WORK_DIMENSION:工作維度值不是介於1~3的一個值!";
break;
case CL_INVALID_WORK_GROUP_SIZE:
err = "CL_INVALID_WORK_GROUP_SIZE:局部或全局工作組大小不合法!";
break;
case CL_INVALID_WORK_ITEM_SIZE:
err = "CL_INVALID_WORK_ITEM_SIZE:一個或多個工作項大小超出了設備支持的最大大小!";
break;
case CL_INVALID_GLOBAL_OFFSET:
err = "CL_INVALID_GLOBAL_OFFSET:全局偏移量超出了所支持的界限!";
break;
case CL_INVALID_EVENT_WAIT_LIST:
err = "CL_INVALID_EVENT_WAIT_LIST:提供的等待列表大小不合法或者其中包含非事件!";
break;
case CL_INVALID_EVENT:
err = "CL_INVALID_EVENT:傳入的事件不是一個合法值!";
break;
case CL_INVALID_OPERATION:
err = "CL_INVALID_OPERATION:執行命令導致出現一個不合法的操作!";
break;
case CL_INVALID_GL_OBJECT:
err = "CL_INVALID_GL_OBJECT:OpenGL引用的對象存在問題!";
break;
case CL_INVALID_BUFFER_SIZE:
err = "CL_INVALID_BUFFER_SIZE:指定的緩衝區大小越界!";
break;
case CL_INVALID_MIP_LEVEL:
err = "CL_INVALID_MIP_LEVEL:爲OpenGL紋理指定的mipmap級別對於OpenGL對象不合法!";
break;
case CL_INVALID_GLOBAL_WORK_SIZE:
err = "CL_INVALID_GLOBAL_WORK_SIZE:傳入的全局工作大小不合法,可能爲0或者超出了設備支持的大小!";
break;
case CL_INVALID_PROPERTY:
err = "CL_INVALID_PROPERTY:傳入無效的屬性!";
break;
case CL_INVALID_IMAGE_DESCRIPTOR:
err = "CL_INVALID_IMAGE_DESCRIPTOR:傳入無效的圖像描述符!";
break;
case CL_INVALID_COMPILER_OPTIONS:
err = "CL_INVALID_COMPILER_OPTIONS:傳入無效的編譯器選項!";
break;
case CL_INVALID_LINKER_OPTIONS:
err = "CL_INVALID_LINKER_OPTIONS:傳入無效的鏈接器選項!";
break;
case CL_INVALID_DEVICE_PARTITION_COUNT:
err = "CL_INVALID_DEVICE_PARTITION_COUNT:傳入無效的設備分區計數!";
break;
default:
err = "未知錯誤";
}
return err;
}