pie*_*tou 4 debugging ps3 opencl
嗨,我试图在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();
}
Run Code Online (Sandbox Code Playgroud)
在第18页的4.3.3节中的IBM OpenCL_guide.pdf中,描述了使用printf方法的调试内核.所以我将printf函数添加到我的内核并尝试测试它.但OpenCL编译给了我这个错误:
"IBM_OpenCL_kernel.cl",第9.15行:1506-766(S)通用字符名称"?" 不在标识符的允许范围内.
我还导出了LD_LIBRARY_PATH变量.任何人都有这个问题吗?
我不知道IBM的实现,但printf()是一个非标准的OpenCL函数.在AMD平台上,您必须通过以下方式启用扩展:
#pragma OPENCL EXTENSION cl_amd_printf : enable
Run Code Online (Sandbox Code Playgroud)
在printf()工作之前.也许需要在IBM平台上启用扩展?
(更新)在此页面中,可能使用的扩展名可能是cl_intel_printf,因此请尝试:
#pragma OPENCL EXTENSION cl_intel_printf : enable
Run Code Online (Sandbox Code Playgroud)
您的OpenCL实现似乎不支持printf,或者您使用的是硬件设备而不是模拟设备.
在我看来,你根本不应该使用printf,它不是一个足够尖锐的工具来给出更复杂的硬件相关问题的答案.尝试使用额外的参数aka'__global float*output'.在内核中填充if (something_happened) { output[get_global_id(0)] = the_value_you_need_to_debug; }这样的内容可以帮助您诊断任何可能的问题,这种方法是独立于平台的
| 归档时间: |
|
| 查看次数: |
14379 次 |
| 最近记录: |