Stan Math Library  2.20.0
reverse mode automatic differentiation
check_opencl.hpp
Go to the documentation of this file.
1 #ifndef STAN_MATH_OPENCL_ERR_CHECK_OPENCL_HPP
2 #define STAN_MATH_OPENCL_ERR_CHECK_OPENCL_HPP
3 #ifdef STAN_OPENCL
4 
6 #include <CL/cl.hpp>
7 #include <iostream>
8 #include <stdexcept>
9 #include <string>
10 
15 namespace stan {
16 namespace math {
17 
26 inline void check_opencl_error(const char *function, const cl::Error &e) {
27  switch (e.err()) {
28  case 0:
29  // CL_SUCCESS - no need to throw
30  return;
31  case -1:
32  system_error(function, e.what(), e.err(), "CL_DEVICE_NOT_FOUND");
33  case -2:
34  system_error(function, e.what(), e.err(), "CL_DEVICE_NOT_AVAILABLE");
35  case -3:
36  system_error(function, e.what(), e.err(), "CL_COMPILER_NOT_AVAILABLE");
37  case -4:
38  system_error(function, e.what(), e.err(),
39  "CL_MEM_OBJECT_ALLOCATION_FAILURE");
40  case -5:
41  system_error(function, e.what(), e.err(), "CL_OUT_OF_RESOURCES");
42  case -6:
43  system_error(function, e.what(), e.err(), "CL_OUT_OF_HOST_MEMORY");
44  case -7:
45  system_error(function, e.what(), e.err(),
46  "CL_PROFILING_INFO_NOT_AVAILABLE");
47  case -8:
48  system_error(function, e.what(), e.err(), "CL_MEM_COPY_OVERLAP");
49  case -9:
50  system_error(function, e.what(), e.err(), "CL_IMAGE_FORMAT_MISMATCH");
51  case -10:
52  system_error(function, e.what(), e.err(),
53  "CL_IMAGE_FORMAT_NOT_SUPPORTED");
54  case -11:
55  system_error(function, e.what(), e.err(), "CL_BUILD_PROGRAM_FAILURE");
56  case -12:
57  system_error(function, e.what(), e.err(), "CL_MAP_FAILURE");
58  case -13:
59  system_error(function, e.what(), e.err(),
60  "CL_MISALIGNED_SUB_BUFFER_OFFSET");
61  case -14:
62  system_error(function, e.what(), e.err(),
63  "CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST");
64  case -15:
65  system_error(function, e.what(), e.err(), "CL_COMPILE_PROGRAM_FAILURE");
66  case -16:
67  system_error(function, e.what(), e.err(), "CL_LINKER_NOT_AVAILABLE");
68  case -17:
69  system_error(function, e.what(), e.err(), "CL_LINK_PROGRAM_FAILURE");
70  case -18:
71  system_error(function, e.what(), e.err(), "CL_DEVICE_PARTITION_FAILED");
72  case -19:
73  system_error(function, e.what(), e.err(),
74  "CL_KERNEL_ARG_INFO_NOT_AVAILABLE");
75  case -30:
76  system_error(function, e.what(), e.err(), "CL_INVALID_VALUE");
77  case -31:
78  system_error(function, e.what(), e.err(), "CL_INVALID_DEVICE_TYPE");
79  case -32:
80  system_error(function, e.what(), e.err(), "CL_INVALID_PLATFORM");
81  case -33:
82  system_error(function, e.what(), e.err(), "CL_INVALID_DEVICE");
83  case -34:
84  system_error(function, e.what(), e.err(), "CL_INVALID_CONTEXT");
85  case -35:
86  system_error(function, e.what(), e.err(), "CL_INVALID_QUEUE_PROPERTIES");
87  case -36:
88  system_error(function, e.what(), e.err(), "CL_INVALID_COMMAND_QUEUE");
89  case -37:
90  system_error(function, e.what(), e.err(), "CL_INVALID_HOST_PTR");
91  case -38:
92  system_error(function, e.what(), e.err(), "CL_INVALID_MEM_OBJECT");
93  case -39:
94  system_error(function, e.what(), e.err(),
95  "CL_INVALID_IMAGE_FORMAT_DESCRIPTOR");
96  case -40:
97  system_error(function, e.what(), e.err(), "CL_INVALID_IMAGE_SIZE");
98  case -41:
99  system_error(function, e.what(), e.err(), "CL_INVALID_SAMPLER");
100  case -42:
101  system_error(function, e.what(), e.err(), "CL_INVALID_BINARY");
102  case -43:
103  system_error(function, e.what(), e.err(), "CL_INVALID_BUILD_OPTIONS");
104  case -44:
105  system_error(function, e.what(), e.err(), "CL_INVALID_PROGRAM");
106  case -45:
107  system_error(function, e.what(), e.err(),
108  "CL_INVALID_PROGRAM_EXECUTABLE");
109  case -46:
110  system_error(function, e.what(), e.err(), "CL_INVALID_KERNEL_NAME");
111  case -47:
112  system_error(function, e.what(), e.err(), "CL_INVALID_KERNEL_DEFINITION");
113  case -48:
114  system_error(function, e.what(), e.err(), "CL_INVALID_KERNEL");
115  case -49:
116  system_error(function, e.what(), e.err(), "CL_INVALID_ARG_INDEX");
117  case -50:
118  system_error(function, e.what(), e.err(), "CL_INVALID_ARG_VALUE");
119  case -51:
120  system_error(function, e.what(), e.err(), "CL_INVALID_ARG_SIZE");
121  case -52:
122  system_error(function, e.what(), e.err(), "CL_INVALID_KERNEL_ARGS");
123  case -53:
124  system_error(function, e.what(), e.err(), "CL_INVALID_WORK_DIMENSION");
125  case -54:
126  system_error(function, e.what(), e.err(), "CL_INVALID_WORK_GROUP_SIZE");
127  case -55:
128  system_error(function, e.what(), e.err(), "CL_INVALID_WORK_ITEM_SIZE");
129  case -56:
130  system_error(function, e.what(), e.err(), "CL_INVALID_GLOBAL_OFFSET");
131  case -57:
132  system_error(function, e.what(), e.err(), "CL_INVALID_EVENT_WAIT_LIST");
133  case -58:
134  system_error(function, e.what(), e.err(), "CL_INVALID_EVENT");
135  case -59:
136  system_error(function, e.what(), e.err(), "CL_INVALID_OPERATION");
137  case -60:
138  system_error(function, e.what(), e.err(), "CL_INVALID_GL_OBJECT");
139  case -61:
140  system_error(function, e.what(), e.err(), "CL_INVALID_BUFFER_SIZE");
141  case -62:
142  system_error(function, e.what(), e.err(), "CL_INVALID_MIP_LEVEL");
143  case -63:
144  system_error(function, e.what(), e.err(), "CL_INVALID_GLOBAL_WORK_SIZE");
145  case -64:
146  system_error(function, e.what(), e.err(), "CL_INVALID_PROPERTY");
147  case -65:
148  system_error(function, e.what(), e.err(), "CL_INVALID_IMAGE_DESCRIPTOR");
149  case -66:
150  system_error(function, e.what(), e.err(), "CL_INVALID_COMPILER_OPTIONS");
151  case -67:
152  system_error(function, e.what(), e.err(), "CL_INVALID_LINKER_OPTIONS");
153  case -68:
154  system_error(function, e.what(), e.err(),
155  "CL_INVALID_DEVICE_PARTITION_COUNT");
156  case -69:
157  system_error(function, e.what(), e.err(), "CL_INVALID_PIPE_SIZE");
158  case -70:
159  system_error(function, e.what(), e.err(), "CL_INVALID_DEVICE_QUEUE");
160  case -1000:
161  system_error(function, e.what(), e.err(),
162  "CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR");
163  case -1001:
164  system_error(function, e.what(), e.err(), "CL_PLATFORM_NOT_FOUND_KHR");
165  case -1002:
166  system_error(function, e.what(), e.err(), "CL_INVALID_D3D10_DEVICE_KHR");
167  case -1003:
168  system_error(function, e.what(), e.err(),
169  "CL_INVALID_D3D10_RESOURCE_KHR");
170  case -1004:
171  system_error(function, e.what(), e.err(),
172  "CL_D3D10_RESOURCE_ALREADY_ACQUIRED_KHR");
173  case -1005:
174  system_error(function, e.what(), e.err(),
175  "CL_D3D10_RESOURCE_NOT_ACQUIRED_KHR");
176  case -1006:
177  system_error(function, e.what(), e.err(), "CL_INVALID_D3D11_DEVICE_KHR");
178  case -1007:
179  system_error(function, e.what(), e.err(),
180  "CL_INVALID_D3D11_RESOURCE_KHR");
181  case -1008:
182  system_error(function, e.what(), e.err(),
183  "CL_D3D11_RESOURCE_ALREADY_ACQUIRED_KHR");
184  case -1009:
185  system_error(function, e.what(), e.err(),
186  "CL_D3D11_RESOURCE_NOT_ACQUIRED_KHR");
187  case -101:
188  system_error(function, e.what(), e.err(), "CL_INVALID_D3D9_DEVICE_NV ");
189  case -1011:
190  system_error(function, e.what(), e.err(), "CL_INVALID_D3D9_RESOURCE_NV ");
191  case -1012:
192  system_error(function, e.what(), e.err(),
193  "CL_D3D9_RESOURCE_ALREADY_ACQUIRED_NV "
194  "CL_DX9_RESOURCE_ALREADY_ACQUIRED_INTEL");
195  case -1013:
196  system_error(function, e.what(), e.err(),
197  "CL_D3D9_RESOURCE_NOT_ACQUIRED_NV "
198  "CL_DX9_RESOURCE_NOT_ACQUIRED_INTEL");
199  case -1092:
200  system_error(function, e.what(), e.err(),
201  "CL_EGL_RESOURCE_NOT_ACQUIRED_KHR");
202  case -1093:
203  system_error(function, e.what(), e.err(), "CL_INVALID_EGL_OBJECT_KHR");
204  case -1094:
205  system_error(function, e.what(), e.err(), "CL_INVALID_ACCELERATOR_INTEL");
206  case -1095:
207  system_error(function, e.what(), e.err(),
208  "CL_INVALID_ACCELERATOR_TYPE_INTEL");
209  case -1096:
210  system_error(function, e.what(), e.err(),
211  "CL_INVALID_ACCELERATOR_DESCRIPTOR_INTEL");
212  case -1097:
213  system_error(function, e.what(), e.err(),
214  "CL_ACCELERATOR_TYPE_NOT_SUPPORTED_INTEL");
215  case -1098:
216  system_error(function, e.what(), e.err(),
217  "CL_INVALID_VA_API_MEDIA_ADAPTER_INTEL");
218  case -1099:
219  system_error(function, e.what(), e.err(),
220  "CL_INVALID_VA_API_MEDIA_SURFACE_INTEL");
221  case -1100:
222  system_error(function, e.what(), e.err(),
223  "CL_VA_API_MEDIA_SURFACE_ALREADY_ACQUIRED_INTEL");
224  case -1101:
225  system_error(function, e.what(), e.err(),
226  "CL_VA_API_MEDIA_SURFACE_NOT_ACQUIRED_INTEL");
227  case -9999:
228  system_error(function, e.what(), e.err(), "ILLEGAL_READ_OR_WRITE_NVIDIA");
229  default:
230  system_error(function, e.what(), e.err(),
231  std::to_string(e.err()).c_str());
232  }
233 }
234 } // namespace math
235 } // namespace stan
236 #endif
237 #endif
void system_error(const char *function, const char *name, const int &y, const char *msg1, const char *msg2)
Throw a system error with a consistently formatted message.
double e()
Return the base of the natural logarithm.
Definition: constants.hpp:87
void check_opencl_error(const char *function, const cl::Error &e)
Throws the domain error with specifying the OpenCL error that occured.

     [ Stan Home Page ] © 2011–2018, Stan Development Team.