news 2026/5/9 13:02:44

CANN运行时组件项目

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN运行时组件项目

runtime(运行时)

【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime

🔥Latest News

  • [2026/4] 支持Ascend 950PR/Ascend 950DT芯片。持续增强AclGraph功能,优化文档结构,提升开发者体验。
  • [2025/12] runtime项目首次上线。

概述

本仓提供CANN运行时组件和维测功能组件。

  • Runtime组件:提供Ascend NPU运行时用户编程接口和运行时核心实现,包括设备管理、流管理、Event管理、内存管理、任务调度等功能。
  • 维测功能组件:包括性能数据采集、模型和算子Dump、日志、错误日志记录等功能。
    • 性能调优(msprof)模块:进行性能调优时,可以使用性能调优工具来采集和分析运行在昇腾AI处理器SoCNPU IP加速器上的AI任务各个运行阶段的关键性能指标,用于可根据输出的性能数据,快速定位软、硬件性能瓶颈,提升AI任务性能分析的效率。
    • 精度调试(adump)模块:提供Ascend NPU运行时用户Dump单算子或模型(每一层算子)的输入/输出数据,用于与指定算子或模型进行对比,定位精度问题;提供Ascend NPU运行异常时Dump异常算子的输入/输出数据、Workspace信息,Tiling信息,用于分析AI Core Error问题。
    • 日志(log)模块:日志提供记录进程执行过程信息的能力,在其他进程运行时,日志的接口提供进程打印和落盘日志的功能,方便系统故障的诊断分析,快速实现问题定位。该模块下的msnpureport为命令行工具,支持导出device侧日志和查询设置device侧状态等功能。

版本配套

本项目源码会跟随CANN软件版本发布,关于CANN软件版本与本项目标签的对应关系请参阅release仓库中的相应版本说明。 请注意,为确保您的源码定制开发顺利进行,请选择配套的CANN版本与Gitcode标签源码,使用master分支可能存在版本不匹配的风险。

目录结构

关键目录结构如下:

├── cmake # 工程编译目录 ├── docs # 文档介绍 ├── example # 基于acl接口开发的样例代码 ├── include # 3.1包整体对外发布的头文件 | ├── dfx # dfx相关头文件 | ├── driver # 驱动相关头文件 | ├── external # 本仓对外提供的头文件 | ...... ├── pkg_inc # 仓间管控相关头文件 ├── scripts # 辅助构建相关文件 ├── src # 所有3.1包内各模块的源代码 | ├── acl # acl对外api存放目录 | ├── dfx # dfx模块目录 | | ├── adump # adump模块目录 | | ├── log # log模块目录 | | ├── msprof # msprof模块目录 | | ├── trace # trace模块目录 | | ...... | ├── mmpa # mmpa模块目录 | ├── runtime # runtime模块目录 | ...... ├── stub # 打桩相关目录 ├── tests # UT用例 ...... ├── CMakeLists.txt # 构建编译配置文件 ├── build.sh # 项目工程编译脚本

环境部署

环境安装

手动安装

对于有昇腾设备的开发者,若您想手动搭建昇腾环境,请参考下述步骤。

安装基础依赖

本项目基础依赖如下,请注意版本要求。

  • python >= 3.7.0 (python 3.7 python3.8官方已经EOL,CANN将于2027年3月停止支持,请升级到>= 3.9.0版本)
  • pip3
  • gcc >= 7.3.0, <= 13
  • cmake >= 3.16.0
  • ccache
  • autoconf
  • gperf
  • libtool
  • make

Ubuntu/Debian操作系统安装命令示例如下:

sudo apt install python3 python3-pip python3-dev gcc-9 g++-9 cmake ccache autoconf gperf libtool libtool-bin make

CentOS/EulerOS操作系统安装命令示例如下:

