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

CANN/asc-devkit AI-CPU断言函数

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 训练系列产品:不支持

功能说明

该接口实现AI CPU算子Kernel调试场景下的assert断言功能。

算子执行中,如果assert内部条件判断不为真,则输出assert条件、触发文件名、行号等信息。

需要包含的头文件

#include "aicpu_api.h"

函数原型

assert(expr)

参数说明

参数名

输入/输出

描述

expr

输入

assert断言是否终止程序的条件。为true则程序继续执行,为false则终止程序。

返回值说明

约束说明

  • 该接口仅支持通过<<<...>>>调用,并在异构编译场景使用。

  • kernel开发不要包含系统的assert.h,会导致宏定义冲突。

  • assert接口调用形式与C语言一致,不需要使用AscendC命名空间。

  • 该接口使用Dump功能,所有使用Dump功能的接口在每个核上Dump的数据总量不可超过1M。请开发者自行控制待打印的内容数据量,超出则不会打印。

  • 使用该接口时,若采用bisheng命令行编译,开发者需要手动链接相关的静态库;而使用CMake编译时,框架会自动处理链接问题,无需开发者额外关注。具体编译命令如下:通过--cce-aicpu-laicpu_api为Device链接libaicpu_api.a,通过--cce-aicpu-L指定libaicpu_api.a的库路径。

    $bisheng -O2 foo.aicpu --cce-aicpu-L${INSTALL_DIR}/lib64/device/lib64 --cce-aicpu-laicpu_api -I${INSTALL_DIR}/asc/include/aicpu_api -c -o foo.aicpu.o

    ${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。以root用户安装为例,安装后文件默认存储路径为:/usr/local/Ascend/cann。

调用示例

在算子kernel侧实现代码中需要增加断言的地方使用assert检查代码示例如下:

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

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

[ASSERT]` assertFlag == 12 ' at /home/.../test.cpp:36

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

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

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

相关文章:

  • 杀戮尖塔2新版压缩与无限状态机机制解析与实战指南
  • PyTumblr测试驱动开发:编写单元测试和集成测试确保API客户端稳定性的最佳实践
  • 解码器原理详解:从RNN到Transformer的NLP生成技术
  • 3分钟搞定!VideoDownloadHelper浏览器插件终极下载指南
  • Ornith-1.0-9B-OptiQ-4bit高级技巧:如何优化提示词提升AI响应质量
  • ImNodes节点设计最佳实践:提升可视化编程体验的10个技巧
  • 有保障的上海取保缓刑律师顾问 最关心的问题汇总 - 信息热点
  • CANN/cannbot-skills: Matmul布局指南
  • Python数据分析实战:从数据清洗到可视化全流程
  • Tessera:从零构建LLM蒸馏与推理引擎的全栈实践指南
  • 每天一个知识点——怎么调用接口
  • 终极iOS设备调试解决方案:如何快速解决Xcode无法识别设备的完整指南
  • Nori-30M性能深度解析:96个回归任务中超越基础版的关键原因
  • Tess-4-27B-OptiQ-4bit进阶技巧:自定义量化配置与模型微调
  • GRU API调用实战:从原理到生产环境部署全解析
  • 聊聊服务编排:从概念辨析到落地实践
  • SD 卡 SDIO 电压切换全链路分析:从 3.3V 默认模式到 1.8V UHS-I 的时序约束与硬件死锁排查
  • 2026宝鸡漏水检测维修优选:正规防水补漏团队 TOP5推荐-卫生间/厨房/屋顶/阳台/外墙/飘窗/等渗漏水免砸砖维修 - 筑宅安
  • 从自然语言SOP到自动化故障处置:LLM Agent如何将纸面化Runbook转化为可执行操作序列的全链路拆解
  • AngularAMD源码解析:深入理解ngload插件的工作原理
  • ft_wl_fwk事件循环机制:如何实现高性能的Wayland服务器
  • ECharts 大数据量渲染:千万级数据点的降采样与聚合策略
  • 【企业级代码质量防火墙】:用Claude实现PR自动拦截+漏洞溯源+合规审计三合一
  • 从实验室到生产线:USAF1951分辨率板在光学系统全周期评估中的实战指南
  • Dob与TypeScript的完美配合:类型安全的状态管理方案
  • LayerZero V2消息库(MessageLib)详解:自定义DVN和Executor实现指南
  • Altium元器件库高效获取与管理全攻略
  • 2026重庆涪陵汽车贴膜推荐哪家?哪家专业靠谱?众多车主评价的标杆门店追光汽车贴膜(涪陵店)上榜 - zhouzhou12321
  • Python数据类型转换实战:从input()到eval()的进阶应用
  • Deepseek V4实战指南:从API集成到本地部署的AI编程助手应用