在内核中使用 printf() - 2022.1 简体中文

Versal ACAP AI 引擎编程环境 用户指南 (UG1076)

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

AI 引擎内核代码中,矢量数据类型是最常用的类型。要在内核中调试矢量运算,使用 printf 是很有帮助的。

将 printf() 与矢量数据类型搭配使用

要对本机矢量类型执行 printf(),可使用如下技巧。

v4cint16 input_vector;
...
int16_t* print_ptr =(int16_t*)&input_vector;
    for (int qq=0; qq<4;qq++) //4 here so we print two int16s, real + imag per loop.
    printf("vector re: %d, im: %d\r\n",print_ptr[2*qq],print_ptr[2*qq+1]);
}

对于 AI 引擎仿真器,--profile 选项是观测 printf() 输出所必需的选项。对于 x86 仿真器,启用 printf 调用无需任何其它选项。这就是 x86 仿真器的优势之一。

重要: 赛灵思建议在内核与主机代码中避免使用 std::cout。鉴于 x86 仿真器的多线程性质,如果使用 std::cout,其输出可能显示为交织。建议改为使用 printf()