sudo yum install python3 python3-pip python3-devel gcc gcc-c++ cmake ccache autoconf gperf libtool make
安装软件
  • 场景1:体验master版本能力或基于master版本进行开发

    1. 安装驱动与固件(可选,仅运行样例依赖)

      若仅编译runtime包,可跳过本操作步骤。运行runtime样例时须安装驱动与固件。

      下载和安装操作请参考《CANN软件安装指南》中“准备软件包”和“安装NPU驱动和固件”章节。

    2. 安装CANN包

      请单击下载链接,选择最新时间版本,并根据产品型号和环境架构下载对应包。安装命令如下,更多指导参考《CANN软件安装指南》。

      • 安装CANN toolkit包

        # 确保安装包具有可执行权限 chmod +x Ascend-cann-toolkit_${cann_version}_linux-${arch}.run # 安装命令 ./Ascend-cann-toolkit_${cann_version}_linux-${arch}.run --install --install-path=${install_path}
        • ${cann_version}:表示CANN包版本号。
        • ${arch}:表示CPU架构,如aarch64x86_64
        • ${install_path}:表示指定安装路径,需要与Toolkit包安装在相同路径,root用户默认安装在/usr/local/Ascend目录。
      • 安装CANN ops算子包(可选,仅运行样例依赖)。

        若仅编译runtime包,可跳过本操作步骤。运行runtime样例时须安装CANN ops算子包。

        # 确保安装包具有可执行权限 chmod +x Ascend-cann-${soc_name}-ops_${cann_version}_linux-${arch}.run # 安装命令 ./Ascend-cann-${soc_name}-ops_${cann_version}_linux-${arch}.run --install --install-path=${install_path}
        • ${soc_name}表示NPU型号名称。

          产品soc_name
          Atlas A2 训练系列产品/Atlas A2 推理系列产品910b
          Atlas A3 训练系列产品/Atlas A3 推理系列产品A3
          Ascend 950PR/Ascend 950DT产品950
  • 场景2:体验已发布版本能力或基于已发布版本进行开发

    请访问CANN官网下载中心,选择发布版本(仅支持CANN 8.5.0及后续版本)、产品型号和环境架构,参考CANN 快速安装指导完成安装。

环境验证

安装完CANN包后,需验证环境和驱动是否正常。

  • 检查NPU设备

    # 运行npu-smi,若能正常显示设备信息,则驱动正常 npu-smi info
  • 检查CANN版本

    # 查看CANN Toolkit开发套件包的version字段提供的版本信息(默认路径安装),<arch>表示CPU架构(aarch64或x86_64)。 cat /usr/local/Ascend/cann/<arch>-linux/ascend_toolkit_install.info # 查看CANN ops包版本信息(默认路径安装) cat /usr/local/Ascend/cann/${arch}-linux/ascend_ops_install.info

源码构建

本项目支持源码构建,编译运行前需参考以上步骤完成环境部署。

下载源码

```bash # 下载项目源码,以master分支为例 git clone https://gitcode.com/cann/runtime.git ```

环境变量配置

按需选择合适的命令使环境变量生效。

# 默认路径安装,以root用户为例(非root用户,将/usr/local替换为${HOME}) source /usr/local/Ascend/cann/set_env.sh # 指定路径安装 source ${install_path}/cann/set_env.sh

编译runtime包

若您的编译环境可以访问网络,编译过程中将自动下载开源第三方软件,可以使用如下命令进行编译:

export CMAKE_TLS_VERIFY=0 bash build.sh

若您的编译环境无法访问网络,可以直接调用脚本获取开源组件压缩包,脚本将自动下载至当前新建的third_party目录中:

python download_3rd_party.py

下载完成后,可以使用如下命令进行编译:

bash build.sh --cann_3rd_lib_path=third_party

更多编译参数可以通过bash build.sh -h查看。

编译完成之后会在build_out目录下生成cann-npu-runtime_<version>_linux-<arch>.run软件包。 <version>表示版本号。 <arch>表示操作系统架构,取值包括x86_64与aarch64。

开源第三方软件依赖

runtime在编译时,依赖的第三方开源软件列表如下:

开源软件版本下载地址
abseil-cpp20230802.1abseil-cpp-20230802.1.tar.gz
acl-compat (x86_64)8.5.0acl-compat_8.5.0_linux-x86_64.tar.gz
acl-compat (aarch64)8.5.0acl-compat_8.5.0_linux-aarch64.tar.gz
boost1.87.0boost_1_87_0.tar.gz
eigen5.0.0eigen-5.0.0.tar.gz
googletest1.14.0googletest-1.14.0.tar.gz
json3.11.3include.zip
libboundscheck1.1.16libboundscheck-v1.1.16.tar.gz
libseccomp2.5.4libseccomp-2.5.4.tar.gz
mockcpp2.7-h5mockcpp-2.7.tar.gz
mockcpp_patch2.7-h5mockcpp-2.7-h5.patch
openssl3.0.9openssl-openssl-3.0.9.tar.gz
protobuf25.1protobuf-25.1.tar.gz
makeself2.5.0makeself-release-2.5.0-patch1.tar.gz
cann-cmakemaster-002cmake-master-002.tar.gz

[!NOTE]注意 如果您从其他地址下载,请确保版本号一致。

安装runtime包

执行如下命令安装编译生成的runtime软件包。

./cann-npu-runtime_<version>_linux-<arch>.run --full --install-path=${install_path}
  • ${version}:表示run包版本号。
  • ${arch}:表示CPU架构,如aarch64、x86_64。
  • ${install_path}:表示指定安装路径,可选,默认安装在/usr/local/Ascend目录。

