ARTICLE DETAIL

资讯详情

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

CANN asc-tools 快速入门:从环境准备到编译安装与 UT 测试的完整实战指南

CANN asc-tools 快速入门:从环境准备到编译安装与 UT 测试的完整实战指南 CANN asc-tools 快速入门从环境准备到编译安装与 UT 测试的完整实战指南【免费下载链接】asc-toolsAscend C Tools仓是CANN基于Ascend C编程语言推出的配套调试工具仓。项目地址: https://gitcode.com/cann/asc-toolsasc-tools 是 CANN 基于 Ascend C 编程语言推出的配套调试工具仓内置 cpudebugCPU 仿真调试、npuchkNPU 算子校验、msobjdump二进制转储、optype_collector算子类型采集、show_kernel_debug_data内核调试数据解析等能力。本文以仓库官方快速入门文档 docs/00_quick_start.md 为主线完整覆盖四种环境准备方式云开发环境、CANN 镜像 Docker、DevContainer、物理机、CANN 包下载安装、环境验证、源码编译安装与 UT 测试全流程并结合仓库内的 build.sh、.devcontainer、version.cmake 等源码佐证帮助你从零搭建可用的 Ascend C 算子开发与调试环境并成功编译出cann-asc-tools安装包。一、环境准备先按“有无 NPU”和“使用目标”做选择搭建 asc-tools 开发环境的第一步是明确两个前提宿主机本地是否有 NPU 设备以及你的使用目标是社区体验/算子开发对应 CANN 商用/社区版还是生态开发/源码贡献对应 CANN master。依据这两个条件官方文档给出了如下决策表环境情况用于社区体验 / 算子开发CANN商用/社区版用于生态开发CANN master无NPU设备云开发环境云开发环境 手动下载安装CANN master有NPU设备基于CANN镜像的DockerDev Container 手动下载安装CANN master选择建议摘自原文档为了保障开发体验环境的质量推荐基于容器化技术完成环境准备。如不希望使用容器也可在带 NPU 设备的主机上完成环境准备请参考 CANN 软件安装指南中“在物理机上安装”章节。针对仅体验“编译安装本开源仓 仿真环境运行算子”的用户不要求主机带 NPU 设备可跳过安装 NPU 驱动和固件直接安装 CANN 包见本文第四节。这一点从源码结构可以得到印证本仓的 cpudebug 仿真能力cpudebug/include/tikicpulib.h 等面向纯 CPU 仿真运行算子样例examples/02_cpudebug可在无 NPU 的仿真环境运行。二、方式一CANNLab 云开发环境无 NPU 用户首选对于无 NPU 设备的用户可直接使用CANNLab 云开发环境即“一站式开发平台”。该平台提供在线可直接运行的昇腾 ARM 架构环境已预装必备的驱动固件、软件包和依赖无需手动安装。目前仅适用于 Atlas A2 系列产品提供两种接入方式WebIDE网页版便携开发体验。VSCode IDE支持远程连接云开发环境可享用 VSCode 插件市场生态。接入步骤进入开源仓 Gitcode 页面单击“CANNLab 云开发”按钮使用已认证的华为云账号登录未注册/认证需先按页面提示完成。按页面提示创建 NPU 环境并配置规格启动云开发环境后单击“连接 WebIDE 或 Visual Studio Code”进入一站式开发平台。当前开源项目资源默认位于/mnt/workspace/gitCode/${gitCode_id}目录下其中${gitCode_id}为开发者个人 gitCode 账号。[!NOTE] 使用说明环境默认安装了最新的商用版 NPU 驱动和固件、CANN 包源码下载时注意与软件配套。如需下载特定版本的 CANN 包请参考本文第四节。更多关于 CANNLab 云开发环境的介绍请参考仓库讨论区的 CANNLab 指导Huawei Developer Space 插件为 VSCode IDE 接入云开发环境提供技术支持。云开发环境与本文第六节“环境验证”中的命令适配验证 CANN 包安装信息时CANNLab 场景下需将默认路径中的/usr/local替换为/home/developer。三、方式二基于 CANN 镜像的 Docker有 NPU 用户推荐3.1 确认主机环境NPU 驱动与固件执行npu-smi info若能输出 NPU 相关信息则已安装如未安装请参考 CANN 软件安装指南中“准备软件包”和“安装 NPU 驱动和固件”章节。注意驱动与固件是运行态依赖若仅编译本项目源码可以不安装。Docker执行docker --version能输出版本信息即可未安装请参考 Docker 官方安装指南。3.2 拉取 CANN 镜像从昇腾镜像仓库拉取已预集成 CANN 的镜像命令格式为docker pull ascend/cann:tag# 示例拉取 ascend/cann:tag 为 9.0.0-beta.2 的 CANN 社区包 docker pull swr.cn-south-1.myhuaweicloud.com/ascendhub/cann:9.0.0-beta.2-910b-ubuntu22.04-py3.11[!NOTE] 使用说明镜像默认安装了对应版本的 CANN 包源码下载时注意与软件配套。镜像文件较大正常网速下下载时间约为 510 分钟。3.3 运行 Docker完整命令与参数表拉取镜像后必须以特定参数启动使容器内能访问宿主机 NPU 设备docker run --name cann_container \ --ipchost --nethost --privileged \ --device /dev/davinci0 \ --device /dev/davinci_manager \ --device /dev/devmm_svm \ --device /dev/hisi_hdc \ -v /usr/local/dcmi:/usr/local/dcmi \ -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \ -v /usr/local/Ascend/driver/lib64/:/usr/local/Ascend/driver/lib64/ \ -v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info \ -v /etc/ascend_install.info:/etc/ascend_install.info \ -v /home/your_host_dir:/home/your_container_dir \ -it ascend/cann:tag bash各参数含义与注意事项如下参数说明注意事项--name cann_container为容器指定名称便于管理自定义--ipchost与宿主机共享 IPC 命名空间NPU 进程间通信共享内存、信号量所需---nethost使用宿主机网络栈避免容器网络转发带来的通信延迟---privileged赋予容器完整设备访问权限NPU 驱动正常工作所需---device /dev/davinci0将宿主机的 NPU 设备卡映射到容器内可指定映射多张 NPU 卡必须根据实际情况调整davinci0对应系统中第 0 张 NPU 卡。先在宿主机执行npu-smi info按输出显示的设备号如NPU 0、NPU 1修改编号--device /dev/davinci_manager映射 NPU 设备管理接口---device /dev/devmm_svm映射设备内存管理接口---device /dev/hisi_hdc映射主机与设备间的通信接口--v /usr/local/dcmi:/usr/local/dcmi挂载设备容器管理接口DCMI相关工具和库--v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi挂载npu-smi工具使容器内可直接运行此命令查询 NPU 状态和性能信息-v /usr/local/Ascend/driver/lib64/:/usr/local/Ascend/driver/lib64/将宿主机 NPU 驱动库映射到容器内--v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info挂载驱动版本信息文件--v /etc/ascend_install.info:/etc/ascend_install.info挂载 CANN 软件安装信息文件--v /home/your_host_dir:/home/your_container_dir挂载宿主机的一个路径到容器中自定义-it-i交互式和-t分配伪终端的组合参数-ascend/cann:tag指定要运行的 Docker 镜像确保镜像名和 tag 与docker pull拉取的完全一致bash容器启动后立即执行的命令-从源码层面看仓库自带的 DevContainer 配置.devcontainer/devcontainer.json使用了几乎一致的一组参数--ipchost --nethost --privileged逐卡列出--device/dev/davinci0至davinci7并挂载davinci_manager、devmm_svm、hisi_hdc三个控制设备同时以只读方式挂载驱动与 DCMI 目录。这份配置文件本身就是上述参数表的“可运行实例”宿主机 NPU 数量不足时删除多余的--device/dev/davinciN行即可。四、方式三DevContainer有 NPU 用户生态开发推荐对于有 NPU 设备、且计划向本仓贡献代码的用户推荐使用DevContainer。它基于 VS Code Dev Containers通过仓库内 .devcontainer 配置自动构建一致的容器化开发环境基础镜像为 Ubuntu 24.04内置conda默认激活py312环境Python 3.12 PyTorch 2.7.1、Python等开发工具链详见 .devcontainer/Dockerfile。与宿主机的 NPU 驱动共享设备访问驱动目录以只读方式挂载适合需要编译源码、运行 UT、向本仓贡献代码的场景。完整使用方法请参考仓库内的 .devcontainer/README.md。[!NOTE] 使用说明 DevContainer仅挂载宿主机的 NPU 驱动只读CANN toolkit 和 ops 包需在容器启动后手动安装请参考本文第五节。DevContainer 的 Python 依赖清单以 Python 3.12 为例可参考 .devcontainer/requirements.txt。五、下载安装 CANN 包CANN 包分为CANN toolkit 包和CANN ops 包两类。5.1 下载 CANN 包下载 CANN 商用/社区版体验官网正式发布的 CANN 包请访问昇腾社区“CANN 安装部署”页面获取对应版本。下载 CANN master体验 CANN master请访问 CANN master 的 OBS 镜像网站下载日期最新的 CANN 包。5.2 安装 CANN 包1. 安装 CANN toolkit 包必选chmod x Ascend-cann-toolkit_${cann_version}_linux-$(uname -m).run ./Ascend-cann-toolkit_${cann_version}_linux-$(uname -m).run --install --install-path${install_path}2. 安装 CANN ops 包可选chmod x Ascend-cann-${soc_name}-ops_${cann_version}_linux-$(uname -m).run ./Ascend-cann-${soc_name}-ops_${cann_version}_linux-$(uname -m).run --install --install-path${install_path}[!IMPORTANT] 安装说明 examples 中部分算子样例的编译运行依赖 ops 包若想完整体验样例编译运行流程建议安装此包。参数说明参数说明${cann_version}CANN 包版本号${soc_name}NPU 型号如910b${install_path}安装路径toolkit 包和 ops 包需相同。默认root 用户/usr/local/Ascend非 root 用户$HOME/Ascend版本配套关系是本仓编译的关键约束根目录 version.cmake 中声明了当前 asc-tools 版本号ASC_TOOLS_VERSION仓库当前为 9.2.0并通过set_cann_build_dependencies/set_cann_run_dependencies声明了对 runtime、ge-executor、metadef、asc-devkit 等同版本组件的编译/运行依赖。也就是说编译本仓时必须搭配对应版本的 CANN 包具体规则见本文第七节。六、环境验证与环境变量配置6.1 环境验证[!NOTE] 使用前须知 云开发环境和基于 CANN 镜像的 Docker 已预装 CANN 包可直接执行以下命令验证DevContainer 和手动安装用户请在安装 CANN 包后执行。检查 NPU 设备# 运行 npu-smi若能正常显示设备信息则驱动正常 npu-smi info检查 CANN 包安装# 查看 CANN Toolkit 的 version 字段默认路径安装。CANNLab 场景下请将 /usr/local 替换为 /home/developer cat /usr/local/Ascend/cann/$(uname -m)-linux/ascend_toolkit_install.info # 查看 CANN ops 的 version 字段默认路径安装。CANNLab 场景下请将 /usr/local 替换为 /home/developer cat /usr/local/Ascend/cann/$(uname -m)-linux/ascend_ops_install.info6.2 环境变量配置[!NOTE] 使用前须知 云开发环境和基于 CANN 镜像的 Docker 已自动配置环境变量可跳过此步骤。按需选择合适的命令使环境变量生效# 默认路径安装以 root 用户为例非 root 用户将 /usr/local 替换为 ${HOME} source /usr/local/Ascend/cann/set_env.sh # 指定路径安装 # source ${install_path}/cann/set_env.sh七、源码编译步骤下载、依赖与编译安装7.1 下载源码编译环境可以访问网络时推荐命令行方式下载# 开发环境非 root 用户执行git_clone_path 为用户自建目录 cd ${git_clone_path} git clone https://gitcode.com/cann/asc-tools.git如需切换到其它 tag 版本以 v0.5.0 为例git checkout v0.5.0编译环境无法访问网络时可通过压缩包方式下载下载时间较短步骤稍复杂# 1. asc-tools 仓右上角选择【下载ZIP】。 # 2. 将 ZIP 包上传到开发环境普通用户某个目录例如 ${git_clone_path}/asc-tools-master.zip。 # 3. 解压。 cd ${git_clone_path} unzip asc-tools-master.zip7.2 离线编译的三类依赖包离线方式下载源码后还需同步准备以下依赖下载压缩包命名与 tag/branch 相关此处以 master 分支为例1依赖代码仓的 master 分支压缩包需分别下载 msot、mssanitizer、msopprof、msopgen、mskpp、mskl、msdebug 代码仓的 master 分支压缩包即进入各仓页面后右上角选择【下载ZIP】。这些依赖仓与主 CMake 构建关系清晰根目录 CMakeLists.txt 依次add_subdirectory了 cpudebug、npuchk、utils/msobjdump、utils/optype_collector、utils/templates、utils/show_kernel_debug_data 等子模块而 msot 等仓则通过 build.sh 中的MSOT_SUBMODULES配置在--pkg --msot场景下被联动构建。2闭源 cpudebug 包Release 版根据实际环境下载对应 Release 版本的闭源 cpudebug 包区分 x86_64 / aarch64 两个架构。cpudebug 是本仓 CPU 仿真调试能力的核心运行库其源码接口可见 cpudebug/include 目录如 tikicpulib.h、kernel_fp16.h、kernel_fp32.h 等。从构建脚本看build.sh 的copy_deps_file函数会自动把构建目录下的cann-asc-tools-cpudebug-deps*.tar.gz复制到三方库目录供编译使用。3开源第三方软件依赖开源软件版本说明makeself2.5.0run 包自解压制作工具boost1.87.0C 基础库googletest1.14.0UT 测试框架编译依赖版本mockcpp2.7C 打桩框架含 mockcpp_patch 2.7cann-cmakemaster-003CANN 统一 CMake 构建框架对于上述开源第三方软件仓库提供了一键式下载脚本install_dep_tar.pypython3 install_dep_tar.py --dest_dir${your_3rd_party_path} # ${your_3rd_party_path} 为第三方软件存放路径7.3 安装编译依赖[!NOTE] 使用前须知 如果使用容器化技术容器中已安装好依赖可跳过此步骤。以下所列仅为本开源仓源码编译用到的依赖Python/gcc/cmake 的安装方法请参见配套版本的 CANN 用户手册中“安装CANN 安装依赖”章节python 3.7.0注意python 已宣布 3.7.x/3.8.x 版本 EOLCANN 即将停止支持请升级到 3.9.x 版本gcc 与 g支持版本范围 7.3.x 至 14.x要求 gcc 与 g 版本一致cmake 3.16.0与根目录 CMakeLists.txt 中cmake_minimum_required(VERSION 3.16.0)的要求一致ccache 4.6.1建议版本 release-v4.6.1x86_64 环境安装 ccache# 在准备安装的路径下创建 buildtools 目录如有则忽略此处以 /opt 为例 mkdir /opt/buildtools # 切换到安装包下载路径将 ccache 解压到安装路径 tar -xf ccache-4.6.1-linux-x86_64.tar.xz -C /opt/buildtools chmod 755 /opt/buildtools/ccache-4.6.1-linux-x86_64/ccache mkdir -p /usr/local/ccache/bin # 建立软链接 ln -sf /opt/buildtools/ccache-4.6.1-linux-x86_64/ccache /usr/local/bin/ccache ln -sf /opt/buildtools/ccache-4.6.1-linux-x86_64/ccache /usr/local/ccache/bin/ccache # 将 ccache 添加到环境变量 PATH export PATH/usr/local/ccache/bin:$PATHaarch64 环境安装 ccache需先下载依赖项 zstd 和 hiredis再编译安装# 在准备安装的路径下创建 buildtools 目录如有则忽略此处以 /opt 为例 mkdir /opt/buildtools # 切换到安装包下载路径将 zstd 解压到安装路径 tar -xf zstd-1.5.0.tar.gz -C /opt/buildtools cd /opt/buildtools/zstd-1.5.0 make -j 24 make install cd - # 将 hiredis 解压到安装路径 tar -xf hiredis-1.0.2.tar.gz -C /opt/buildtools cd /opt/buildtools/hiredis-1.0.2 make -j 24 prefix/opt/buildtools/hiredis-1.0.2 all make prefix/opt/buildtools/hiredis-1.0.2 install cd - # 将 ccache 解压到安装路径并编译 tar -xf ccache-4.6.1.tar.gz -C /opt/buildtools cd /opt/buildtools/ccache-4.6.1 mkdir build cd build/ cmake -DCMAKE_BUILD_TYPERelease -DZSTD_LIBRARY/usr/local/lib/libzstd.a -DZSTD_INCLUDE_DIR/usr/local/include -DHIREDIS_LIBRARY/usr/local/lib/libhiredis.a -DHIREDIS_INCLUDE_DIR/usr/local/include .. make -j 24 make install mkdir -p /usr/local/ccache/bin # 建立软链接 ln -sf /usr/local/bin/ccache /usr/local/ccache/bin/ccache # 将 ccache 添加到环境变量 PATH export PATH/usr/local/ccache/bin:$PATH其余依赖按需安装setuptools 45.2.0pip3 install setuptoolslcov 1.13可选仅执行 UT 时依赖Ubuntux86_64执行apt install lcovEuleraarch64执行yum install lcovpytest 8.3.2可选仅执行 UT 时依赖pip3 install pytestcoverage 4.5.4可选仅执行 UT 时依赖pip3 install coveragegoogletest可选仅执行 UT 时依赖建议 release-1.11.0mkdir temp cd temp # 在 googletest 源码根目录下创建临时目录并进入 cmake .. -DCMAKE_CXX_FLAGS-fPIC -D_GLIBCXX_USE_CXX11_ABI0 make make install # root 用户安装 googletest # sudo make install # 非 root 用户安装 googletest7.4 编译 asc-tools 安装包本开源仓提供一键式编译安装能力。进入开源仓代码根目录执行cd asc-tools bash build.sh --pkg若编译环境无法访问网络需要在联网环境下载上述依赖代码仓、闭源及开源软件的压缩包并上传至编译环境先创建存放目录mkdir -p {your_3rd_party_path}将压缩包上传至{your_3rd_party_path}后使用以下命令编译bash build.sh --pkg --cann_3rd_lib_path{your_3rd_party_path}编译完成后会在build_out目录下生成cann-asc-tools_cann_version_linux-arch.run软件包。以仓库当前 version.cmake 声明的版本为例产物即形如cann-asc-tools_9.2.0_linux-x86_64.run。从 build.sh 源码看该脚本还支持一组实用的构建参数可在编译时按需使用参数说明-p, --cann_path指定 CANN 包安装目录如/usr/local/Ascend/latest不指定时脚本按ASCEND_HOME_PATH、ASCEND_OPP_PATH、默认安装目录等顺序自动探测-j编译线程数默认取宿主机 CPU 核数超过核数时自动收敛--pkg --msot同时编译 msot 相关包--pkg-typeTYPE指定包类型run/rpm/deb默认run--asan开启 Address Sanitizer--build-typeTYPE指定构建类型Release/Debug默认Release--make_clean清理构建产物build与build_out目录[!CAUTION] 编译报错可能 本仓依赖其他 CANN 开源仓暂不支持独立升级须搭配对应版本的 CANN 包进行编译master 分支→ 使用最新的 CANN master 包特定 Tag→ 使用对应版本的官网正式发布的 CANN 包7.5 安装 run 包在开源仓根目录下执行下列命令根据设置的环境变量路径将编译生成的 run 包安装到 CANN 包的装包路径同时会覆盖原 CANN 包中的 Ascend C 内容# 切换到 run 包生成路径下 cd build_out # 默认路径安装 run 包 ./cann-asc-tools_cann_version_linux-arch.run --full --pylocal # 指定路径安装 run 包 ./cann-asc-tools_cann_version_linux-arch.run --full --pylocal --install-path${install_path}安装后即可使用本仓提供的各工具能力例如CPU 仿真调试examples/02_cpudebug在无 NPU 的仿真环境运行 Ascend C 算子NPU 算子校验npuchk入口见 npuchk/ascendc_npuchk_report.py二进制转储解析msobjdump入口见 utils/msobjdump/msobjdump/msobjdump_main.py内核调试数据解析show_kernel_debug_data入口见 utils/show_kernel_debug_data/show_kernel_debug_data/data_converter.py算子类型采集optype_collector入口见 utils/optype_collector/optype_collector/optype_collector_main.py。各工具的详细用法可继续阅读 docs/00_quick_start.md 之外的分册文档如 docs/01_cpu_debug.md、docs/02_npu_check.md、docs/03_msobjdump.md、docs/04_show_kernel_debug_data.md、docs/05_optype_collector.md。八、UT 测试可选在开源仓根目录执行下列命令之一将依次批跑 tests 目录下的用例得到结果日志用于看护编译是否正常bash build.sh -t或bash build.sh --test若编译环境无法访问网络需先在联网环境下载依赖代码仓及开源软件压缩包并上传至{your_3rd_party_path}目录mkdir -p {your_3rd_party_path}上传依赖压缩包后执行bash build.sh --test --cann_3rd_lib_path{your_3rd_party_path}[!NOTE] 与编译的区别 相比编译UT不下载 Release 版本的 cpudebug 包而是需要根据实际环境下载对应Debug 版本的闭源 cpudebug 包同样区分 x86_64 / aarch64。Debug 版本相比 Release 版本更方便进行调试。UT 用例覆盖了本仓各核心模块从 tests/ut/testcase 目录结构可以看出测试面acl_stub、regfwk如 test_kernel_print_lock.cpp、test_stub_reg.cpp、tikcpp_api_check如 test_copy_check.cpp、test_vec_binary_check.cpp、tikcpp_case_common如 test_cpu_debug_check.cpp、test_kernel_utils.cpp等Python 侧测试位于 tests/py_ut/testcase覆盖 msobjdump、optype_collector、show_kernel_debug_data 三个工具。从 build.sh 源码看UT 模式下脚本会自动追加-DENABLE_TESTON -DTEST_MODall并将构建类型切换为Debug测试还支持分模块运行--cpp_utest/--python_utest与 ASAN 开关--asan。8.1 UT 测试显示覆盖率依赖项lcov 1.14执行命令bash build.sh --test --cov从 build.sh 源码可知--cov对应在 CMake 配置中追加-DENABLE_GCOVtrue配合 tests/cmake/tools/generate_cpp_cov.sh 等脚本完成代码覆盖率统计。九、总结本仓的快速入门流程可以概括为一条主线按有无 NPU 选定环境 → 准备对应版本的 CANN 包 → 验证环境与加载环境变量 → 下载源码与依赖 →bash build.sh --pkg编译 → 安装 run 包 → 可选 UT 测试。其中最容易踩坑的是版本配套关系无论是 CANN 商用/社区版还是 CANN master编译时必须与 version.cmake 声明的 asc-tools 版本匹配离线编译场景则需完整准备依赖仓、闭源 cpudebug 包与开源第三方软件三类压缩包。掌握上述流程后即可在本地完成 Ascend C 算子的仿真调试、NPU 校验与工具链的二次开发。【免费下载链接】asc-toolsAscend C Tools仓是CANN基于Ascend C编程语言推出的配套调试工具仓。项目地址: https://gitcode.com/cann/asc-tools创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表