printf function doesn't work in OpenCL kernel

坚强是说给别人听的谎言 提交于 2019-12-04 14:44:08

问题


Hi I trying to debug OpenCL kernel code on PS3. Here is the code:

#pragma OPENCL EXTENSION cl_khr_byte_addressable_store : enable

int offset() {
    return 'A' - 'a';
}

__kernel void tKernel(__global unsigned char *in, __global unsigned char *out) {    
    size_t i;
    printf(“var”);
    for (i = 0; i < 10; i++)
        out[i] = in[i] + offset();
}

In IBM OpenCL_guide.pdf in section 4.3.3 on page 18, there are describe debugging kernel with printf method. So I add the printf function to my kernel and trying test it. But OpenCL compile gave me this error:

"IBM_OpenCL_kernel.cl", line 9.15: 1506-766 (S) The universal character name "?" is not in the allowable range for an identifier.

I also have exported LD_LIBRARY_PATH variable. Can anyone have this problem?


回答1:


I don't know about the IBM implementation, but printf() is a non-standard OpenCL function. On the AMD platform, you have to enable the extension through:

#pragma OPENCL EXTENSION cl_amd_printf : enable

before printf() will work. Perhaps an extension needs to be enabled on the IBM platform as well?

(Update) From this page, the possible extension name to use might be cl_intel_printf, so try:

#pragma OPENCL EXTENSION cl_intel_printf : enable



回答2:


It seems that your implementation of OpenCL doesn't support printf, or maybe you are using hardware device instead of emulated one.

In my opinion you shouldn't use printf at all, it is not sharp enough tool to give answers with more complex hardware-dependent problems. Try using additional argument aka '__global float* output'. Fill it inside the kernel with something like if (something_happened) { output[get_global_id(0)] = the_value_you_need_to_debug; } this will help you diagnose any possible issue and this approach is platform independent




回答3:


printf function is not supported while building in the system. You can only use it in software and hardware emulation.



来源:https://stackoverflow.com/questions/5782388/printf-function-doesnt-work-in-opencl-kernel

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!