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

CANN/asc-devkit元素级算术示例

ElementWiseArithmetic类样例

概述

本样例基于LeakyRelu展示了基础算术类接口的使用方法。

支持的产品

  • Ascend 950PR/Ascend 950DT
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品

目录结构介绍

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

样例描述

  • 样例功能:
    本样例实现了对输入tensor按元素执行Leaky Relu(Leaky Rectified Liner Unit)操作,返回计算结果的功能。

    对应的数学表达式为:
    $$ out = \begin{cases} x, & \text{if } x \ge 0 \ \alpha x, & \text{if } x < 0 \end{cases} $$

  • 样例规格:

    样例类型(OpType)LeakyRelu
    样例输入nameshapedata typeformat
    x[4, 128]halfND
    样例输出out[4, 128]halfND
    核函数名element_wise_arithmetic_kernel
  • 样例实现:
    本样例中实现的是固定shape为[4, 128]的LeakyRelu样例。

    • Kernel实现

      • 调用DataCopy基础API,将数据从GM(Global Memory)搬运到UB(Unified Buffer)
      • 调用LeakyRelu接口,对输入Tensor执行Leaky Relu操作
      • 调用DataCopy基础API,将计算结果从UB(Unified Buffer)搬运至GM(Global Memory)
    • 调用实现
      使用内核调用符<<<>>>调用核函数。

编译运行

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

  • 配置环境变量
    请根据当前环境上CANN开发套件包的安装方式,选择对应配置环境变量的命令。

    • 默认路径,root用户安装CANN软件包

      source /usr/local/Ascend/cann/set_env.sh
    • 默认路径,非root用户安装CANN软件包

      source $HOME/Ascend/cann/set_env.sh
    • 指定路径install_path,安装CANN软件包

      source ${install_path}/cann/set_env.sh
  • 样例执行

    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/A3 系列,dav-3510 对应 Ascend 950PR/Ascend 950DT
  • 执行结果

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

    test pass!

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

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

相关文章:

  • 3步打造你的专属音乐空间:foobox-cn深度配置完全指南
  • 便携储能双输入充电完整架构:PV / 适配器自动识别、Buck/Boost/MPPT 全套算法流程图
  • 如何快速掌握Windows麦克风全局静音:MicMute完整使用指南
  • 如何在Chrome浏览器中实现高效多任务处理:画中画扩展完整教程
  • 030、微透镜阵列与光场成像:从光场相机到深度感知的演进
  • 如何使用RSpotify访问音频特征数据:打造数据驱动的音乐分析工具 [特殊字符]
  • 终极破解指南:如何在iOS上免费获取Spotify Premium完整功能
  • VASSAL引擎:如何快速创建专业的开源桌面战棋游戏平台
  • java项目开发 -- 学习记录(一)
  • 3分钟免费激活Windows与Office:KMS_VL_ALL_AIO智能激活脚本完整指南
  • 磁悬浮轨道设计
  • 【小程序课程设计/毕业设计】基于 微信小程序的校园刷题答题系统 基于 SpringBoot 的智能题库答题系统的设计与实现【附源码、数据库、万字文档】
  • AI+BI落地的三道门槛:从PoC到规模化的关键动作
  • Nightwind性能优化:如何减少CSS文件大小并提升渲染速度
  • openGraphScraper 测试驱动开发:编写高质量集成测试的完整教程
  • 如何用novel-downloader打造你的私人数字图书馆:200+小说网站一键存档
  • Ultimaker Cura版本升级技术深度解析:7大配置迁移最佳实践与性能优化策略
  • 用ChatGPT 3小时写出豆瓣8.5分小说(附完整Prompt链+人物弧光生成器)
  • 龍魂系统 · DNA经济协议 v1.0
  • 2026佛山黄金回收行情:你的旧金饰现在值多少?附5家正规门店实测 - 全城热点
  • 上班族做抖店副业_碎片时间先处理什么 - 抖大侠
  • CANN/asc-devkit: SIMD Min函数文档
  • compose2nix 标签系统详解:使用 Compose 标签扩展系统功能
  • 2026吉他选购避坑指南!老玩家实测6款机型,新手按预算闭眼入
  • EmojiOne Color 免费彩色表情字体:3步实现跨平台视觉升级终极指南
  • GraphRAG 很性感,但权限与日志缺失,让你的“智能”在协作中裸奔
  • 在 C# 异步编程中,异步任务重试机制是处理任务失败(如网络中断、临时错误)的重要策略,旨在提高程序的鲁棒性和可靠性
  • CANN/asc-devkit bfloat16转整数函数
  • 如何在iOS设备上免费获取Spotify Premium完整功能?EeveeSpotify终极破解指南
  • Prisma DBML Generator 的多对多关系处理:深入解析 join table 的生成策略