CANN Ascend C断言函数API文档
assert【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品 / Atlas A3 推理系列产品√Atlas A2 训练系列产品 / Atlas A2 推理系列产品√Kirin X90√Kirin 9030√功能说明[!CAUTION]注意 为了避免部分场景下和标准的assert接口产生冲突assert(expr, __gm__ const char *fmt, Args... args)接口将被废弃并将在后续版本移除。请不要使用该接口可使用ascendc_assert的对应接口作为替代。基于算子工程开发的算子可以使用该接口实现CPU/NPU域assert断言功能。算子执行中如果assert内部条件判断不为真则输出assert条件并将输入的信息格式化打印在屏幕上。在算子Kernel侧实现代码中需要增加断言的地方使用assert检查代码并格式化输出一些调测信息。示例如下int assertFlag 10; assert(assertFlag 10);[!CAUTION]注意 assert接口打印功能会对算子实际运行的性能带来一定影响每一条assert系统会额外增加一条逻辑判断具体性能影响取决于代码中assert的使用数量通常在调测阶段使用。开发者可以按需通过设置ASCENDC_DUMP0来关闭打印功能。NPU域assert打印信息示例如下DumpHead信息仅在使用自定义算子工程时才会打印DumpHead: AIV-0, CoreTypeAIV, block dim8, total_block_num8, block_remain_len696, block_initial_space1024, rsv0, magic5aa5bccd [ASSERT] /home/.../add_custom.cpp:44: Assertion assertFlag ! 10CPU域assert打印信息示例如下DumpHead: AIV-0, CoreTypeAIV, block dim8, total_block_num8, block_remain_len696, block_initial_space1024, rsv0, magic5aa5bccd [ASSERT]/home/.../add_custom.cpp:44: Assertion assertFlag ! 10函数原型assert(expr) assert(expr, __gm__ const char *fmt, Args... args) // 该接口已废弃请使用ascendc_assert作为替代参数说明参数名输入/输出描述expr输入assert断言是否终止程序的条件。为true则程序继续执行为false则终止程序。fmt输入格式控制字符串包含两种类型的对象普通字符和转换说明。普通字符将原样不动地打印输出。转换说明并不直接输出而是用于控制printf中参数的转换和打印。每个转换说明都由一个百分号字符%开始以转换说明结束从而说明输出数据的类型 。支持的转换类型包括%d / %i输出十进制数支持打印的数据类型bool/int8_t/int16_t/int32_t/int64_t%f输出实数支持打印的数据类型float/half%x输出十六进制整数支持打印的数据类型int8_t/int16_t/int32_t/int64_t/uint8_t/uint16_t/uint32_t/uint64_t%s输出字符串%u输出unsigned类型数据支持打印的数据类型bool/uint8_t/uint16_t/uint32_t/uint64_t%p输出指针地址注意上文列出的数据类型是NPU域调试支持的数据类型CPU域调试时支持的数据类型和C/C规范保持一致。在转换类型为%x即输出十六进制整数时NPU域上的输出为64位CPU域上的输出为32位。args输入附加参数个数和类型可变的参数列表根据不同的fmt字符串函数可能需要一系列的附加参数每个参数包含了一个要被插入的值替换了fmt参数中指定的每个%标签。参数的个数应与%标签的个数相同。返回值说明无约束说明该功能仅在如下场景支持通过Kernel直调方式调用算子。通过单算子API调用方式调用算子。间接调用单算子API(aclnnxxx)接口Pytorch框架单算子直调的场景。Kernel开发不要包含系统的assert.h会导致宏定义冲突。该接口调用形式与C语言一致不需要使用AscendC命名空间。该接口不支持打印除换行符之外的其他转义字符。该接口不支持simulator仿真模式。单次调用本接口打印的数据总量不可超过1MB还包括少量框架需要的头尾信息通常可忽略。使用时应注意如果超出这个限制则数据不会被打印。使用自定义算子工程时存在以下限制该接口使用Dump功能一个算子所有使用Dump功能的接口在每个核上Dump的数据总量不可超过1M。请开发者自行控制待打印的内容数据量超出则不会打印。该接口使用空间每个核上不可超过1k。请开发者自行控制待打印的内容数据量超出则不会打印。调用示例int assertFlag 10; // 断言条件 assert(assertFlag ! 10);程序运行时会触发assert打印效果如下[ASSERT] /home/.../add_custom.cpp:44: Assertion assertFlag ! 10【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2602384.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!