1
0
mirror of https://github.com/hashcat/hashcat.git synced 2024-12-16 19:58:25 +00:00

Merge pull request #134 from yhfudev/add-cl-error-messages

human-readable error message for the OpenCL error codes.
This commit is contained in:
Jens Steube 2016-01-16 13:42:34 +01:00
commit b9c61eb66f

View File

@ -5,13 +5,61 @@
#include <ext_OpenCL.h> #include <ext_OpenCL.h>
const char *
val2cstr_cl (cl_int CL_err)
{
#define CLERR(a) case a: return #a
switch (CL_err) {
CLERR(CL_BUILD_PROGRAM_FAILURE);
CLERR(CL_COMPILER_NOT_AVAILABLE);
CLERR(CL_DEVICE_NOT_FOUND);
CLERR(CL_INVALID_ARG_INDEX);
CLERR(CL_INVALID_ARG_SIZE);
CLERR(CL_INVALID_ARG_VALUE);
CLERR(CL_INVALID_BINARY);
CLERR(CL_INVALID_BUFFER_SIZE);
CLERR(CL_INVALID_BUILD_OPTIONS);
CLERR(CL_INVALID_COMMAND_QUEUE);
CLERR(CL_INVALID_CONTEXT);
CLERR(CL_INVALID_DEVICE);
CLERR(CL_INVALID_DEVICE_TYPE);
CLERR(CL_INVALID_EVENT);
CLERR(CL_INVALID_EVENT_WAIT_LIST);
CLERR(CL_INVALID_GLOBAL_OFFSET);
CLERR(CL_INVALID_HOST_PTR);
CLERR(CL_INVALID_KERNEL);
CLERR(CL_INVALID_KERNEL_ARGS);
CLERR(CL_INVALID_KERNEL_DEFINITION);
CLERR(CL_INVALID_KERNEL_NAME);
CLERR(CL_INVALID_MEM_OBJECT);
CLERR(CL_INVALID_OPERATION);
CLERR(CL_INVALID_PLATFORM);
CLERR(CL_INVALID_PROGRAM);
CLERR(CL_INVALID_PROGRAM_EXECUTABLE);
CLERR(CL_INVALID_QUEUE_PROPERTIES);
CLERR(CL_INVALID_SAMPLER);
CLERR(CL_INVALID_VALUE);
CLERR(CL_INVALID_WORK_DIMENSION);
CLERR(CL_INVALID_WORK_GROUP_SIZE);
CLERR(CL_INVALID_WORK_ITEM_SIZE);
CLERR(CL_MISALIGNED_SUB_BUFFER_OFFSET);
CLERR(CL_MAP_FAILURE);
CLERR(CL_MEM_COPY_OVERLAP);
CLERR(CL_MEM_OBJECT_ALLOCATION_FAILURE);
CLERR(CL_OUT_OF_HOST_MEMORY);
CLERR(CL_OUT_OF_RESOURCES);
}
return "(unknown CL error)";
}
void hc_clEnqueueNDRangeKernel (cl_command_queue command_queue, cl_kernel kernel, cl_uint work_dim, const size_t *global_work_offset, const size_t *global_work_size, const size_t *local_work_size, cl_uint num_events_in_wait_list, const cl_event *event_wait_list, cl_event *event) void hc_clEnqueueNDRangeKernel (cl_command_queue command_queue, cl_kernel kernel, cl_uint work_dim, const size_t *global_work_offset, const size_t *global_work_size, const size_t *local_work_size, cl_uint num_events_in_wait_list, const cl_event *event_wait_list, cl_event *event)
{ {
cl_int CL_err = clEnqueueNDRangeKernel (command_queue, kernel, work_dim, global_work_offset, global_work_size, local_work_size, num_events_in_wait_list, event_wait_list, event); cl_int CL_err = clEnqueueNDRangeKernel (command_queue, kernel, work_dim, global_work_offset, global_work_size, local_work_size, num_events_in_wait_list, event_wait_list, event);
if (CL_err != CL_SUCCESS) if (CL_err != CL_SUCCESS)
{ {
log_error ("ERROR: %s %d\n", "clEnqueueNDRangeKernel()", CL_err); log_error ("ERROR: %s (%d)%s\n", "clEnqueueNDRangeKernel()", CL_err, val2cstr_cl(CL_err));
exit (-1); exit (-1);
} }
@ -23,7 +71,7 @@ void hc_clGetEventInfo (cl_event event, cl_event_info param_name, size_t param_v
if (CL_err != CL_SUCCESS) if (CL_err != CL_SUCCESS)
{ {
log_error ("ERROR: %s %d\n", "clGetEventInfo()", CL_err); log_error ("ERROR: %s (%d)%s\n", "clGetEventInfo()", CL_err, val2cstr_cl(CL_err));
exit (-1); exit (-1);
} }
@ -35,7 +83,7 @@ void hc_clFlush (cl_command_queue command_queue)
if (CL_err != CL_SUCCESS) if (CL_err != CL_SUCCESS)
{ {
log_error ("ERROR: %s %d\n", "clFlush()", CL_err); log_error ("ERROR: %s (%d)%s\n", "clFlush()", CL_err, val2cstr_cl(CL_err));
exit (-1); exit (-1);
} }
@ -47,7 +95,7 @@ void hc_clFinish (cl_command_queue command_queue)
if (CL_err != CL_SUCCESS) if (CL_err != CL_SUCCESS)
{ {
log_error ("ERROR: %s %d\n", "clFinish()", CL_err); log_error ("ERROR: %s (%d)%s\n", "clFinish()", CL_err, val2cstr_cl(CL_err));
exit (-1); exit (-1);
} }
@ -59,7 +107,7 @@ void hc_clSetKernelArg (cl_kernel kernel, cl_uint arg_index, size_t arg_size, co
if (CL_err != CL_SUCCESS) if (CL_err != CL_SUCCESS)
{ {
log_error ("ERROR: %s %d\n", "clSetKernelArg()", CL_err); log_error ("ERROR: %s (%d)%s\n", "clSetKernelArg()", CL_err, val2cstr_cl(CL_err));
exit (-1); exit (-1);
} }
@ -71,7 +119,7 @@ void hc_clEnqueueWriteBuffer (cl_command_queue command_queue, cl_mem buffer, cl_
if (CL_err != CL_SUCCESS) if (CL_err != CL_SUCCESS)
{ {
log_error ("ERROR: %s %d\n", "clEnqueueWriteBuffer()", CL_err); log_error ("ERROR: %s (%d)%s\n", "clEnqueueWriteBuffer()", CL_err, val2cstr_cl(CL_err));
exit (-1); exit (-1);
} }
@ -83,7 +131,7 @@ void hc_clEnqueueCopyBuffer (cl_command_queue command_queue, cl_mem src_buffer,
if (CL_err != CL_SUCCESS) if (CL_err != CL_SUCCESS)
{ {
log_error ("ERROR: %s %d\n", "clEnqueueCopyBuffer()", CL_err); log_error ("ERROR: %s (%d)%s\n", "clEnqueueCopyBuffer()", CL_err, val2cstr_cl(CL_err));
exit (-1); exit (-1);
} }
@ -95,7 +143,7 @@ void hc_clEnqueueReadBuffer (cl_command_queue command_queue, cl_mem buffer, cl_b
if (CL_err != CL_SUCCESS) if (CL_err != CL_SUCCESS)
{ {
log_error ("ERROR: %s %d\n", "clEnqueueReadBuffer()", CL_err); log_error ("ERROR: %s (%d)%s\n", "clEnqueueReadBuffer()", CL_err, val2cstr_cl(CL_err));
exit (-1); exit (-1);
} }
@ -107,7 +155,7 @@ void hc_clGetPlatformIDs (cl_uint num_entries, cl_platform_id *platforms, cl_uin
if (CL_err != CL_SUCCESS) if (CL_err != CL_SUCCESS)
{ {
log_error ("ERROR: %s %d\n", "clGetPlatformIDs()", CL_err); log_error ("ERROR: %s (%d)%s\n", "clGetPlatformIDs()", CL_err, val2cstr_cl(CL_err));
exit (-1); exit (-1);
} }
@ -119,7 +167,7 @@ void hc_clGetPlatformInfo (cl_platform_id platform, cl_platform_info param_name,
if (CL_err != CL_SUCCESS) if (CL_err != CL_SUCCESS)
{ {
log_error ("ERROR: %s %d\n", "clGetPlatformInfo()", CL_err); log_error ("ERROR: %s (%d)%s\n", "clGetPlatformInfo()", CL_err, val2cstr_cl(CL_err));
exit (-1); exit (-1);
} }
@ -131,7 +179,7 @@ void hc_clGetDeviceIDs (cl_platform_id platform, cl_device_type device_type, cl_
if (CL_err != CL_SUCCESS) if (CL_err != CL_SUCCESS)
{ {
log_error ("ERROR: %s %d\n", "clGetDeviceIDs()", CL_err); log_error ("ERROR: %s (%d)%s\n", "clGetDeviceIDs()", CL_err, val2cstr_cl(CL_err));
exit (-1); exit (-1);
} }
@ -143,7 +191,7 @@ void hc_clGetDeviceInfo (cl_device_id device, cl_device_info param_name, size_t
if (CL_err != CL_SUCCESS) if (CL_err != CL_SUCCESS)
{ {
log_error ("ERROR: %s %d\n", "clGetDeviceInfo()", CL_err); log_error ("ERROR: %s (%d)%s\n", "clGetDeviceInfo()", CL_err, val2cstr_cl(CL_err));
exit (-1); exit (-1);
} }
@ -157,7 +205,7 @@ cl_context hc_clCreateContext (cl_context_properties *properties, cl_uint num_de
if (CL_err != CL_SUCCESS) if (CL_err != CL_SUCCESS)
{ {
log_error ("ERROR: %s %d\n", "clCreateContext()", CL_err); log_error ("ERROR: %s (%d)%s\n", "clCreateContext()", CL_err, val2cstr_cl(CL_err));
exit (-1); exit (-1);
} }
@ -174,7 +222,7 @@ cl_command_queue hc_clCreateCommandQueue (cl_context context, cl_device_id devic
if (CL_err != CL_SUCCESS) if (CL_err != CL_SUCCESS)
{ {
log_error ("ERROR: %s %d\n", "clCreateCommandQueue()", CL_err); log_error ("ERROR: %s (%d)%s\n", "clCreateCommandQueue()", CL_err, val2cstr_cl(CL_err));
exit (-1); exit (-1);
} }
@ -191,7 +239,7 @@ cl_command_queue hc_clCreateCommandQueueWithProperties (cl_context context, cl_d
if (CL_err != CL_SUCCESS) if (CL_err != CL_SUCCESS)
{ {
log_error ("ERROR: %s %d\n", "clCreateCommandQueueWithProperties()", CL_err); log_error ("ERROR: %s (%d)%s\n", "clCreateCommandQueueWithProperties()", CL_err, val2cstr_cl(CL_err));
exit (-1); exit (-1);
} }
@ -208,7 +256,7 @@ cl_mem hc_clCreateBuffer (cl_context context, cl_mem_flags flags, size_t size, v
if (CL_err != CL_SUCCESS) if (CL_err != CL_SUCCESS)
{ {
log_error ("ERROR: %s %d\n", "clCreateBuffer()", CL_err); log_error ("ERROR: %s (%d)%s\n", "clCreateBuffer()", CL_err, val2cstr_cl(CL_err));
exit (-1); exit (-1);
} }
@ -224,7 +272,7 @@ cl_program hc_clCreateProgramWithSource (cl_context context, cl_uint count, cons
if (CL_err != CL_SUCCESS) if (CL_err != CL_SUCCESS)
{ {
log_error ("ERROR: %s %d\n", "clCreateProgramWithSource()", CL_err); log_error ("ERROR: %s (%d)%s\n", "clCreateProgramWithSource()", CL_err, val2cstr_cl(CL_err));
exit (-1); exit (-1);
} }
@ -240,7 +288,7 @@ cl_program hc_clCreateProgramWithBinary (cl_context context, cl_uint num_devices
if (CL_err != CL_SUCCESS) if (CL_err != CL_SUCCESS)
{ {
log_error ("ERROR: %s %d\n", "clCreateProgramWithBinary()", CL_err); log_error ("ERROR: %s (%d)%s\n", "clCreateProgramWithBinary()", CL_err, val2cstr_cl(CL_err));
exit (-1); exit (-1);
} }
@ -254,7 +302,7 @@ void hc_clBuildProgram (cl_program program, cl_uint num_devices, const cl_device
if (CL_err != CL_SUCCESS) if (CL_err != CL_SUCCESS)
{ {
log_error ("ERROR: %s %d\n", "clBuildProgram()", CL_err); log_error ("ERROR: %s (%d)%s\n", "clBuildProgram()", CL_err, val2cstr_cl(CL_err));
// If we exit here we can't see the error message // If we exit here we can't see the error message
// exit (-1); // exit (-1);
@ -283,7 +331,7 @@ void hc_clReleaseMemObject (cl_mem mem)
if (CL_err != CL_SUCCESS) if (CL_err != CL_SUCCESS)
{ {
log_error ("ERROR: %s %d\n", "clReleaseMemObject()", CL_err); log_error ("ERROR: %s (%d)%s\n", "clReleaseMemObject()", CL_err, val2cstr_cl(CL_err));
exit (-1); exit (-1);
} }
@ -295,7 +343,7 @@ void hc_clReleaseKernel (cl_kernel kernel)
if (CL_err != CL_SUCCESS) if (CL_err != CL_SUCCESS)
{ {
log_error ("ERROR: %s %d\n", "clReleaseProgram()", CL_err); log_error ("ERROR: %s (%d)%s\n", "clReleaseProgram()", CL_err, val2cstr_cl(CL_err));
exit (-1); exit (-1);
} }
@ -307,7 +355,7 @@ void hc_clReleaseProgram (cl_program program)
if (CL_err != CL_SUCCESS) if (CL_err != CL_SUCCESS)
{ {
log_error ("ERROR: %s %d\n", "clReleaseProgram()", CL_err); log_error ("ERROR: %s (%d)%s\n", "clReleaseProgram()", CL_err, val2cstr_cl(CL_err));
exit (-1); exit (-1);
} }
@ -319,7 +367,7 @@ void hc_clReleaseCommandQueue (cl_command_queue command_queue)
if (CL_err != CL_SUCCESS) if (CL_err != CL_SUCCESS)
{ {
log_error ("ERROR: %s %d\n", "clReleaseCommandQueue()", CL_err); log_error ("ERROR: %s (%d)%s\n", "clReleaseCommandQueue()", CL_err, val2cstr_cl(CL_err));
exit (-1); exit (-1);
} }
@ -331,7 +379,7 @@ void hc_clReleaseContext (cl_context context)
if (CL_err != CL_SUCCESS) if (CL_err != CL_SUCCESS)
{ {
log_error ("ERROR: %s %d\n", "clReleaseContext()", CL_err); log_error ("ERROR: %s (%d)%s\n", "clReleaseContext()", CL_err, val2cstr_cl(CL_err));
exit (-1); exit (-1);
} }
@ -345,7 +393,7 @@ void *hc_clEnqueueMapBuffer (cl_command_queue command_queue, cl_mem buffer, cl_b
if (CL_err != CL_SUCCESS) if (CL_err != CL_SUCCESS)
{ {
log_error ("ERROR: %s %d\n", "clEnqueueMapBuffer()", CL_err); log_error ("ERROR: %s (%d)%s\n", "clEnqueueMapBuffer()", CL_err, val2cstr_cl(CL_err));
exit (-1); exit (-1);
} }
@ -359,7 +407,7 @@ void hc_clEnqueueUnmapMemObject (cl_command_queue command_queue, cl_mem memobj,
if (CL_err != CL_SUCCESS) if (CL_err != CL_SUCCESS)
{ {
log_error ("ERROR: %s %d\n", "clEnqueueUnmapMemObject()", CL_err); log_error ("ERROR: %s (%d)%s\n", "clEnqueueUnmapMemObject()", CL_err, val2cstr_cl(CL_err));
exit (-1); exit (-1);
} }
@ -371,7 +419,7 @@ void hc_clEnqueueFillBuffer (cl_command_queue command_queue, cl_mem buffer, cons
if (CL_err != CL_SUCCESS) if (CL_err != CL_SUCCESS)
{ {
log_error ("ERROR: %s %d\n", "clEnqueueFillBuffer()", CL_err); log_error ("ERROR: %s (%d)%s\n", "clEnqueueFillBuffer()", CL_err, val2cstr_cl(CL_err));
exit (-1); exit (-1);
} }
@ -383,7 +431,7 @@ void hc_clGetKernelWorkGroupInfo (cl_kernel kernel, cl_device_id device, cl_kern
if (CL_err != CL_SUCCESS) if (CL_err != CL_SUCCESS)
{ {
log_error ("ERROR: %s %d\n", "clGetKernelWorkGroupInfo()", CL_err); log_error ("ERROR: %s (%d)%s\n", "clGetKernelWorkGroupInfo()", CL_err, val2cstr_cl(CL_err));
exit (-1); exit (-1);
} }