Debugging printf函数没有';不能在OpenCL内核中工作

Debugging printf函数没有';不能在OpenCL内核中工作,debugging,opencl,ps3,Debugging,Opencl,Ps3,嗨,我正在PS3上调试OpenCL内核代码。代码如下: #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”);

嗨,我正在PS3上调试OpenCL内核代码。代码如下:

#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();
}
#pragma OPENCL扩展cl_khr_字节可寻址存储:启用
整数偏移量(){
返回“A”-“A”;
}
__kernel void tKernel(uu全局无符号字符*in,u全局无符号字符*out){
尺寸i;
printf(“var”);
对于(i=0;i<10;i++)
out[i]=in[i]+偏移量();
}
在第18页第4.3.3节的IBMOpenCl_guide.pdf中,描述了使用printf方法调试内核。 因此,我将printf函数添加到内核中,并尝试对其进行测试。但是OpenCL compile给了我这个错误:

“IBM\u OpenCL\u kernel.cl”,第9.15行:1506-766通用字符名“?”不在标识符允许的范围内。


我还导出了LD\u LIBRARY\u PATH变量。有人会遇到这个问题吗?

似乎您的OpenCL实现不支持printf,或者您使用的是硬件设备而不是模拟设备


在我看来,您根本不应该使用printf,它还不够尖锐,无法回答更复杂的硬件相关问题。尝试使用附加参数aka“\u全局浮点*输出”。在内核中填充
if(something)if(something){output[get\u global\u id(0)]=调试所需的\u值;}
这将帮助您诊断任何可能的问题,这种方法与平台无关我不知道IBM的实现,但printf()是一个非标准的OpenCL函数。在AMD平台上,您必须通过以下方式启用扩展:

#pragma OPENCL EXTENSION cl_amd_printf : enable
在printf()开始工作之前。也许还需要在IBM平台上启用扩展

(更新)从中,可能要使用的扩展名可能是cl_intel_printf,请尝试:

#pragma OPENCL EXTENSION cl_intel_printf : enable

在系统中生成时不支持printf函数。您只能在软件和硬件仿真中使用它。

我怀疑您的引号字符不是ascii。。。