Skip to content

Commit 31aa182

Browse files
committed
GPU OpenCL: Add more human readable error codes, shorten code
1 parent 3102627 commit 31aa182

File tree

1 file changed

+68
-96
lines changed

1 file changed

+68
-96
lines changed

GPU/GPUTracking/Base/opencl/GPUReconstructionOCL.cxx

Lines changed: 68 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414

1515
#include "GPUReconstructionOCLIncludesHost.h"
1616

17+
#include <map>
18+
1719
static_assert(std::is_convertible<cl_event, void*>::value, "OpenCL event type incompatible to deviceEvent");
1820

1921
#define GPUErrorReturn(...) \
@@ -586,100 +588,70 @@ int32_t GPUReconstructionOCLBackend::GetOCLPrograms()
586588

587589
const char* GPUReconstructionOCLBackend::convertErrorToString(int32_t errorcode)
588590
{
589-
switch (errorcode) {
590-
case CL_SUCCESS:
591-
return "Success!";
592-
case CL_DEVICE_NOT_FOUND:
593-
return "Device not found.";
594-
case CL_DEVICE_NOT_AVAILABLE:
595-
return "Device not available";
596-
case CL_COMPILER_NOT_AVAILABLE:
597-
return "Compiler not available";
598-
case CL_MEM_OBJECT_ALLOCATION_FAILURE:
599-
return "Memory object allocation failure";
600-
case CL_OUT_OF_RESOURCES:
601-
return "Out of resources";
602-
case CL_OUT_OF_HOST_MEMORY:
603-
return "Out of host memory";
604-
case CL_PROFILING_INFO_NOT_AVAILABLE:
605-
return "Profiling information not available";
606-
case CL_MEM_COPY_OVERLAP:
607-
return "Memory copy overlap";
608-
case CL_IMAGE_FORMAT_MISMATCH:
609-
return "Image format mismatch";
610-
case CL_IMAGE_FORMAT_NOT_SUPPORTED:
611-
return "Image format not supported";
612-
case CL_BUILD_PROGRAM_FAILURE:
613-
return "Program build failure";
614-
case CL_MAP_FAILURE:
615-
return "Map failure";
616-
case CL_INVALID_VALUE:
617-
return "Invalid value";
618-
case CL_INVALID_DEVICE_TYPE:
619-
return "Invalid device type";
620-
case CL_INVALID_PLATFORM:
621-
return "Invalid platform";
622-
case CL_INVALID_DEVICE:
623-
return "Invalid device";
624-
case CL_INVALID_CONTEXT:
625-
return "Invalid context";
626-
case CL_INVALID_QUEUE_PROPERTIES:
627-
return "Invalid queue properties";
628-
case CL_INVALID_COMMAND_QUEUE:
629-
return "Invalid command queue";
630-
case CL_INVALID_HOST_PTR:
631-
return "Invalid host pointer";
632-
case CL_INVALID_MEM_OBJECT:
633-
return "Invalid memory object";
634-
case CL_INVALID_IMAGE_FORMAT_DESCRIPTOR:
635-
return "Invalid image format descriptor";
636-
case CL_INVALID_IMAGE_SIZE:
637-
return "Invalid image size";
638-
case CL_INVALID_SAMPLER:
639-
return "Invalid sampler";
640-
case CL_INVALID_BINARY:
641-
return "Invalid binary";
642-
case CL_INVALID_BUILD_OPTIONS:
643-
return "Invalid build options";
644-
case CL_INVALID_PROGRAM:
645-
return "Invalid program";
646-
case CL_INVALID_PROGRAM_EXECUTABLE:
647-
return "Invalid program executable";
648-
case CL_INVALID_KERNEL_NAME:
649-
return "Invalid kernel name";
650-
case CL_INVALID_KERNEL_DEFINITION:
651-
return "Invalid kernel definition";
652-
case CL_INVALID_KERNEL:
653-
return "Invalid kernel";
654-
case CL_INVALID_ARG_INDEX:
655-
return "Invalid argument index";
656-
case CL_INVALID_ARG_VALUE:
657-
return "Invalid argument value";
658-
case CL_INVALID_ARG_SIZE:
659-
return "Invalid argument size";
660-
case CL_INVALID_KERNEL_ARGS:
661-
return "Invalid kernel arguments";
662-
case CL_INVALID_WORK_DIMENSION:
663-
return "Invalid work dimension";
664-
case CL_INVALID_WORK_GROUP_SIZE:
665-
return "Invalid work group size";
666-
case CL_INVALID_WORK_ITEM_SIZE:
667-
return "Invalid work item size";
668-
case CL_INVALID_GLOBAL_OFFSET:
669-
return "Invalid global offset";
670-
case CL_INVALID_EVENT_WAIT_LIST:
671-
return "Invalid event wait list";
672-
case CL_INVALID_EVENT:
673-
return "Invalid event";
674-
case CL_INVALID_OPERATION:
675-
return "Invalid operation";
676-
case CL_INVALID_GL_OBJECT:
677-
return "Invalid OpenGL object";
678-
case CL_INVALID_BUFFER_SIZE:
679-
return "Invalid buffer size";
680-
case CL_INVALID_MIP_LEVEL:
681-
return "Invalid mip-map level";
682-
default:
683-
return "Unknown Errorcode";
684-
}
591+
static const std::map<cl_int, const char*> error_map = {
592+
{CL_SUCCESS, "CL_SUCCESS"},
593+
{CL_DEVICE_NOT_FOUND, "CL_DEVICE_NOT_FOUND"},
594+
{CL_DEVICE_NOT_AVAILABLE, "CL_DEVICE_NOT_AVAILABLE"},
595+
{CL_COMPILER_NOT_AVAILABLE, "CL_COMPILER_NOT_AVAILABLE"},
596+
{CL_MEM_OBJECT_ALLOCATION_FAILURE, "CL_MEM_OBJECT_ALLOCATION_FAILURE"},
597+
{CL_OUT_OF_RESOURCES, "CL_OUT_OF_RESOURCES"},
598+
{CL_OUT_OF_HOST_MEMORY, "CL_OUT_OF_HOST_MEMORY"},
599+
{CL_PROFILING_INFO_NOT_AVAILABLE, "CL_PROFILING_INFO_NOT_AVAILABLE"},
600+
{CL_MEM_COPY_OVERLAP, "CL_MEM_COPY_OVERLAP"},
601+
{CL_IMAGE_FORMAT_MISMATCH, "CL_IMAGE_FORMAT_MISMATCH"},
602+
{CL_IMAGE_FORMAT_NOT_SUPPORTED, "CL_IMAGE_FORMAT_NOT_SUPPORTED"},
603+
{CL_BUILD_PROGRAM_FAILURE, "CL_BUILD_PROGRAM_FAILURE"},
604+
{CL_MAP_FAILURE, "CL_MAP_FAILURE"},
605+
{CL_MISALIGNED_SUB_BUFFER_OFFSET, "CL_MISALIGNED_SUB_BUFFER_OFFSET"},
606+
{CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST, "CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST"},
607+
{CL_COMPILE_PROGRAM_FAILURE, "CL_COMPILE_PROGRAM_FAILURE"},
608+
{CL_LINKER_NOT_AVAILABLE, "CL_LINKER_NOT_AVAILABLE"},
609+
{CL_LINK_PROGRAM_FAILURE, "CL_LINK_PROGRAM_FAILURE"},
610+
{CL_DEVICE_PARTITION_FAILED, "CL_DEVICE_PARTITION_FAILED"},
611+
{CL_KERNEL_ARG_INFO_NOT_AVAILABLE, "CL_KERNEL_ARG_INFO_NOT_AVAILABLE"},
612+
{CL_INVALID_VALUE, "CL_INVALID_VALUE"},
613+
{CL_INVALID_DEVICE_TYPE, "CL_INVALID_DEVICE_TYPE"},
614+
{CL_INVALID_PLATFORM, "CL_INVALID_PLATFORM"},
615+
{CL_INVALID_DEVICE, "CL_INVALID_DEVICE"},
616+
{CL_INVALID_CONTEXT, "CL_INVALID_CONTEXT"},
617+
{CL_INVALID_QUEUE_PROPERTIES, "CL_INVALID_QUEUE_PROPERTIES"},
618+
{CL_INVALID_COMMAND_QUEUE, "CL_INVALID_COMMAND_QUEUE"},
619+
{CL_INVALID_HOST_PTR, "CL_INVALID_HOST_PTR"},
620+
{CL_INVALID_MEM_OBJECT, "CL_INVALID_MEM_OBJECT"},
621+
{CL_INVALID_IMAGE_FORMAT_DESCRIPTOR, "CL_INVALID_IMAGE_FORMAT_DESCRIPTOR"},
622+
{CL_INVALID_IMAGE_SIZE, "CL_INVALID_IMAGE_SIZE"},
623+
{CL_INVALID_SAMPLER, "CL_INVALID_SAMPLER"},
624+
{CL_INVALID_BINARY, "CL_INVALID_BINARY"},
625+
{CL_INVALID_BUILD_OPTIONS, "CL_INVALID_BUILD_OPTIONS"},
626+
{CL_INVALID_PROGRAM, "CL_INVALID_PROGRAM"},
627+
{CL_INVALID_PROGRAM_EXECUTABLE, "CL_INVALID_PROGRAM_EXECUTABLE"},
628+
{CL_INVALID_KERNEL_NAME, "CL_INVALID_KERNEL_NAME"},
629+
{CL_INVALID_KERNEL_DEFINITION, "CL_INVALID_KERNEL_DEFINITION"},
630+
{CL_INVALID_KERNEL, "CL_INVALID_KERNEL"},
631+
{CL_INVALID_ARG_INDEX, "CL_INVALID_ARG_INDEX"},
632+
{CL_INVALID_ARG_VALUE, "CL_INVALID_ARG_VALUE"},
633+
{CL_INVALID_ARG_SIZE, "CL_INVALID_ARG_SIZE"},
634+
{CL_INVALID_KERNEL_ARGS, "CL_INVALID_KERNEL_ARGS"},
635+
{CL_INVALID_WORK_DIMENSION, "CL_INVALID_WORK_DIMENSION"},
636+
{CL_INVALID_WORK_GROUP_SIZE, "CL_INVALID_WORK_GROUP_SIZE"},
637+
{CL_INVALID_WORK_ITEM_SIZE, "CL_INVALID_WORK_ITEM_SIZE"},
638+
{CL_INVALID_GLOBAL_OFFSET, "CL_INVALID_GLOBAL_OFFSET"},
639+
{CL_INVALID_EVENT_WAIT_LIST, "CL_INVALID_EVENT_WAIT_LIST"},
640+
{CL_INVALID_EVENT, "CL_INVALID_EVENT"},
641+
{CL_INVALID_OPERATION, "CL_INVALID_OPERATION"},
642+
{CL_INVALID_GL_OBJECT, "CL_INVALID_GL_OBJECT"},
643+
{CL_INVALID_BUFFER_SIZE, "CL_INVALID_BUFFER_SIZE"},
644+
{CL_INVALID_MIP_LEVEL, "CL_INVALID_MIP_LEVEL"},
645+
{CL_INVALID_GLOBAL_WORK_SIZE, "CL_INVALID_GLOBAL_WORK_SIZE"},
646+
{CL_INVALID_PROPERTY, "CL_INVALID_PROPERTY"},
647+
{CL_INVALID_IMAGE_DESCRIPTOR, "CL_INVALID_IMAGE_DESCRIPTOR"},
648+
{CL_INVALID_COMPILER_OPTIONS, "CL_INVALID_COMPILER_OPTIONS"},
649+
{CL_INVALID_LINKER_OPTIONS, "CL_INVALID_LINKER_OPTIONS"},
650+
{CL_INVALID_DEVICE_PARTITION_COUNT, "CL_INVALID_DEVICE_PARTITION_COUNT"},
651+
{CL_INVALID_PIPE_SIZE, "CL_INVALID_PIPE_SIZE"},
652+
{CL_INVALID_DEVICE_QUEUE, "CL_INVALID_DEVICE_QUEUE"},
653+
{CL_INVALID_SPEC_ID, "CL_INVALID_SPEC_ID"},
654+
{CL_MAX_SIZE_RESTRICTION_EXCEEDED, "CL_MAX_SIZE_RESTRICTION_EXCEEDED"}};
655+
auto entry = error_map.find(errorcode);
656+
return (entry != error_map.end()) ? entry->second : "Unknown Errorcode";
685657
}

0 commit comments

Comments
 (0)