在 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()
。