Altera_Forum
Honored Contributor
11 years agoOpenCL kernel is freezing
Hello.
I'm using Centos 6 and picocomputing m506 board. What is maximum size of kernel's arguments? Summary of cl_mem buffer's size must be less than CL_DEVICE_GLOBAL_MEM_SIZE? Or there is some reserved space? I have some strange behavior: input_size = 4288000000; output_size = 1340000000; global_work_size = 67000000; unsigned int* buffer = (unsigned int*) alignedMalloc(input_size); unsigned int* digest = (unsigned int*) alignedMalloc(output_size); cl_mem inputBuffer = clCreateBuffer(context, CL_MEM_READ_ONLY, input_size, NULL, &status); cl_mem outputBuffer = clCreateBuffer(context, CL_MEM_WRITE_ONLY, output_size, NULL, &status); status = clEnqueueWriteBuffer(queue, inputBuffer, CL_FALSE, 0,input_size, (void *) buffer, 0, NULL, &write_event[0]); status = clSetKernelArg(kernel, 0, sizeof(cl_mem), (void *) &inputBuffer); status = clSetKernelArg(kernel, 1, sizeof(cl_mem), (void *) &outputBuffer); size_t global_work_size[1] = { global_work_size }; status = clEnqueueNDRangeKernel(queue, kernel, 1, NULL, global_work_size, NULL, 1, write_event, &kernel_event); status = clEnqueueReadBuffer(queue, outputBuffer, CL_FALSE, 0, output_size, buffer_out, 1, &kernel_event, &finish_event); clReleaseEvent(write_event[0]); clWaitForEvents(1, &finish_event); This pseudo code will work. But same code with another values for input&output sizes will freeze. Values: input_size = 4352000000; output_size = 1360000000; global_work_size = 68000000; clWaitForEvents(1, &finish_event); will never exit.