赛灵思的 Xilinx Runtime (XRT) 库支持在所有配置中使用内核中内置的
OpenCL™
printf()
函数,包括软件仿真、硬件仿真以及硬件执行期间。
提示: 在 OpenCL 内核的所有构建配置中,都仅支持
printf()
函数。对于 C/C++ 内核,仅在软件仿真中支持 printf()
。以下是在内核中使用 printf()
的示例以及输出,执行内核时,global
大小为 8:
__kernel __attribute__ ((reqd_work_group_size(1, 1, 1)))
void hello_world(__global int *a)
{
int idx = get_global_id(0);
printf("Hello world from work item %d\n", idx);
a[idx] = idx;
}
输出如下:
Hello world from work item 0
Hello world from work item 1
Hello world from work item 2
Hello world from work item 3
Hello world from work item 4
Hello world from work item 5
Hello world from work item 6
Hello world from work item 7
重要:
printf()
消息在全局存储器中进行缓冲,并在内核执行完成后进行卸载。如果在多个内核中使用 printf()
,那么主机终端上显示的来自每个内核的消息顺序是不确定的。请注意,特别是当在硬件仿真和硬件中运行时,硬件缓冲器的大小可能会限制 printf
的输出捕获。