news 2026/8/28 8:43:47

【Ascend-Learning】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Ascend-Learning】

CANN

  • 环境配置
  • 基础命令
  • NPU架构
  • 在Docker容器中使用NPU设备
  • Ascend-SDK 的使用
  • 视频编解码、图片编解码、图像处理
  • 模型操作
    • 编译模型
    • 查看模型
    • 推理模型
  • 算子开发
    • 算子开发基础知识
    • 算子与核函数的联系和区别
    • Kernel函数直调开发
      • 核函数的实现
      • 核函数的编译
      • 核函数的调用
    • 算子工程化开发
      • 算子原型设计
      • 创建适配AI框架的算子工程
        • 实现算子Host侧、Kernel侧、AI框架插件层的代码
        • 编译部署算子工程
      • 创建简易算子工程
        • 实现Host和Kernel侧代码
        • 编译部署简易工程算子
      • 调用算子工程实现的算子
        • 单算子API执行
        • 单算子模型执行
        • 基于算子二进制文件中的核函数执行
  • 算子调测工具

环境配置

  • 卸载驱动:/usr/local/Ascend/driver/script/uninstall.sh

  • 卸载固件:/usr/local/Ascend/firmware/script/uninstall.sh

  • 卸载CANN

    • 必须先卸载 ops:
    • 再来卸载Toolkit包:
  • 升级CANN-toolkit

    • 如果需要同时升级固件和驱动,则必须按照此顺序升级:固件》驱动》CANN》
    • 无论是升级或安装CANN,都需要执行升级或安装的用户对安装目录有所有者权限,否则会安装或升级失败
    • Ascend-hdk-<chip_type>-npu-firmware_.run --upgrade
    • Ascend-hdk-<chip_type>-npu-driver__linux-.run --upgrade
    • `./Ascend-cann-toolkit_8.1.RC1_linux-aarch64.run --upgrade --install-for-all --chip=Ascend310B

基础命令

  • 查询命令:npu-smi info

  • 查询系统占用:npu-smi info watch

  • 查询产品型号:npu-smi info -t product -i 0

  • 查询卡的信息:npu-smi info -t board -i 2

  • 查询卡的某个芯片信息:npu-smi info -t board -i 2 -c 0

  • 查看所有加速卡列表:npu-smi info -l

  • 查看支持的功能列表:npu-smi set -h

  • 查询硬件信息:lshw

  • 查询硬件信息:ascend-smi info 或 ascend-smi status

  • 使用lspci工具查询设备信息:lspci | grep Device

    然后根据查询到的PCI设备ID的确定具体产品型号

NPU架构

  • DMA搬入单元将数据从Global Memory搬运到Local Memory,
  • Vector/Cube计算单元完成数据计算,并把计算结果写回Local Memory,
  • DMA搬出单元把处理好的数据从Local Memory搬运回Global Memory。

  • Ascend C算子编程是**SPMD(Single-Program Multiple-Data)**编程
    • 将需要处理的数据拆分多片并同时在多个计算核心运行,每个核用 block_idx 来标识
    • 当核函数被调用时,多个核都执行相同的核函数代码,具有相同的函数入参,并行执行
    • 区别C++函数执行时只调用一次
    • 核函数中运行的是算子类

在Docker容器中使用NPU设备

  • 在容器中使用NPU设备必须将主机/dev目录下对应的设备节点挂载到容器中,有多少个加速卡就要挂载多少个类似/dev/davinci0节点。
  • 容器创建成功后,需在容器中设置对应的环境变量:source /usr/local/Ascend/ascend-toolkit/set_env.sh
  • 驱动程序必须安装在宿主机(Host OS)。
dockerrun-itd\--net=host\--hostname=docker-jack\--shm-size=100g\--privileged=true\--cap-add=SYS_NICE\--name=jack_da500i_run_env\--device=/dev/davinci0\--device=/dev/davinci_manager\--device=/dev/devmm_svm\--device=/dev/hisi_hdc\-v/usr/local/Ascend/driver:/usr/local/Ascend/driver:ro\-v/usr/local/Ascend/add-ons/:/usr/local/Ascend/add-ons\-v/usr/local/Ascend/driver:/usr/local/Ascend/driver:ro\-v/usr/local/dcmi:/usr/local/dcmi\-v/usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi\-v/etc/ascend_install.info:/etc/ascend_install.info\-v/workspace/da500i_test/jack:/workspace\-p59666:22\mec_build_env:da500i_ubuntu22.04.3

Ascend-SDK 的使用

  • 昇腾AI处理器的版本:进入“CANN软件安装目录/compiler/data/platform_config”目录,".ini"文件的文件名即为昇腾AI处理器的版本
  • Ascend C核函数是在一个核上的处理函数,所以只处理部分数据
  • Host 侧使用的是 AscendCL API;NPU侧使用的是 AscendC类库
  • 设置落盘文件的保存路径:
    exportASCEND_CACHE_PATH=/repo/task001/cacheexportASCEND_WORK_PATH=/repo/task001/172.16.1.12_01_03
  • 接口的分类
    接口说明
    acl系统配置类接口
    aclrt运行时管理类的接口
    aclop单算子模型执行类的接口
    aclblasBLAS 类接口
    aclmdl模型推理类的接口
    acldvpp/aclvdec/aclvenc媒体数据处理 V1 版本的接口
    hi_mpi媒体数据处理 V2 版本的接口
    aclprofProfiling 配置类接口
    acltdt数据传输接口
    aclfv特征向量检索接口

视频编解码、图片编解码、图像处理

  • 昇腾的这个解码器没有数据就会告警,所以得调用 aclrtProcessReport() 报告状态

模型操作

编译模型

昇腾张量编译器(Ascend Tensor Compiler,简称ATC)是异构计算架构CANN体系下的模型转换工具,它可以将开源框架的网络模型以及Ascend IR定义的单算子描述文件(JSON格式)转换为AI处理器支持的.om格式离线模型。

  • 执行模型转换前,要在当前终端执行:source /usr/local/Ascend/ascend-toolkit/set_env.sh
atc--model
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/28 8:43:21

基于微信小程序与SSM框架的社区志愿者服务平台设计与实现

简介&#xff1a;在Web应用开发领域&#xff0c;前后端分离架构已成为主流模式&#xff0c;它通过清晰的职责划分提升了开发效率和系统可维护性。其核心原理在于前端负责用户交互与展示&#xff0c;后端则专注于业务逻辑与数据持久化&#xff0c;两者通过API接口进行通信。这种…

作者头像 李华
网站建设 2026/8/28 8:32:22

从零构建策略骰子游戏:Python实现与概率博弈

1. 项目概述&#xff1a;从零构建一个可玩性十足的骰子游戏最近在整理一些经典的小游戏原型&#xff0c;发现骰子游戏是一个被严重低估的“宝藏”。它规则简单&#xff0c;上手极快&#xff0c;但背后蕴含的概率计算、策略博弈和交互反馈设计&#xff0c;却非常考验一个开发者的…

作者头像 李华
网站建设 2026/8/28 8:31:48

共享 KV 缓存实战:llama.cpp 多会话推理如何少算、省内存、快响应

共享 KV 缓存实战&#xff1a;llama.cpp 多会话推理如何少算、省内存、快响应 【免费下载链接】llama.cpp LLM inference in C/C 项目地址: https://gitcode.com/GitHub_Trending/ll/llama.cpp 写过多客户端调用的 LLM 服务的人都遇到过这种场景&#xff1a;十来个用户连…

作者头像 李华
网站建设 2026/8/28 8:27:11

天线参数优化:神经网络替代仿真+粒子群高效搜索

简介&#xff1a;天线参数优化是射频工程中的核心基础问题&#xff0c;本质是在高维、非线性、多峰的电磁性能空间中寻找最优几何与材料参数组合。其原理依赖于建立结构参数与S参数、增益等关键指标之间的映射关系&#xff0c;并通过智能算法在有限评估次数下逼近全局最优解。技…

作者头像 李华
网站建设 2026/8/28 8:26:29

低功耗双模BLE/2.5GHz无线MCU设计与应用实战解析

每年这个时间段&#xff0c;业界总会有几颗低功耗无线MCU新品发布。这批新料里最让我留意的&#xff0c;是这颗低功耗双模BLE/2.5GHz MCU。BLE SoC在市面上非常成熟&#xff0c;2.4GHz频段专有协议的无线MCU也一抓一大把&#xff0c;但能把这两种无线模式同时塞进一颗芯片、还把…

作者头像 李华
网站建设 2026/8/28 8:24:20

我发现了一个联盟平台CakeGrowth 帮你搞副业赚钱

这个平台叫 CakeGrowth。 逻辑很简单&#xff1a;你从 CakeGrowth 领一个广告主的推广链接&#xff0c;发到你有流量的地方&#xff0c;用户注册/下单了&#xff0c;你拿佣金。 和传统联盟不一样的是&#xff0c;CakeGrowth 专注做AI应用——不是海量商品让你挑花眼&#xff…

作者头像 李华