OpenCL 内核 - 2022.1 简体中文

Vitis 统一软件平台文档 应用加速开发 (UG1393)

Document ID
UG1393
Release Date
2022-05-25
Version
2022.1 简体中文

赛灵思的 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 的输出捕获。