Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

printf function doesn't work in OpenCL kernel

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?

like image 600
pierre tautou Avatar asked Dec 09 '22 09:12

pierre tautou


1 Answers

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
like image 166
prunge Avatar answered Jan 04 '23 23:01

prunge