使用工具进行算子调测时,支持断言功能。当核函数代码中条件判断为false时,则立即中断运行流程并打印相关信息,方便快速定位错误。
固定为每个核分配的打印数据的最大可使用空间为1M,目前该大小不支持修改,若打印超过1M,打印内容不再显示,请开发者控制待打印的数据量。
在核函数代码中根据需要,在目标位置调用assert接口,详情请参见接口说明,样例如下。
int32_t x = 31; assert(x < 0, "Invalid input_num: %d\n", x);
simulator调测场景执行如下命令,使能Dump开关。
ascendebug kernel --backend simulator --dump-mode normal ... {其他simulator调测参数} --dump-mode取normal,开启通用打印Scalar模式,其他参数参考NPU调测参数根据需要进行配置。
查看断言结果。
若调用时传入的判断条件为false,会中断程序并在屏幕上显示断言内容(带文件名、行号),结果示例如下。
[ASSERT] /home/.../add_custom.cpp:94: Assertion `x < 0' Invalid input_num: 31
assert接口说明如下。
函数原型: __aicore__ inline void assert(bool assertFlag, __gm__ const char* fmt, Args&&... args);
函数功能: 用于程序调试。在程序运行时检查一个条件是否为真,若条件为假,立即中断程序并打印信息。
参数(IN):
参数(OUT): NA
返回值: NA
使用约束:
调用示例:
assert(input_num > 0, "Invalid input_num: %d ", input_num);