assert
产品支持情况
功能说明
本接口在SIMT VF调试场景下提供assert断言功能。在算子Kernel侧的SIMT VF实现代码中,如果assert的内部条件判断不为真,则会输出assert条件,并将输入的信息格式化打印在屏幕上,同时算子运行失败。
在算子Kernel侧代码的适当位置使用assert进行断言检查,并格式化输出一些调试信息。示例如下:
int assertFlag = 10;
assert(assertFlag == 10);
打印信息示例如下:
[ASSERT] /home/.../add_custom.cpp:44: : Assertion `assertFlag != 10' failed.
请注意,assert接口的打印功能对算子的实际运行性能有影响。
函数原型
assert(expr)
参数说明
返回值说明
无
约束说明
该接口当前仅支持融合编译场景。
需要包含的头文件
使用该接口需要包含"utils/debug/asc_assert.h"头文件。
#include "utils/debug/asc_assert.h"
调用示例
__simt_vf__ __launch_bounds__(1024) inline void AddCustom(__gm__ bool* dst, __gm__ float* x)
{
int idx = threadIdx.x + blockIdx.x * blockDim.x;
assert(!isnan(x[idx]));
dst[idx] = x[idx];
}
程序运行时会触发assert,打印效果如下:
[ASSERT] /home/.../add_custom.cpp:44: : Assertion `!isnan(x[idx])' failed.