skills/ascend-transformer-boost/skills/atb-testframework-build/SKILL.md
编译 ATB (Ascend Transformer Boost) 测试框架。当用户需要编译 ATB 测试框架、 运行 CSV 测试、或构建 atb_test_framework 时调用。支持全量编译(含第三方依赖克隆与源替换) 和增量编译两种模式。需在 Docker 容器内配合 CANN 环境执行。
npx skillsauth add Ascend/agent-skills atb-testframework-buildInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
此技能提供 ATB (Ascend Transformer Boost) 测试框架的编译指导,包括全量编译(含第三方依赖克隆与源替换)和增量编译两种模式。
在以下情况下调用此技能:
在执行编译前,需确认以下路径变量(从用户处获取):
| 变量 | 说明 | 示例 |
|---|---|---|
| <CANN_PATH> | CANN 安装根目录,包含 set_env.sh | /path/to/cann |
| <ATB_REPO_PATH> | ATB 源码仓库根目录 | /path/to/ascend-transformer-boost |
| <DOCKER_NAME> | Docker 容器名称 | <YOUR_DOCKER_NAME> |
当 3rdparty/ 目录已存在且第三方依赖完整时,直接执行增量编译:
docker exec <DOCKER_NAME> bash -c "
source <CANN_PATH>/set_env.sh && \
cd <ATB_REPO_PATH> && \
bash scripts/build.sh testframework
"
适用场景:第三方依赖已就绪,仅需重新编译 ATB 源码。
当 3rdparty/ 目录为空或不存在时,需要全量编译,包括第三方依赖的克隆。由于 Docker 容器内可能无法访问 GitHub,需要先进行源替换。
ATB 的 scripts/build.sh 中包含多个 GitHub 依赖,在国内网络环境下需要替换为 gitcode.com 镜像。
需要替换的源映射表:
| 原始 GitHub URL | gitcode 替换 URL | build.sh 中的函数 |
|---|---|---|
| https://github.com/nlohmann/json.git | https://gitcode.com/nlohmann/json.git | fn_build_nlohmann_json |
| https://github.com/google/googletest.git | https://gitcode.com/google/googletest.git | fn_build_googletest |
| https://github.com/coolxv/cpp-stub.git | https://gitcode.com/coolxv/cpp-stub.git | fn_build_stub |
| https://github.com/pybind/pybind11.git | https://gitcode.com/pybind/pybind11.git | fn_build_pybind11 |
| https://github.com/doxygen/doxygen/releases/download/Release_1_9_6/doxygen-1.9.6.src.tar.gz | 使用 git clone --branch Release_1_9_6 --depth 1 https://gitcode.com/doxygen/doxygen.git 替代 wget | fn_build_doxygen |
替换命令:
cd <ATB_REPO_PATH>
sed -i 's|https://github.com/nlohmann/json.git|https://gitcode.com/nlohmann/json.git|g' scripts/build.sh
sed -i 's|https://github.com/google/googletest.git|https://gitcode.com/google/googletest.git|g' scripts/build.sh
sed -i 's|https://github.com/coolxv/cpp-stub.git|https://gitcode.com/coolxv/cpp-stub.git|g' scripts/build.sh
sed -i 's|https://github.com/pybind/pybind11.git|https://gitcode.com/pybind/pybind11.git|g' scripts/build.sh
doxygen 替换说明:doxygen 的 wget 下载需要改为 git clone 方式,修改 fn_build_doxygen 函数:
# 将 wget + tar 方式替换为 git clone
# 原始代码:
# [[ ! -f "doxygen-1.9.6.src.tar.gz" ]] && wget --no-check-certificate https://github.com/doxygen/doxygen/releases/download/Release_1_9_6/doxygen-1.9.6.src.tar.gz
# tar -xzvf doxygen-1.9.6.src.tar.gz
# mv doxygen-1.9.6 doxygen
# 替换为:
# [[ ! -d "doxygen" ]] && git clone --branch Release_1_9_6 --depth 1 https://gitcode.com/doxygen/doxygen.git
</details>
cd <ATB_REPO_PATH>
rm -rf build output 3rdparty
docker exec <DOCKER_NAME> bash -c "
source <CANN_PATH>/set_env.sh && \
cd <ATB_REPO_PATH> && \
bash scripts/build.sh testframework
"
编译成功后,检查关键产物:
# 检查测试框架库
ls -lh <ATB_REPO_PATH>/output/atb/cxx_abi_0/lib/libatb_test_framework.so
# 检查 ATB 主库
ls -lh <ATB_REPO_PATH>/output/atb/cxx_abi_0/lib/libatb.so
预期产物:
libatb_test_framework.so — 测试框架核心库libatb.so — ATB 主库atb_testframework_<arch>_<timestamp>.tar.gz — 打包文件编译完成后,设置环境变量以运行 CSV 测试:
source <ATB_REPO_PATH>/output/atb/set_env.sh
或手动设置:
export ATB_HOME_PATH=<ATB_REPO_PATH>/output/atb/cxx_abi_0
export LD_LIBRARY_PATH=<ATB_REPO_PATH>/output/atb/cxx_abi_0/lib:$LD_LIBRARY_PATH
cd <ATB_REPO_PATH>/tests/framework/python/CsvOpsTestTool
python3 atb_csv_ops_test.py -i <csv_file_path> -n <start>:<end>
<details>
<summary>第三方依赖说明(点击展开)</summary>
testframework 构建所需的第三方依赖:
| 依赖 | 源 | 用途 | |---|---|---| | nlohmannJson | gitcode.com/nlohmann/json (v3.11.3) | JSON 解析库 | | Mind-KernelInfra (mki) | gitcode.com/cann/ascend-boost-comm | 内核基础设施 | | catlass | gitcode.com/cann/catlass | 矩阵运算库 | | compiler | CANN 路径符号链接 | 编译器工具链 |
注意:testframework 不需要 googletest、cpp-stub、pybind11、doxygen(这些是 unittest/fuzztest/doc 构建模式所需)。但如果使用其他构建模式(如 alltest、unittest),也需要替换对应的 GitHub 源。
编译时 USE_CXX11_ABI 由 fn_init_env 函数自动检测:
output/atb/cxx_abi_0/ 或 output/atb/cxx_abi_1/| 问题 | 原因 | 解决方案 |
|---|---|---|
| git clone 失败 (curl 16) | GitHub 网络不通 | 替换为 gitcode 镜像源 |
| ASCEND_HOME_PATH is null | 未 source CANN 环境 | 先执行 source <CANN_PATH>/set_env.sh |
| libatb_test_framework.so 不存在 | 编译未完成或失败 | 检查编译日志,确保 BUILD_TEST_FRAMEWORK=ON |
| 第三方依赖克隆 403 | gitcode 仓库路径错误 | 确认 gitcode 上的仓库路径和标签 |
当修改了 *_aclnn_runner.cpp、*_operation.cpp 等源码后,需要重新编译:
# 在 Docker 容器内执行(已在容器中)
source $ASCEND_TOOLKIT_HOME/set_env.sh
cd $ATB_REPO_PATH
bash scripts/build.sh testframework 2>&1 | tail -50
注意:确保环境变量已设置:
ASCEND_TOOLKIT_HOME(CANN 安装路径,如/usr/local/Ascend/ascend-toolkit/latest)ATB_REPO_PATH(ATB 仓库路径,如{your working path}ascend-transformer-boost)
编译失败处理流程:
| 失败次数 | 操作 | 说明 |
|---------|------|------|
| 第1次失败 | 分析日志,定位问题,修复后重新编译 | 正向分析错误原因 |
| 第2次失败 | rm -rf build/ output/ 清理后重新编译 | 清理 cmake 缓存 |
| 第3次失败 | bash scripts/build.sh testframework --clean-first | 从头编译,完整清理 |
编译约束规则:
编译错误记录模板:
### 编译失败记录 (#N)
**错误信息**:
<编译器输出>
**问题分析**:
<分析原因>
**修改计划**:
1. <修改步骤1>
2. <修改步骤2>
**状态**:待用户确认
</details>
⚠️ 执行后填写:技能执行完成后,参照下方格式填写实际执行结果。
| 步骤 | 检查点描述 | 状态 |
|------|-----------|------|
| - | CANN 环境 sourced (ASCEND_TOOLKIT_HOME 已设置) | ✅ PASS / ❌ FAIL / ⏭️ SKIP |
| - | Docker 容器运行中 | ✅ PASS / ❌ FAIL / ⏭️ SKIP |
| - | ATB 源码目录存在 | ✅ PASS / ❌ FAIL / ⏭️ SKIP |
| 1 | GitHub→gitcode 源替换已应用 | ✅ PASS / ❌ FAIL / ⏭️ SKIP |
| 2 | libatb.so 编译产物存在 | ✅ PASS / ❌ FAIL / ⏭️ SKIP |
| 2 | libatb_test_framework.so 编译产物存在 | ✅ PASS / ❌ FAIL / ⏭️ SKIP |
| 2 | CXX ABI 目录命名正确 | ✅ PASS / ❌ FAIL / ⏭️ SKIP |
| 3 | ATB_HOME_PATH 指向输出目录 | ✅ PASS / ❌ FAIL / ⏭️ SKIP |
| 3 | LD_LIBRARY_PATH 包含 ATB lib | ✅ PASS / ❌ FAIL / ⏭️ SKIP |
| 4 | CSV 测试可正常启动 | ✅ PASS / ❌ FAIL / ⏭️ SKIP |
VERDICT: ✅ SUCCESS / ⚠️ PARTIAL / ❌ FAILED / ⏭️ SKIPPED
| 等级 | 检查点 | 问题描述 | 建议 | |------|--------|---------|------| | 🔴 CRITICAL | - | - | - | | 🟡 WARNING | - | - | - |
testing
Kubernetes 集群健康检查与安全修复 — 诊断问题,用户确认后执行修复
tools
昇腾NPU CANN Toolkit+Kernels+NNAL安装部署技能。支持从官网下载run包安装和从Docker镜像提取两种方式,覆盖驱动检查、包下载、安装、环境变量配置与验证全流程。当用户需要安装CANN全套组件或指定版本CANN到自定义路径时调用。
databases
ATB OPS→ACLNN 迁移标准化工作流主模板。整合前置学习、设计文档生成、CSV用例设计、 实际迁移、编译验证、测试验证全流程,提供明确的阶段 Gates 和用户确认机制。
tools
昇腾 NPU NNAL(ATB 加速库)安装技能。依赖 cann-operator-env-config 提供 Toolkit+Kernels 环境,本技能仅负责 NNAL 包的安装、环境变量配置与验证。