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

CANN/asc-devkit使用TmpBuf实现向量加法

使用TmpBuf实现VectorAdd样例

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

概述

本样例基于TPipe::InitBuffer接口初始化TBuf内存空间,并在计算过程中使用TBuf临时缓冲区进行数据转换,实现了bfloat16_t数据类型的向量加法(Add)样例。

注意:本样例仅适用于基于TPipe和TQue的编程模式。

本样例支持的产品及CANN软件版本

产品CANN软件版本
Ascend 950PR/Ascend 950DT>= CANN 9.1.0
Atlas A3 训练系列产品/Atlas A3 推理系列产品>= CANN 9.0.0
Atlas A2 训练系列产品/Atlas A2 推理系列产品>= CANN 9.0.0

目录结构介绍

├── tmp_buffer │ ├── scripts │ │ ├── gen_data.py // 输入数据和真值数据生成脚本 │ │ └── verify_result.py // 验证输出数据和真值数据是否一致的验证脚本 │ ├── CMakeLists.txt // 编译工程文件 │ ├── data_utils.h // 数据读入写出函数 │ ├── tmp_buffer.asc // Ascend C样例实现 & 调用样例 │ └── README.md // 样例说明文档

样例描述

  • 样例功能

    本样例调用Cast接口将bfloat16_t类型的输入数据转换为float类型存入TBuf临时缓冲区,完成Add计算后再调用Cast接口转换回bfloat16_t类型。

  • 样例规格

    样例类型(OpType)Add
    样例输入nameshapedata typeformat
    x[1, 2048]bfloat16_tND
    y[1, 2048]bfloat16_tND
    样例输出z[1, 2048]bfloat16_tND
    核函数名tmp_buffer_custom
  • 样例实现

    • Kernel实现

      • 调用TPipe::InitBuffer接口,为TQue和TBuf分配内存空间,其中TBuf用于存储临时数据。

      • 调用DataCopy基础API,将数据从GM(Global Memory)搬运到UB(Unified Buffer)。

      • 调用Cast接口,将bfloat16_t类型数据转换为float类型并存入TBuf临时缓冲区。

      • 调用Add接口,对两个输入tensor执行加法操作。

      • 调用Cast接口,将float类型的计算结果转换为bfloat16_t类型并存入TQue分配的UB(Unified Buffer)空间。

      • 调用DataCopy基础API,将计算结果从UB(Unified Buffer)搬运至GM(Global Memory)。

    • 调用实现

      使用内核调用符<<<>>>调用核函数。

编译运行

在本样例根目录下执行如下步骤,编译并执行样例。

  • 配置环境变量

    请根据当前环境上CANN开发套件包的安装方式,配置环境变量。

    source ${install_path}/cann/set_env.sh

    说明:${install_path}为CANN包安装目录,未指定安装目录时默认安装至/usr/local/Ascend下。

  • 样例执行

    在本样例目录下执行如下命令。

    mkdir -p build && cd build; # 创建并进入build目录 cmake -DCMAKE_ASC_ARCHITECTURES=dav-2201 ..;make -j; # 编译工程,默认npu模式 python3 ../scripts/gen_data.py # 生成测试输入数据 ./demo # 执行编译生成的可执行程序,执行样例 python3 ../scripts/verify_result.py output/output.bin output/golden.bin # 验证输出结果是否正确

    使用 CPU调试 或 NPU仿真 模式时,添加-DCMAKE_ASC_RUN_MODE=cpu-DCMAKE_ASC_RUN_MODE=sim参数即可。

    示例如下:

    cmake -DCMAKE_ASC_RUN_MODE=cpu -DCMAKE_ASC_ARCHITECTURES=dav-2201 ..;make -j; # cpu调试模式 cmake -DCMAKE_ASC_RUN_MODE=sim -DCMAKE_ASC_ARCHITECTURES=dav-2201 ..;make -j; # NPU仿真模式

    注意:切换编译模式前需清理 cmake 缓存,可在 build 目录下执行rm CMakeCache.txt后重新 cmake。

  • 编译选项说明

    选项可选值说明
    CMAKE_ASC_RUN_MODEnpu(默认)、cpusim运行模式:NPU 运行、CPU调试、NPU仿真
    CMAKE_ASC_ARCHITECTURESdav-2201(默认)、dav-3510NPU 架构:dav-2201 对应 Atlas A2 训练系列产品/Atlas A2 推理系列产品和 Atlas A3 训练系列产品/Atlas A3 推理系列产品,dav-3510 对应 Ascend 950PR/Ascend 950DT
  • 执行结果

    执行结果如下,说明精度对比成功:

    test pass!

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

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

