尧图精选

CANN opbase v8.5.0-beta.1 版本解析与离线编译实战指南

🕒 发布时间:2026/9/18 22:09:07 📁 来源:尧图网络
CANN opbase v8.5.0-beta.1 版本解析与离线编译实战指南【免费下载链接】opbase本项目是CANN算子库的基础框架库为算子提供公共依赖文件和基础调度能力。项目地址: https://gitcode.com/cann/opbase导读本文以 CANN opbase 仓库的 CHANGELOG.md 为主体全面解析 opbase 首个 Beta 版本 v8.5.0-beta.1 的发布内容版本目录结构、CANN 开源子包配套关系、关键特性与问题修复。同时结合仓库中的构建脚本、构建参数文档与第三方依赖下载工具深入讲解该版本新增的离线编译能力——包括如何准备第三方依赖、在无网络环境下完成 opbase 源码构建与包安装以及如何通过 UT 进行本地验证帮助开发者在受限网络环境中顺利完成 opbase 的编译部署。一、版本概览opbase 首个 Beta 版本opbase 是 CANNCompute Architecture for Neural Networks算子库依赖的基础框架库为算子提供公共的头文件、结构体与基础调度能力。根据 CHANGELOG.mdv8.5.0-beta.1 是 opbase 发布的首个 Beta 版本发布日期为 2025-12-30。该版本引入了多项新增特性、问题修复及性能改进目前仍处于测试阶段。从仓库根目录的 version.cmake 可以看到 opbase 构建与运行所依赖的 CANN 组件编译依赖runtime、metadef、bisheng-compiler、asc-devkit、ge-executor、hcomm均要求版本8.5运行时依赖runtime、ge-executor、metadef、asc-devkit、bisheng-compiler同样要求8.5。这意味着 v8.5.0-beta.1 版本与 CANN 8.5.0 系列组件构成完整的配套关系使用时需要保证环境中的 CANN 版本与本仓库源码标签一致。二、版本目录结构v8.5.0-beta.1 发布包按 CPU 架构分为两个目录每个目录下通过ops子目录归档算子子包版本目录说明如下 ├── aarch64 # CPU为ARM类型 │ ├── ops # ops算子包目录用于归档算子子包 │ ├── ... ├── x86_64 # CPU为X86类型 │ ├── ops # ops算子包目录用于归档算子子包 │ ├── ...选择版本目录时需要根据部署环境 CPU 架构确定ARM 架构选择aarch64X86 架构选择x86_64。这一架构划分与构建产物命名一致——编译成功后生成的安装包为cann-opbase_${cann_version}_linux-${arch}.run见 docs/QUICKSTART.md其中${arch}即对应上述架构。三、CANN 开源子包版本配套关系v8.5.0-beta.1 版本遵循 CANN 开源子包整体配套发布原则各子包源码标签与配套 CANN 版本保持一致核心配套关系如下CANN子包版本版本源码标签配套CANN版本cann-opbase 8.5.0-beta.1v8.5.0-beta.1CANN 8.5.0-beta.1cann-oam-tools 8.5.0-beta.1v8.5.0-beta.1CANN 8.5.0-beta.1cann-asc-tools 8.5.0-beta.1v8.5.0-beta.1CANN 8.5.0-beta.1cann-asc-devkit 8.5.0-beta.1v8.5.0-beta.1CANN 8.5.0-beta.1cann-pto-isa 8.5.0-beta.1v8.5.0-beta.1CANN 8.5.0-beta.1cann-ge-compiler 8.5.0-beta.1v8.5.0-beta.1CANN 8.5.0-beta.1cann-ge-executor 8.5.0-beta.1v8.5.0-beta.1CANN 8.5.0-beta.1cann-graph-autofusion 8.5.0-beta.1v8.5.0-beta.1CANN 8.5.0-beta.1cann-metadef 8.5.0-beta.1v8.5.0-beta.1CANN 8.5.0-beta.1cann-dflow-executor 8.5.0-beta.1v8.5.0-beta.1CANN 8.5.0-beta.1cann-hcomm 8.5.0-beta.1v8.5.0-beta.1CANN 8.5.0-beta.1cann-npu-runtime 8.5.0-beta.1v8.5.0-beta.1CANN 8.5.0-beta.1配套要求可归纳为以下两点实战注意事项源码标签与 CANN 版本必须匹配下载源码时应选择与 CANN 软件版本配套的分支标签而非直接使用 master 分支。仓库 README.md 明确提示为确保您的源码定制开发顺利进行请选择配套的 CANN 版本与 Gitcode 标签源码使用 master 分支可能存在版本不匹配的风险。编译依赖按版本下限校验构建时会通过check_cann_pkg_build_deps检查已安装的依赖包版本见 CMakeLists.txt依赖组件版本低于8.5时编译将无法通过。四、关键特性支持离线编译4.1 特性背景v8.5.0-beta.1 的两项关键特性均围绕离线编译展开【工程能力】支持离线编译【资料优化】新增离线编译说明文档。离线编译的意义在于opbase 的构建过程依赖 json、eigen、protobuf 等多个第三方开源软件详见下文在无法访问互联网的现场机器上这些依赖无法自动下载导致编译失败。本版本通过支持指定本地第三方依赖目录的方式解决了这一问题。4.2 第三方依赖清单根据 docs/QUICKSTART.mdopbase 编译依赖的第三方开源软件如下开源软件版本用途说明json3.11.3C JSON 解析库makeself2.5.0生成自解压 run 安装包eigen5.0.0C 线性代数模板库protobuf25.1序列化协议库abseil-cpp20230802.1protobuf 依赖的基础库cann-cmakemaster-053CANN 公共 CMake 构建框架4.3 离线编译完整流程步骤 1在联网环境下载第三方依赖提供两种下载方式推荐使用仓库自带的下载脚本。脚本 scripts/tools/third_lib_download.py 内置了上述全部第三方软件的下载地址下载的文件默认保存在脚本所在目录python ${scripts_dir}/third_lib_download.py其中${scripts_dir}为脚本存放路径。脚本下载失败时会打印失败的 URL 列表并以非零状态退出便于排查。若选择手动下载方式请严格按照上表版本号获取对应软件包从其他地址下载时同样需要保证版本号一致。步骤 2将第三方软件上传至离线环境方式 A使用项目根目录third_party目录推荐在项目根目录创建third_party目录若已存在则无需创建将第三方软件拷贝到该目录。此时编译命令与联网编译场景完全一致bash build.sh --pkg [-j${n}] # 如bash build.sh --pkg -j16方式 B使用自定义目录在离线环境任意位置创建${cann_3rd_lib_path}目录将第三方软件拷贝到该目录并确保目录具备访问权限mkdir -p ${cann_3rd_lib_path}编译时通过--cann_3rd_lib_path参数显式指定第三方软件存放路径bash build.sh --pkg --cann_3rd_lib_path${cann_3rd_lib_path} [-j${n}] # 示例 # bash build.sh --pkg --cann_3rd_lib_path/path/cann_3rd_lib_path -j16 # bash build.sh --pkg --cann_3rd_lib_path/path/cann_3rd_lib_path其中--cann_3rd_lib_path是 docs/zh/appendix/build.md 中专门为离线编译场景提供的可选参数用于指定第三方库存放的目录。步骤 3安装/卸载算子包离线与联网场景编译得到的算子包结果一致默认存放于项目根目录build_out目录下。编译成功时会输出如下提示Self-extractable archive cann-opbase_${cann_version}_linux-${arch}.run successfully created.安装命令./cann-opbase_${cann_version}_linux-${arch}.run --full --install-path${install_path}${install_path}表示指定安装路径若不指定默认安装路径为/usr/local/Ascend若指定安装路径包一般安装在${install_path}目录下。卸载命令可选# 卸载命令 ./${install_path}/cann/share/info/opbase/script/uninstall.sh五、build.sh 构建参数全解无论是联网还是离线编译opbase 的统一构建入口都是项目根目录的build.sh脚本。该脚本将源代码自动编译、链接和配置最终生成可执行文件、库文件或安装包。执行bash build.sh --help可查看全部功能参数。使用前需确保环境变量已生效尤其是新打开的终端窗口# 默认路径安装以root用户为例 source /usr/local/Ascend/cann/set_env.sh参数说明表参数名可选/必选参数说明-j${n}可选指定编译线程数${n}为具体线程数默认值为8如-j8若线程数超过CPU核心数会自动调整为CPU核心数。--verbose,-v可选查看CMake编译配置信息。-O${n}可选指定编译优化级别支持O0/O1/O2/O3如-O3${n}为优化级别标识。-u可选启用单元测试UT编译模式编译所有UT目标。--help,-h可选打印脚本使用帮助信息。--build-type可选启用调试模式。可选类型Release/Debug默认为Release。--cov可选预留参数开发者暂不需要关注。--noexec可选仅编译单元测试二进制文件不自动执行编译后的UT可执行文件。--make_clean可选执行完全清理操作删除所有编译相关文件执行后脚本退出。--cann_3rd_lib_path可选离线编译场景下第三方库存放的目录。--pkg可选生成安装包。--asan可选开启host侧ASANAddressSanitizer内存检测功能。构建参数与源码的对应关系从源码看部分参数在底层 CMake 配置中有明确映射优化级别与默认值根目录 CMakeLists.txt 通过PACKAGE_TYPErun/rpm/deb/all默认 run控制打包类型cmake/config.cmake 中UT/ST 模式下默认编译优化级别为-O0非测试模式默认-O2同时会附加-Wall、-Wextra、-ftrapv、-fstack-protector-strong等一系列严格告警与安全加固编译选项并针对 GNU/Clang 编译器差异追加不同告警项。构建/运行依赖version.cmake 中通过set_cann_build_dependencies与set_cann_run_dependencies声明了 opbase 对 runtime、metadef、ge-executor 等 CANN 组件的版本要求8.5构建时会进行依赖校验。编译模式选择ENABLE_UT/ENABLE_ST开启时进入测试构建分支并编译 tests 目录否则构建 src/nnopbase 并进入打包流程见 CMakeLists.txt。六、问题修复解读v8.5.0-beta.1 版本修复了两类构建问题均与源码构建环境直接相关现场机器离线状态下进行 opbase 编译报错这正是本版本新增支持离线编译能力的直接动因。修复后开发者可通过--cann_3rd_lib_path参数或项目根目录third_party目录提前提供第三方依赖从而在无网络环境中完成编译。opbase 包编译报错 non-constant-expression cannot be narrowed这是 C 编译过程中常量表达式窄化转换导致的编译错误通常与整数类型宽度不一致的隐式转换有关。修复后在默认编译选项含-Wall -Wextra等严格告警下可正常完成编译。七、离线环境下的 UT 本地验证源码包部署后可通过build.sh执行 UT/ST 用例验证项目功能是否正常此过程同样适用于离线环境前提是已提前提供 googletest 等测试依赖。# 编译并执行所有的UT测试用例 bash build.sh -u # 编译所有的UT测试用例但不执行 bash build.sh -u --noexec # 执行UT并查看覆盖率 bash build.sh -u --cov执行完成后出现如下内容表示执行成功Global Global test environment tear-down [] ${n} tests from ${m} test suites ran. (${x} ms total) [ PASSED ] ${n} tests. Execute ops_base_ut successful.若已完成 UT 编译也可直接运行生成的测试二进制文件# 设置环境变量 source ${ASCEND_HOME_PATH}/bin/setenv.bash export LD_LIBRARY_PATHbuild/:$LD_LIBRARY_PATH # 运行nnopbase UT测试 cd build/tests/nnopbase/ut/ ./nnopbase_utest # 运行op_common UT测试 cd build/tests/op_common/ ./op_common_utest其中${ASCEND_HOME_PATH}为 CANN 安装路径默认为/usr/local/Ascend/cann。UT 执行依赖 googletest 框架建议版本 release-1.11.0并支持通过--gtest_filterTestSuiteName.TestCaseName过滤运行指定测试用例。八、总结v8.5.0-beta.1 作为 opbase 的首个 Beta 版本确立了版本配套体系与工程化构建能力其核心增量在于离线编译支持通过--cann_3rd_lib_path参数与配套的第三方依赖一键下载脚本开发者可以在物理隔离或弱网环境中完成 opbase 包的完整构建、安装与验证。对于在离线现场进行算子库定制的开发者建议遵循配套标签源码 提前准备第三方依赖 build.sh 参数化构建的完整流程并使用 UT 用例进行功能自检。后续版本迭代可关注仓库 CHANGELOG.md 的更新以及 docs/README.md 文档中心中算子调用指南、opbase API 类文档aclnn 公共接口、nnopbase 接口、op_common 接口等进阶内容。【免费下载链接】opbase本项目是CANN算子库的基础框架库为算子提供公共依赖文件和基础调度能力。项目地址: https://gitcode.com/cann/opbase创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联 返回资讯列表 →