当前位置: 首页 > news >正文

CANN/asc-devkit assert断言接口

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 推理系列产品:支持
  • Atlas 200I/500 A2 推理产品:不支持
  • Atlas 推理系列产品AI Core:不支持
  • Atlas 推理系列产品Vector Core:不支持
  • Atlas 训练系列产品:不支持
  • Kirin X90:不支持
  • Kirin 9030:不支持

功能说明

本接口在SIMD和SIMT VF调试场景下提供assert断言功能。在算子Kernel侧的实现代码中,如果assert的内部条件判断不为真,则会输出assert条件,并将输入的信息格式化打印在屏幕上,同时算子运行失败。

在算子Kernel侧代码的适当位置使用assert进行断言检查,并格式化输出一些调试信息。示例如下:

int assertFlag = 10; assert(assertFlag != 10);

打印信息示例如下:

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

请注意,assert接口的打印功能对算子的实际运行性能有影响。

函数原型

assert(expr)

参数说明

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

返回值说明

约束说明

  • 该接口当前仅支持融合编译场景。
  • SIMD场景,如果开发者需要包含标准库头文件<cassert>,请在"utils/debug/asc_assert.h"头文件之前包含,避免assert符号冲突。
  • SIMT VF调试场景的支持情况如下:
    • Ascend 950PR/Ascend 950DT:支持。
    • Atlas A3 训练系列产品/Atlas A3 推理系列产品:不支持。
    • Atlas A2 训练系列产品/Atlas A2 推理系列产品:不支持。

需要包含的头文件

使用该接口需要包含"utils/debug/asc_assert.h"头文件。

#include "utils/debug/asc_assert.h"

SIMD调用示例

// SIMD __global__ __cube__ void simp_test_equal(int a) { // input a is 7 assert(a == 6); }

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

[ASSERT] test_assert.asc:41: : Assertion `a == 6' failed.

SIMT调用示例

//SIMT VF __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.

【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/1212602/

相关文章:

  • STM32-红外遥控控制原理与示例(源码)
  • 2026舒尔全国总代客户口碑力荐 高认可度避坑优选 - myqiye
  • Unity Addressables完美搭档:Eflatun.SceneReference地址管理高级技巧
  • IE8linter实战教程:5个常见IE8兼容性问题及解决方案
  • Flynt命令行完全攻略:轻松掌握项目级字符串格式转换技巧
  • 命令行版Linux通过校园网认证并SSH方案
  • 7年蜕变:一个开源项目如何从零到万星,重构技术社区生态?
  • 浪琴上海官方售后服务中心|官方售后电话及地址权威公告(2026年7月最新) - 亨得利腕表服务中心
  • @nuxt/components 实战:在大型企业项目中实现高效组件管理的5个秘诀
  • 济南浪琴官方售后网点核验报告|官方售后电话及地址权威公告(2026年7月最新) - 亨得利腕表服务中心
  • 如何用OpenHD打造你的专属无人机图传系统:5个秘诀让视频传输更稳定
  • 3大优势让你爱上这款免费离线OCR工具:Umi-OCR的完整使用指南
  • CANN/asc-devkit:int转half精度转换函数
  • 嵌入式系统CRC校验:AUTO、Semi-CPU与Full-CPU三种工作模式详解
  • CANN/asc-devkit RTC获取二进制数据
  • 为什么你的网站在IE8上崩溃?IE8linter帮你快速定位兼容性问题
  • 孝感汇慧星链精准同城获客 - GrowUME
  • Avro4s高级特性:自定义类型映射与模式覆盖完全指南
  • 终极指南:Claude_Sentience中的现象意识与功能性感知差异
  • TI TPS62740+TPS61030方案:智能表计高功率射频与超长续航电源设计详解
  • 终极GhidraMCP完整指南:AI驱动的二进制逆向工程新范式
  • InstColorization核心技术揭秘:目标检测与图像着色的完美融合
  • 集装箱配件全套源头厂家真实客片测评,高认可度口碑榜 - myqiye
  • Flynt核心组件解析:从静态连接到字符串拼接的全方位转换能力
  • Claude会议纪要整理黄金模板(附12类行业话术库+敏感信息自动脱敏规则)
  • (三)MySQL之库表设计篇:一、二、三、四、五范式、BC范式与反范式详解!
  • 5个步骤快速掌握OpenCode:开源AI编程助手的完整入门指南
  • 武汉黄金回收称重套路有多深?看懂正规称重标准,再也不被偷克重 - 日常比对手册
  • 终极Windows系统清理指南:用开源工具Windows Cleaner彻底告别C盘爆红
  • Mindustry:3个核心功能让你爱上这款开源塔防自动化游戏 [特殊字符]