http://www.gsyq.cn/news/1519953.html

相关文章:

  • 2026母牛羊饲料:解读行业三大核心发展趋势 - 资讯速览
  • 【电力系统】大规模电动汽车开发与电网资源分配的蒙特卡罗Matlab模拟
  • 乌鲁木齐本地推荐:正规办理资质及财税业务的优质企业服务机构 - 新疆全疆企业服务
  • 终极指南:用MAA明日方舟助手实现全日常一键长草
  • 抖音无水印下载器完全指南:5分钟掌握批量下载技巧
  • 【车辆】基于110cc全地形车(ATV)平台开发的自主无人地面车辆(UGV)设计与实现
  • 2026年6月西安冰箱维修平台横评:4大品牌实测,哪家更靠谱? - 简单到家
  • 乌鲁木齐本地推荐:专业办理公司注销与记账的优质企业服务公司 - 新疆全疆企业服务
  • 2026年济南车灯专业店在哪?车灯不亮咋解决?后浪车灯,赵太奇带你来了解车灯 - Ayu8888
  • 如何深度定制iOS界面:解锁Misaka高级定制功能的完整指南
  • TypingMind高级功能全解析:插件系统、AI角色、多模型切换实战
  • 猫抓浏览器扩展终极指南:三步解锁网页媒体资源下载
  • 终极风扇控制解决方案:FanControl让你的电脑既安静又高效
  • 【火箭】基于Matlab模拟瓶火箭水-空气推进系统的动态,使喷射性能最大的最佳水与空气比例及初始压力
  • ChatGLM2-6B NPU版:华为昇腾上的高效中文对话AI模型完全指南
  • 新手必看:GRBL 1.1h参数配置保姆级教程,从电机方向到行程设置一次搞定
  • NXP Kinetis eDMA动态链接与通道控制实战指南
  • MC56F8458x DSC中AOI与XBARA模块的硬件逻辑编程实战
  • 从0到1搭建PP-OCRv6_medium_det_onnx OCR pipeline:完整项目集成案例
  • 如何快速提升工作效率:智能鼠标自动化工具的完整方案
  • PP-OCRv6_medium_rec_onnx:超越GPT-5.5的轻量级OCR识别模型完全指南
  • 如何快速上手Swin Transformer v2:从零开始的图像分类指南
  • R3nzSkin深度解析:高效安全的英雄联盟皮肤修改技术实战指南
  • 【权威】家用别墅电梯工厂推荐排行榜:澳美斯一条龙服务与楼梯切割实力厂家解析 - 变量人生001
  • Blender形变键保留技术方案:SKkeeper插件架构解析与实现原理
  • 新手必看:mobilenetv2_050.lamb_in1k环境配置与依赖安装完全指南
  • 邯郸瓷砖空鼓翘边拱起怎么解决?2026专业修复方法攻略 - 苏易修缮
  • 直流受端电网直流闭锁后频率电压协同紧急控制策略
  • PP-OCRv6_small_rec_safetensors社区生态:如何参与贡献与获取支持的完整指南 [特殊字符]
  • 技术深度解析:Ultimate Vocal Remover GUI 音频分离架构设计与实践