公司动态
CANN Runtime源码构建实战:从零搭建昇腾NPU开发环境的10个关键步骤
CANN Runtime源码构建实战从零搭建昇腾NPU开发环境的10个关键步骤【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime本文带你完成CANN Runtime 源码构建从零开始搭建昇腾 NPU 开发环境。CANN Runtime 是昇腾 AI 处理器Ascend NPU的运行时组件提供设备管理、Stream 流管理、内存管理、Event 事件同步与任务调度等核心能力并内置 msprof 性能调优、adump 精度调试、log 日志等维测组件。掌握它的源码构建方法是深入昇腾 Runtime 定制开发的必经之路。全程只需 10 个关键步骤新手也能跟着做完。一、构建前先认识 CANN Runtime在动手之前先了解这个仓库能给你什么组件作用Runtime 组件Ascend NPU 运行时编程接口acl 系列 API与核心实现msprof性能数据采集与分析定位软硬件瓶颈adump单算子/模型输入输出 Dump辅助精度调试log进程日志记录与落盘支持故障诊断源码构建成功后会在build_out目录下生成cann-npu-runtime_version_linux-arch.run软件包安装后即可替换已安装 CANN 开发套件中的 Runtime 组件。 提示源码构建支持本机构建与Docker 容器构建两种方式下文步骤同时覆盖两者。二、10个关键步骤详解步骤1确认操作系统与硬件环境CANN Runtime 构建环境对操作系统有明确要求支持 Ubuntu/Debianapt 管理与 CentOS/EulerOS/openEuleryum/dnf 管理。若你的机器上已有昇腾 NPU 设备后续运行样例时可直接验证若仅做编译无卡环境也能完成构建。步骤2一键安装基础构建依赖构建依赖包括python ≥ 3.7.0、pip3、gcc7.3.0 ~ 13、cmake ≥ 3.16.0、ccache、autoconf、gperf、libtool、make 及 libc6-dev。仓库提供了 install_deps.sh 脚本自动检测操作系统并逐项安装校验省去手动核对版本的麻烦bash install_deps.sh如果偏好手动安装Ubuntu/Debian 可参考sudo apt install python3 python3-pip python3-dev gcc-9 g-9 libc6-dev cmake ccache autoconf gperf libtool make步骤3安装 CANN Toolkit 软件包Runtime 源码构建依赖 CANN Toolkit 开发套件。从 CANN 下载中心获取与你产品型号和 CPU 架构x86_64 / aarch64匹配的 Toolkit 包然后安装chmod x Ascend-cann-toolkit_${cann_version}_linux-${arch}.run ./Ascend-cann-toolkit_${cann_version}_linux-${arch}.run --install --install-path${install_path}--install-path默认为/usr/local/Ascend。非 root 用户请改到用户主目录下。步骤4按需安装 NPU 驱动与固件这一步仅在实际运行样例时才需要纯编译可跳过只编译 runtime 包 → 跳过本步骤要跑 example 下的 Device/Stream/内存样例 → 必须安装对应型号的驱动与固件。步骤5验证环境与驱动是否正常安装完成后用两条命令确认环境就绪npu-smi info # 能显示设备信息说明驱动正常 cat /usr/local/Ascend/cann/arch-linux/ascend_toolkit_install.info第一条命令输出 NPU 列表即代表驱动安装成功第二条确认 Toolkit 版本后续版本配套请以该版本为准。步骤6下载 Runtime 源码克隆项目仓库。注意为确保版本配套建议选用与 CANN 版本匹配的 Git 标签直接使用 master 分支可能存在版本不匹配风险git clone https://gitcode.com/cann/runtime进入仓库后可先浏览顶层结构重点认识这几个文件README.md完整构建说明、build.sh编译入口脚本、CMakeLists.txtCMake 工程配置、download_3rd_party.py离线依赖下载脚本。 替代方案不想手动配环境仓库提供 .devcontainer 配置VS Code 中选择Reopen in Container即可在 Ubuntu 22.04 GCC 9 CMake 3.22 的容器内完成构建第三方依赖还会自动下载。步骤7配置 CANN 环境变量让 CANN 的库路径、工具链对当前终端生效# 默认路径安装 source /usr/local/Ascend/cann/set_env.sh # 或指定路径安装 source ${install_path}/cann/set_env.shbuild.sh内部会依据ASCEND_HOME_PATH自动导出工具链目录环境变量配置正确是编译不报找不到工具链错误的关键。步骤8准备第三方开源依赖Runtime 依赖 abseil-cpp、boost、protobuf、googletest、json 等开源组件版本清单见 README.md 中的开源第三方软件依赖表格。联网环境编译时自动下载无需额外操作离线环境先用 download_3rd_party.py 在有网机器上把依赖拉到本地再拷贝到编译机python download_3rd_party.py依赖会下载到当前目录的third_party文件夹中。步骤9执行源码编译在仓库根目录执行核心编译命令# 联网环境 bash build.sh # 离线环境指定本地第三方依赖路径 bash build.sh --cann_3rd_lib_paththird_party脚本会依次完成 cmake 配置、并行编译与打包三个阶段。常用编译参数参数说明-jN指定编译线程数默认 8大内存机器可调大提速--build-typeRelease/Debug构建类型默认 Release--asan启用 AddressSanitizer 内存错误检测--cov启用代码覆盖率--build_host_only仅编译 Host 侧目标--ascend_install_pathPATH指定 CANN 安装路径完整参数列表可用bash build.sh -h随时查看。编译成功后build_out目录生成形如cann-npu-runtime_version_linux-arch.run的安装包。步骤10安装产物并完成本地验证安装自编译的 runtime 包cd build_out ./cann-npu-runtime_version_linux-arch.run --full --install-path${install_path}安装后自编译的 Runtime 会替换已安装 CANN 开发套件中的对应组件。运行单元测试UT验证功能bash tests/build_ut.sh --utacl --targetascendcl_utest -c --cann_3rd_lib_path{your_3rd_party_path}--ut指定模块如acl、runtime用例分布在 tests/ut/ 各模块目录下--target指定编译目标-c开启覆盖率需先安装 lcov依赖路径必须为绝对路径。跑一个最小样例做端到端验证进入 example/0_quickstart/0_hello_cann按各样例目录说明执行bash run.sh看到向量加法样例成功运行即代表整条链路打通。三、构建产物与仓库关键目录速查路径说明cmake/工程编译配置与 CMake 函数库src/runtime/Runtime 核心模块源码api、core、featuresrc/dfx/维测组件msprof、adump、log、tracesrc/aclrt/acl 对外 API 实现example/快速入门到进阶场景的完整样例集tests/ut/按模块归档的单元测试用例docs/zh/开发指南、API 参考、FAQ 等中文文档四、新手常见卡点排查cmake 配置阶段报找不到 cann-cmake多半是set_env.sh没有 source或离线依赖未放对位置编译中断在第三方组件下载处切换到离线流程先跑download_3rd_party.py再带--cann_3rd_lib_path参数UT 报 googletest 找不到--cann_3rd_lib_path必须传绝对路径样例运行失败但编译成功检查是否安装了 NPU 驱动与固件npu-smi info验证。五、总结回顾一下完整的 10 步路径确认环境 → 装依赖 → 装 Toolkit → 装驱动按需→ 验证环境 → 克隆源码 → 配置环境变量 → 准备第三方依赖 → build.sh 编译 → 安装并 UT 验证。走通一遍后你就拥有了一个可定制、可复现的昇腾 NPU Runtime 开发环境可以继续深入阅读 docs/zh/ 中的开发指南与 API 参考或基于 example/ 样例做自己的 Runtime 定制开发。祝构建顺利编译一次通过【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考