assert

产品支持情况

产品

是否支持

Ascend 950PR/Ascend 950DT

Atlas A3 训练系列产品/Atlas A3 推理系列产品

Atlas A2 训练系列产品/Atlas A2 推理系列产品

Atlas 200I/500 A2 推理产品

Atlas 推理系列产品AI Core

Atlas 推理系列产品Vector Core

x

Atlas 训练系列产品

x

Kirin X90

Kirin 9030

功能说明

头文件路径为:"utils/debug/asc_assert.h"

该接口实现CPU/NPU域assert断言功能。算子执行中,如果assert内部条件判断不为真,则输出assert条件并将输入的信息格式化打印在屏幕上。

在算子Kernel侧实现代码中需要增加断言的地方使用assert检查代码,并格式化输出一些调测信息。示例如下:

int assertFlag = 10;

assert(assertFlag == 10);

注意

该接口主要用于调试分析,开启后会对算子性能产生一定影响,通常在调试阶段使用,生产环境建议关闭。
默认情况下,调用该接口就会打印相关内容,开发者可以参考关闭ASCENDC_DUMP说明,按需关闭该接口功能。

函数原型

define assert(...)

参数说明

表 1 参数说明

参数名称 输入/输出 描述
... 输入 assert断言是否终止程序的条件。为true则程序继续执行,为false则终止程序。

数据类型

返回值说明

返回值说明

约束说明

  • 单次调用本接口打印的数据总量不可超过30KB。使用时应注意,如果超出这个限制,则数据不会被打印。
  • 在cmake工程的release模式下,默认使能NDEBUG宏定义,assert打印信息失效。

调用示例

int assertFlag = 10;
// 断言条件
assert(assertFlag != 10);

程序运行时会触发assert,打印效果如下:

[ASSERT] /home/.../add_custom.cpp:44: Assertion `assertFlag != 10'