Skip to content

Commit 901061c

Browse files
committed
Investigate ubuntu cl 2
1 parent 4b550c8 commit 901061c

File tree

2 files changed

+122
-61
lines changed

2 files changed

+122
-61
lines changed

.github/workflows/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ jobs:
4040
if: matrix.os == 'ubuntu-22.04'
4141
run: |
4242
sudo apt update -qq
43-
sudo apt install -qq intel-opencl-icd opencl-headers ocl-icd-opencl-dev
43+
sudo apt install -qq opencl-headers ocl-icd-opencl-dev pocl-opencl-icd
4444
4545
- name: Build Current Binary
4646
if: matrix.os != 'ubuntu-22.04-arm'

src/cpp/common.cpp

Lines changed: 121 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -20,67 +20,128 @@ void getPtrAndLen(Napi::Object obj, void** ptr, size_t *len) {
2020

2121
const char* getExceptionMessage(const cl_int code) {
2222
switch (code) {
23-
CASE_RET(CL_SUCCESS, "Success!");
24-
CASE_RET(CL_DEVICE_NOT_FOUND, "Device not found.");
25-
CASE_RET(CL_DEVICE_NOT_AVAILABLE, "Device not available");
26-
CASE_RET(CL_COMPILER_NOT_AVAILABLE, "Compiler not available");
27-
CASE_RET(CL_MEM_OBJECT_ALLOCATION_FAILURE, "Memory object allocation failure");
28-
CASE_RET(CL_OUT_OF_RESOURCES, "Out of resources");
29-
CASE_RET(CL_OUT_OF_HOST_MEMORY, "Out of host memory");
30-
CASE_RET(CL_PROFILING_INFO_NOT_AVAILABLE, "Profiling information not available");
31-
CASE_RET(CL_MEM_COPY_OVERLAP, "Memory copy overlap");
32-
CASE_RET(CL_IMAGE_FORMAT_MISMATCH, "Image format mismatch");
33-
CASE_RET(CL_IMAGE_FORMAT_NOT_SUPPORTED, "Image format not supported");
34-
CASE_RET(CL_BUILD_PROGRAM_FAILURE, "Program build failure");
35-
CASE_RET(CL_MAP_FAILURE, "Map failure");
36-
CASE_RET(CL_MISALIGNED_SUB_BUFFER_OFFSET, "Misaligned sub-buffer offset");
37-
CASE_RET(CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST, "Execution status error for events in wait list");
38-
CASE_RET(CL_COMPILE_PROGRAM_FAILURE, "Compile program failure");
39-
CASE_RET(CL_LINKER_NOT_AVAILABLE, "Linker not available");
40-
CASE_RET(CL_LINK_PROGRAM_FAILURE, "Link program failure");
41-
CASE_RET(CL_DEVICE_PARTITION_FAILED, "Device partition failed");
42-
CASE_RET(CL_KERNEL_ARG_INFO_NOT_AVAILABLE, "Kernel argument info not available");
43-
CASE_RET(CL_INVALID_VALUE, "Invalid value");
44-
CASE_RET(CL_INVALID_DEVICE_TYPE, "Invalid device type");
45-
CASE_RET(CL_INVALID_PLATFORM, "Invalid platform");
46-
CASE_RET(CL_INVALID_DEVICE, "Invalid device");
47-
CASE_RET(CL_INVALID_CONTEXT, "Invalid context");
48-
CASE_RET(CL_INVALID_QUEUE_PROPERTIES, "Invalid queue properties");
49-
CASE_RET(CL_INVALID_COMMAND_QUEUE, "Invalid command queue");
50-
CASE_RET(CL_INVALID_HOST_PTR, "Invalid host pointer");
51-
CASE_RET(CL_INVALID_MEM_OBJECT, "Invalid memory object");
52-
CASE_RET(CL_INVALID_IMAGE_FORMAT_DESCRIPTOR, "Invalid image format descriptor");
53-
CASE_RET(CL_INVALID_IMAGE_SIZE, "Invalid image size");
54-
CASE_RET(CL_INVALID_SAMPLER, "Invalid sampler");
55-
CASE_RET(CL_INVALID_BINARY, "Invalid binary");
56-
CASE_RET(CL_INVALID_BUILD_OPTIONS, "Invalid build options");
57-
CASE_RET(CL_INVALID_PROGRAM, "Invalid program");
58-
CASE_RET(CL_INVALID_PROGRAM_EXECUTABLE, "Invalid program executable");
59-
CASE_RET(CL_INVALID_KERNEL_NAME, "Invalid kernel name");
60-
CASE_RET(CL_INVALID_KERNEL_DEFINITION, "Invalid kernel definition");
61-
CASE_RET(CL_INVALID_KERNEL, "Invalid kernel");
62-
CASE_RET(CL_INVALID_ARG_INDEX, "Invalid argument index");
63-
CASE_RET(CL_INVALID_ARG_VALUE, "Invalid argument value");
64-
CASE_RET(CL_INVALID_ARG_SIZE, "Invalid argument size");
65-
CASE_RET(CL_INVALID_KERNEL_ARGS, "Invalid kernel arguments");
66-
CASE_RET(CL_INVALID_WORK_DIMENSION, "Invalid work dimension");
67-
CASE_RET(CL_INVALID_WORK_GROUP_SIZE, "Invalid work group size");
68-
CASE_RET(CL_INVALID_WORK_ITEM_SIZE, "Invalid work item size");
69-
CASE_RET(CL_INVALID_GLOBAL_OFFSET, "Invalid global offset");
70-
CASE_RET(CL_INVALID_EVENT_WAIT_LIST, "Invalid event wait list");
71-
CASE_RET(CL_INVALID_EVENT, "Invalid event");
72-
CASE_RET(CL_INVALID_OPERATION, "Invalid operation");
73-
CASE_RET(CL_INVALID_GL_OBJECT, "Invalid OpenGL object");
74-
CASE_RET(CL_INVALID_BUFFER_SIZE, "Invalid buffer size");
75-
CASE_RET(CL_INVALID_MIP_LEVEL, "Invalid mip-map level");
76-
CASE_RET(CL_INVALID_GLOBAL_WORK_SIZE, "Invalid global work size");
77-
CASE_RET(CL_INVALID_PROPERTY, "Invalid property");
78-
CASE_RET(CL_INVALID_IMAGE_DESCRIPTOR, "Invalid image descriptor");
79-
CASE_RET(CL_INVALID_COMPILER_OPTIONS, "Invalid compiler options");
80-
CASE_RET(CL_INVALID_LINKER_OPTIONS, "Invalid linker options");
81-
CASE_RET(CL_INVALID_DEVICE_PARTITION_COUNT, "Invalid device partition count");
23+
case CL_SUCCESS:
24+
return "Success!";
25+
case CL_DEVICE_NOT_FOUND:
26+
return "Device not found.";
27+
case CL_DEVICE_NOT_AVAILABLE:
28+
return "Device not available";
29+
case CL_COMPILER_NOT_AVAILABLE:
30+
return "Compiler not available";
31+
case CL_MEM_OBJECT_ALLOCATION_FAILURE:
32+
return "Memory object allocation failure";
33+
case CL_OUT_OF_RESOURCES:
34+
return "Out of resources";
35+
case CL_OUT_OF_HOST_MEMORY:
36+
return "Out of host memory";
37+
case CL_PROFILING_INFO_NOT_AVAILABLE:
38+
return "Profiling information not available";
39+
case CL_MEM_COPY_OVERLAP:
40+
return "Memory copy overlap";
41+
case CL_IMAGE_FORMAT_MISMATCH:
42+
return "Image format mismatch";
43+
case CL_IMAGE_FORMAT_NOT_SUPPORTED:
44+
return "Image format not supported";
45+
case CL_BUILD_PROGRAM_FAILURE:
46+
return "Program build failure";
47+
case CL_MAP_FAILURE:
48+
return "Map failure";
49+
case CL_MISALIGNED_SUB_BUFFER_OFFSET:
50+
return "Misaligned sub-buffer offset";
51+
case CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST:
52+
return "Execution status error for events in wait list";
53+
case CL_COMPILE_PROGRAM_FAILURE:
54+
return "Compile program failure";
55+
case CL_LINKER_NOT_AVAILABLE:
56+
return "Linker not available";
57+
case CL_LINK_PROGRAM_FAILURE:
58+
return "Link program failure";
59+
case CL_DEVICE_PARTITION_FAILED:
60+
return "Device partition failed";
61+
case CL_KERNEL_ARG_INFO_NOT_AVAILABLE:
62+
return "Kernel argument info not available";
63+
case CL_INVALID_VALUE:
64+
return "Invalid value";
65+
case CL_INVALID_DEVICE_TYPE:
66+
return "Invalid device type";
67+
case CL_INVALID_PLATFORM:
68+
return "Invalid platform";
69+
case CL_INVALID_DEVICE:
70+
return "Invalid device";
71+
case CL_INVALID_CONTEXT:
72+
return "Invalid context";
73+
case CL_INVALID_QUEUE_PROPERTIES:
74+
return "Invalid queue properties";
75+
case CL_INVALID_COMMAND_QUEUE:
76+
return "Invalid command queue";
77+
case CL_INVALID_HOST_PTR:
78+
return "Invalid host pointer";
79+
case CL_INVALID_MEM_OBJECT:
80+
return "Invalid memory object";
81+
case CL_INVALID_IMAGE_FORMAT_DESCRIPTOR:
82+
return "Invalid image format descriptor";
83+
case CL_INVALID_IMAGE_SIZE:
84+
return "Invalid image size";
85+
case CL_INVALID_SAMPLER:
86+
return "Invalid sampler";
87+
case CL_INVALID_BINARY:
88+
return "Invalid binary";
89+
case CL_INVALID_BUILD_OPTIONS:
90+
return "Invalid build options";
91+
case CL_INVALID_PROGRAM:
92+
return "Invalid program";
93+
case CL_INVALID_PROGRAM_EXECUTABLE:
94+
return "Invalid program executable";
95+
case CL_INVALID_KERNEL_NAME:
96+
return "Invalid kernel name";
97+
case CL_INVALID_KERNEL_DEFINITION:
98+
return "Invalid kernel definition";
99+
case CL_INVALID_KERNEL:
100+
return "Invalid kernel";
101+
case CL_INVALID_ARG_INDEX:
102+
return "Invalid argument index";
103+
case CL_INVALID_ARG_VALUE:
104+
return "Invalid argument value";
105+
case CL_INVALID_ARG_SIZE:
106+
return "Invalid argument size";
107+
case CL_INVALID_KERNEL_ARGS:
108+
return "Invalid kernel arguments";
109+
case CL_INVALID_WORK_DIMENSION:
110+
return "Invalid work dimension";
111+
case CL_INVALID_WORK_GROUP_SIZE:
112+
return "Invalid work group size";
113+
case CL_INVALID_WORK_ITEM_SIZE:
114+
return "Invalid work item size";
115+
case CL_INVALID_GLOBAL_OFFSET:
116+
return "Invalid global offset";
117+
case CL_INVALID_EVENT_WAIT_LIST:
118+
return "Invalid event wait list";
119+
case CL_INVALID_EVENT:
120+
return "Invalid event";
121+
case CL_INVALID_OPERATION:
122+
return "Invalid operation";
123+
case CL_INVALID_GL_OBJECT:
124+
return "Invalid OpenGL object";
125+
case CL_INVALID_BUFFER_SIZE:
126+
return "Invalid buffer size";
127+
case CL_INVALID_MIP_LEVEL:
128+
return "Invalid mip-map level";
129+
case CL_INVALID_GLOBAL_WORK_SIZE:
130+
return "Invalid global work size";
131+
case CL_INVALID_PROPERTY:
132+
return "Invalid property";
133+
case CL_INVALID_IMAGE_DESCRIPTOR:
134+
return "Invalid image descriptor";
135+
case CL_INVALID_COMPILER_OPTIONS:
136+
return "Invalid compiler options";
137+
case CL_INVALID_LINKER_OPTIONS:
138+
return "Invalid linker options";
139+
case CL_INVALID_DEVICE_PARTITION_COUNT:
140+
return "Invalid device partition count";
141+
case -1001:
142+
return "OpenCL ICD failed";
82143
default:
83-
printf("Error: %d\n", code);
144+
printf("OpenCL Unknown error: %d\n", code);
84145
return "Unknown error";
85146
}
86147
}

0 commit comments

Comments
 (0)