ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

CANN Runtime 开源仓库实战指南:环境部署、源码构建与单元测试全流程解析

CANN Runtime 开源仓库实战指南:环境部署、源码构建与单元测试全流程解析 CANN Runtime 开源仓库实战指南环境部署、源码构建与单元测试全流程解析【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime本指南以 CANN / runtime 开源仓库为对象系统讲解其核心组成Ascend NPU 运行时编程接口与核心实现、性能采集/精度调试/日志等维测组件、环境部署步骤、源码构建流程以及基于 googletest 的单元测试UT验证方法。读完本文你将能够独立完成从基础依赖安装、CANN 软件包部署、build.sh编译 runtime 包到tests/build_ut.sh运行模块化 UT 用例的完整闭环并理解每一步背后的源码依据。项目定位与核心能力本仓库提供CANN 运行时组件和维测功能组件两部分能力是整个 CANN 软件栈中面向昇腾 AI 处理器的底层运行时基座。Runtime 组件提供 Ascend NPU 运行时用户编程接口和运行时核心实现涵盖设备管理、流Stream管理、Event 管理、内存管理、任务调度等功能。其对外 API 头文件集中在 include/external/acl如acl_rt.h、acl_rt_api.h、acl_base.h等核心实现位于 src/runtimeapi、core、feature等子目录另有 src/acl 承载 aclrt、aclrt_c、aclrt_impl 等对外 API 封装。维测功能组件面向性能调优、精度调试与故障诊断包含三个核心模块源码均在 src/dfx 下性能调优msprof采集和分析运行在昇腾 AI 处理器 SoC NPU IP 加速器上 AI 任务各运行阶段的关键性能指标依据输出的性能数据快速定位软、硬件性能瓶颈提升 AI 任务性能分析的效率精度调试adump支持 Dump 单算子或模型每一层算子的输入/输出数据用于与指定算子或模型对比定位精度问题也支持在运行时异常时 Dump 异常算子的输入/输出数据、Workspace 信息、Tiling 信息用于分析 AI Core Error 问题日志log提供记录进程执行过程信息的能力日志接口支持进程打印与落盘日志便于系统故障诊断与问题定位。该模块下的msnpureport为命令行工具支持导出 device 侧日志、查询与设置 device 侧状态等功能。从源码结构看仓库还包含mmpa跨平台接口抽象、platform平台信息管理、queue_schedule队列调度、aicpu_schedAI CPU 调度、tsdTSD 客户端等模块共同支撑运行时能力的完整闭环。版本配套与发布节奏本项目源码会跟随 CANN 软件版本发布CANN 软件版本与本项目标签的对应关系以release仓库中的版本说明为准。当前仓库version.cmake中声明了软件包版本set_cann_package(npu-runtime VERSION 9.2.0)为确保源码定制开发顺利进行请选择配套的 CANN 版本与 Gitcode 标签源码直接使用master分支可能存在版本不匹配的风险。仓库动态方面2025 年 12 月 runtime 项目首次上线2026 年 4 月起支持 Ascend 950PR / Ascend 950DT 芯片并持续增强 AclGraph 功能、优化文档结构。仓库目录结构解读README 给出了关键目录组织结合仓库实际内容整理如下目录/文件说明cmake工程编译目录含fetch_cann_cmake.cmake、package.cmake、gen_version_headers.cmake等构建基础设施docs文档介绍含 docs/zh 开发指南与 API 参考、docs/en 英文文档example基于 acl 接口开发的样例代码快速入门、基础特性、进阶特性、内存进阶、可靠性、性能、场景等分类include3.1 包整体对外发布的头文件dfx与external子目录如acl_rt.h等对外 APIpkg_inc仓间管控相关头文件runtime、driver、profiling、dump 等跨仓接口定义scripts辅助构建相关文件pre-smoking.sh、oat_check.sh、package打包脚本src所有 3.1 包内各模块的源代码acl对外 API 存放目录、dfxadump/log/msprof/trace、runtime运行时核心、mmpa、platform、queue_schedule、aicpu_sched、tsd等stub打桩相关目录gen_stubapi.py等testsUT 用例tests/ut下按模块归档build_ut.sh为 UT 构建脚本CMakeLists.txt构建编译配置文件build.sh项目工程编译脚本环境部署从零搭建昇腾开发环境基础依赖及版本要求本项目基础依赖如下注意版本要求python 3.7.0python 3.7 / python3.8 官方已 EOLCANN 将于 2027 年 3 月停止支持请升级到 3.9.0pip3gcc 7.3.0, 13cmake 3.16.0ccacheautoconfgperflibtoolmakelibc6-dev / glibc-develUbuntu/Debian 操作系统安装命令示例sudo apt install python3 python3-pip python3-dev gcc-9 g-9 libc6-dev cmake ccache autoconf gperf libtool libtool-bin makeCentOS/EulerOS 操作系统安装命令示例sudo yum install python3 python3-pip python3-devel gcc gcc-c glibc-devel cmake ccache autoconf gperf libtool make手动安装 CANN 软件包对于有昇腾设备的开发者手动搭建昇腾环境分为两种场景场景 1体验 master 版本能力或基于 master 版本进行开发安装驱动与固件可选仅运行 样例 依赖若仅编译 runtime 包可跳过本步骤运行 runtime 样例时须安装驱动与固件具体参考《CANN 软件安装指南》中准备软件包和安装 NPU 驱动和固件章节。安装 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 架构如aarch64、x86_64${install_path}指定安装路径需要与 Toolkit 包安装在相同路径root 用户默认安装在/usr/local/Ascend目录。安装 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_nameAtlas A2 训练系列产品 / Atlas A2 推理系列产品910bAtlas A3 训练系列产品 / Atlas A3 推理系列产品A3Ascend 950PR / Ascend 950DT 产品950场景 2体验已发布版本能力或基于已发布版本进行开发访问 CANN 官网下载中心选择发布版本仅支持CANN 8.5.0 及后续版本、产品型号和环境架构参考 CANN 快速安装指导完成安装。环境验证安装完 CANN 包后需验证环境和驱动是否正常。检查 NPU 设备运行npu-smi若能正常显示设备信息则驱动正常。npu-smi info检查 CANN 版本查看安装信息文件中的version字段默认路径安装${arch}表示 CPU 架构即aarch64或x86_64。# 查看 CANN Toolkit 开发套件包的 version 字段提供的版本信息 cat /usr/local/Ascend/cann/${arch}-linux/ascend_toolkit_install.info # 查看 CANN ops 包版本信息 cat /usr/local/Ascend/cann/${arch}-linux/ascend_ops_install.info源码构建 runtime 包本项目支持源码构建编译运行前需先完成上述环境部署。源码构建可选择本机源码构建下载源码 → 环境变量配置 → 编译 runtime 包或Docker 源码构建在容器内完成参考.devcontainer目录说明。下载源码# 下载项目源码以 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 包若编译环境可以访问网络编译过程中将自动下载开源第三方软件bash build.sh若编译环境无法访问网络可直接调用脚本获取开源组件压缩包脚本会自动下载至当前新建的third_party目录中python download_3rd_party.py下载完成后使用如下命令编译bash build.sh --cann_3rd_lib_paththird_party更多编译参数可通过bash build.sh -h查看。结合 build.sh 源码实际支持的参数包括参数说明-h, --help打印用法说明-jN编译线程数默认取 CPU 核数grep -c ^processor /proc/cpuinfo-v, --verbose显示编译命令--pkg编译并打包--pkg-typeTYPE指定包类型可选run/rpm/deb默认run--build-typeTYPE构建类型可选Release/Debug默认Release--build_host_only仅构建 host 侧目标关闭 device 侧构建--asan启用 AddressSanitizer--cov启用 CoverageGCOV--ascend_install_pathPATH指定 CANN 安装路径默认/usr/local/Ascend/cann优先读取ASCEND_HOME_PATH环境变量--cann_3rd_lib_pathPATH指定第三方依赖路径默认./output/third_party--module_extensionVALUE设置模块扩展值默认空--sign-script PATH/--enable-sign指定签名脚本路径 / 启用签名编译完成后会在build_out目录下生成cann-npu-runtime_${version}_linux-${arch}.run软件包。其中${version}表示版本号${arch}表示操作系统架构x86_64或aarch64。开源第三方软件依赖runtime 编译时依赖的开源第三方软件如下若从其他地址下载请确保版本号一致开源软件版本abseil-cpp20230802.1acl-compatx86_64 / aarch649.2.0boost1.87.0eigen5.0.0googletest1.14.0json3.12.0libboundscheck1.1.16libseccomp2.5.4mockcpp含 mockcpp_patch2.7-h5protobuf25.1makeself2.5.0cann-cmakemaster-053注意如果您从其他地址下载请确保版本号一致。安装 runtime 包执行如下命令安装编译生成的 runtime 软件包cd build_out; ./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 单元测试编译完成后可通过单元测试UT, Unit Testing验证项目功能是否正常。执行 UT 用例依赖 googletest 单元测试框架其详细用例筛选用法可参考 googletest 官方文档--gtest_filter等高级选项。编译执行 UT 测试用例bash tests/build_ut.sh --utacl --targetascendcl_utest -c --cann_3rd_lib_path${your_3rd_party_path}其中${your_3rd_party_path}必须为绝对路径。指定测试模块--utruntime仓中的 UT 用例按模块分类归档在 tests/ut 的不同目录下所有模块名称与用例路径的映射关系定义在 tests/build_ut.sh 的ut_path_map中--ut 模块名用例路径fulltests/utacltests/ut/aclruntimetests/ut/runtime/runtimeruntime_ctests/ut/runtime/runtime_c/testcaseplatformtests/ut/platform/utqs / queue_scheduletests/ut/queue_scheduleaicpusd / aicpu_schedtests/ut/aicpu_schedslogtests/ut/slogatracetests/ut/atracemsproftests/ut/msprofadumptests/ut/adumptsdtests/ut/tsderror_managertests/ut/error_managermmpatests/ut/mmpa指定测试目标文件--target通过--target指定待测用例编译出的具体目标文件可同时指定多个用空格分隔。各模块包含的目标文件可从对应模块的CMakeLists.txt中查看同时ut_name_map提供了每个模块的默认目标模块默认目标名aclascendcl_utestruntimeruntime_utestruntime_cruntime_c_utplatformplatform_utqs / queue_schedulequeue_schedule_utaicpusd / aicpu_schedaicpu_sched_utslogslog_utatraceatrace_utmsprofmsprof_utadumpadump_uttsdtsd_uterror_managerut_error_managermmpammpa_utest例如对于acl模块从 tests/ut/acl/CMakeLists.txt 中的add_custom_target可看出编译目标命名为ascendcl_utest并包含ascendcl_c_utest和ascendcl_cpp_utest两个目标文件指定--targetascendcl_utest即编译执行acl模块中的所有用例也可指定具体的目标文件精确执行。其他编译参数-c/--cov获取覆盖率无需时可省略。需先安装lcovUbuntu/Debiansudo apt install lcovopenEulersudo dnf install lcov若因版本差异报错请按提示调整脚本参数。从 tests/build_ut.sh 可见覆盖率统计基于lcov -c收集数据并调用genhtml生成报告到cov/目录--asan启用 AddressSanitizer 进行内存错误检测无需时可省略。AddressSanitizer 通常已集成在 gcc 中如需单独安装请确保与 gcc 版本兼容如 gcc 9.5.0 匹配 libasan6 版本。脚本会校验libasan.so、libubsan.so、libtsan.so是否存在--ut_timeoutSECONDS为每个 UT 可执行文件设置超时时间默认 0 表示不限制超时返回 124/137 时判定用例超时失败--cann_3rd_lib_path指定第三方依赖路径联网环境可省略-jN编译线程数默认 8。更详细的编译命令参数可通过bash tests/build_ut.sh -h查看。UT 用例编译的中间产物及产物位于output和build下如需清除历史编译记录rm -rf output/ build/用例筛选与报告输出脚本通过find遍历目标目录下的可执行文件逐个以--gtest_outputxml:${report_dir}/${filename}.xml方式执行XML 报告输出到output/report/ut/。如需筛选运行部分用例可结合 googletest 的--gtest_filter机制在可执行文件级别进行筛选。从样例到进阶学习完成环境部署与源码构建后可参考 example 目录下的样例进一步了解本仓。样例按主题分层组织0_quickstart快速入门hello_cann、错误处理、系统信息、跨版本、自定义算子启动、运行时生命周期回调1_basic_features基础特性context、device、event、memory、stream 各场景2_advanced_features进阶特性内置任务、callback、ipcevent、kernel 启动、label、model_ri、notify、tdt_channel、tdt_queue3_memory_advanced内存进阶自定义分配器、cache 维护、host_register、managed_memory4_reliability可靠性错误恢复、容错、溢出检测5_performance性能adump、log、profiling6_scenarios典型场景容错执行、图像处理、多设备推理、训练流水线。学习教程方面Runtime 提供了开发指南与 API 参考详见 docs/zh/README.md涵盖 Runtime 编程模型、异步任务执行、内存管理、ACL Graph、多设备编程、进程间通信、运行时核心资源控制等主题以及完整的 API 参考设备管理、Stream/Event/Notify 管理、内存分配与拷贝、内核加载执行、Profiling、Dump 配置等。相关信息与总结贡献相关贡献指南、安全声明、许可证仓库配套有英文版文档 README_en.md 与 docs/en便于国际化开发者阅读。总体来看CANN runtime 仓库的完整工作流可以概括为确认版本配套 → 安装基础依赖与 CANN 软件包 → 环境验证 → 下载源码并配置环境变量 → 通过build.sh编译 runtime 包 → 安装生成的.run包 → 通过tests/build_ut.sh执行模块化 UT 用例 → 参考 example 与 docs 进行二次开发。理解build.sh与tests/build_ut.sh两个构建脚本的参数体系模块映射、目标映射、覆盖率与 ASAN 开关是高效使用本仓库的关键入口。【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表