安装完成之后,用户编译生成的Runtime软件包会替换已安装CANN开发套件包中的Runtime相关软件。

本地验证

编译完成后,用户可以进行开发测试,验证项目功能是否正常,本节将介绍如何做单元测试(UT: Unit Testing)。

说明: 执行 UT 用例依赖 googletest 单元测试框架,详细介绍参见 googletest 官网。

编译执行UT测试用例:

bash tests/build_ut.sh --ut=acl --target=ascendcl_utest -c --cann_3rd_lib_path={your_3rd_party_path}

指定测试模块

通过--ut指定模块名称,上述示例中指定的模块名称为acl

runtime仓中的UT用例按模块分类归档在tests/ut/的不同目录下,所有模块名称以及和用例路径的映射关系可以查询tests/build_ut.sh中的ut_path_map,例如:acl模块的UTtests/ut/acl下,runtime模块的UTtests/ut/runtime/runtime下。

指定测试目标文件

通过--target指定待测用例编译出的具体目标文件。

各个模块所包含的目标文件可以从对应模块的CMakeLists.txt文件中查看。例如对于acl,从tests/ut/acl/CMakeLists.txt中的add_custom_target可以看出将编译目标命名为ascendcl_utest,并且包含了ascendcl_c_utestascendcl_cpp_utest两个目标文件。上述示例中通过指定targetascendcl_utest表示编译执行acl模块中的所有用例。也可以指定具体的目标文件进行编译执行(可以同时指定多个,用空格分隔)。

其他编译参数

通过-c可以获取覆盖率,如无需获取覆盖率,可省略此参数。

需先安装lcov(Ubuntu / Debian:sudo apt install lcov;openEuler:sudo dnf install lcov);若因版本差异报错,请按提示调整脚本参数。

通过--asan可以启用AddressSanitizer进行内存错误检测,如无需启用,可省略此参数。

AddressSanitizer通常不需要单独安装,已集成在gcc中。如需单独安装asan,请确保与gcc版本兼容,例如gcc 9.5.0匹配libasan6版本。

通过--cann_3rd_lib_path指定第三方依赖的路径,若在联网环境中,可省略此参数。

更加详细的编译命令参数可以通过bash tests/build_ut.sh -h查看。

UT测试用例编译的过程件以及产物位于outputbuild下,如果想清除历史编译记录,可以执行如下操作:

rm -rf output/ build/

接下来可参考example目录下的样例,进一步了解本仓

学习教程

Runtime提供了开发指南、API参考,详细可参见 Runtime 参考资料。

相关信息

  • 贡献指南
  • 安全声明
  • 许可证

【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 13:02:11

CANN AscendC AlltoAll集合通信API

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

作者头像 李华
网站建设 2026/5/9 13:01:58

CANN/ascend-transformer-boost PagedAttentionOperation C++ Demo

加速库PagedAttentionOperation C Demo 【免费下载链接】ascend-transformer-boost 本项目是CANN提供的是一款高效、可靠的Transformer加速库&#xff0c;基于华为Ascend AI处理器&#xff0c;提供Transformer定制化场景的高性能融合算子。 项目地址: https://gitcode.com/ca…

作者头像 李华
网站建设 2026/5/9 13:01:04

基于深度学习的淋巴瘤病理诊断AI模型构建实战

1. 项目概述与核心价值最近在病理诊断领域&#xff0c;一个名为“LymphoML”的项目引起了我的注意。这本质上是一个利用人工智能&#xff0c;特别是深度学习技术&#xff0c;通过分析细胞形态学特征来辅助诊断淋巴瘤的模型。作为一名在医疗影像和AI交叉领域摸爬滚打了十多年的从…

作者头像 李华
网站建设 2026/5/9 13:00:00

CANN竞赛Erf算子赛题

一、赛题背景 【免费下载链接】cann-competitions 本仓库用于 CANN 开源社区各类竞赛、开源课题、社区任务等课题发布、开发者作品提交和展示。 项目地址: https://gitcode.com/cann/cann-competitions 高斯误差函数 (erf) 是数学和统计学中的基本函数&#xff0c;广泛应…

作者头像 李华
网站建设 2026/5/9 12:59:24

CANN/XLA-NPU:昇腾NPU的XLA后端

XLA-NPU 【免费下载链接】xla-npu XLA-NPU 是一个面向华为昇腾NPU硬件的 XLA后端实现。本项目通过接入OpenXLA/XLA开源项目&#xff0c;将XLA开源生态与华为 CANN软件栈集成&#xff0c;对接JAX框架。JAX框架运行时可以直接加载XLA-NPU&#xff0c;使得基于JAX框架开发的模型可…

作者头像 李华