with one click
atb-aclnn-operator-migration
// 自动执行 ATB 算子到 ACLNN 的迁移操作,在 910B/950 设备上启用 ACLNN 加速。 支持参数映射、ACLNN Runner 实现、设备检测切换和功能/性能验证全流程。
// 自动执行 ATB 算子到 ACLNN 的迁移操作,在 910B/950 设备上启用 ACLNN 加速。 支持参数映射、ACLNN Runner 实现、设备检测切换和功能/性能验证全流程。
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | atb-aclnn-operator-migration |
| description | 自动执行 ATB 算子到 ACLNN 的迁移操作,在 910B/950 设备上启用 ACLNN 加速。 支持参数映射、ACLNN Runner 实现、设备检测切换和功能/性能验证全流程。 |
| keywords | ["atb","aclnn","migration","operator","昇腾","ascend","910b",950] |
| metadata | {"author":"ascend-transformer-boost-team + Claude Code + opus4.7","version":"1.2.0","created":"2026-04-17","updated":"2026-04-28","skill-type":"migration"} |
| hooks | {"PreToolUse":[{"matcher":"Write|Edit|Bash","hooks":[{"type":"command","command":"([ -z \"$CANN_PATH\" ] || [ ! -f \"$CANN_PATH/set_env.sh\" ]) && echo '[PATH CHECK] CANN_PATH 未设置或无效,请先向用户获取 CANN 路径' >&2; ([ -z \"$ATB_REPO_PATH\" ] || [ ! -d \"$ATB_REPO_PATH\" ]) && echo '[PATH CHECK] ATB_REPO_PATH 未设置或无效,请先向用户获取 ATB 路径' >&2 || true"}]}]} |
该工具帮助开发者将ATB中的算子迁移到ACLNN实现,特别是在 910B/950 设备上获得更好的兼容性优化。
在以下情况下调用此技能:
atb-aclnn-operator-replacement-designer)执行此技能前,必须从用户处获取以下路径:
<CANN_PATH>: CANN 安装路径(如 /usr/local/Ascend/ascend-toolkit/latest)<ATB_REPO_PATH>: ATB 仓库路径(如 {your working path}ascend-transformer-boost)若用户未提供或路径无效,立即停止并报错。
ASCEND_TOOLKIT_HOME 已设置)atb-aclnn-operator-replacement-designer 生成设计文档每个操作步骤末尾的 检查点 标记了验证标准。执行完成后请在 执行结果 章节填写实际状态。
| 检查点 ID | 描述 | 验证命令 |
|---|---|---|
| Step0-ENV | CANN 环境 sourced | echo $ASCEND_TOOLKIT_HOME |
| Step0-DIR | ATB 源码目录存在 | [ -d <ATB_REPO_PATH> ] |
| Step1-DIR | 原有 Operation 源文件定位 | ls <op>_operation.cpp |
| Step1-DIR | 现有 ACLNN runner 参考定位 | ls softmax_aclnn_runner.cpp |
| Step2-FILE | <op>_aclnn_runner.h 创建 | [ -f <op>_aclnn_runner.h ] |
| Step2-FILE | <op>_aclnn_runner.cpp 创建 | [ -f <op>_aclnn_runner.cpp ] |
| Step2-CODE | BuildAclnnVariantPack 实现 | grep "BuildAclnnVariantPack" <op>_aclnn_runner.cpp |
| Step2-CODE | SetAclNNWorkspaceExecutor 实现 | grep "SetAclNNWorkspaceExecutor" <op>_aclnn_runner.cpp |
| Step2-CODE | LaunchAclnnKernel 实现 | grep "LaunchAclnnKernel" <op>_aclnn_runner.cpp |
| Step2-CODE | LoadMethod 实现 | grep "LoadMethod" <op>_aclnn_runner.cpp |
| Step3-MOD | CreateRunner 包含 910B/950 分支 | grep "Is910B|Is950|910B|950" <op>_operation.cpp |
| Step4-BUILD | 编译成功无错误 | make ... 2>&1 |
| Step5-TEST | 非 910B/950 设备功能正常 | ./apitest ... |
理解ATB算子参数结构
infer_op_params.h 中的参数结构分析现有实现
<operator>_operation.cpp 了解操作逻辑<operator>_ops_runner.cpp 了解现有runner实现研究ACLNN接口
创建头文件 (<operator>_aclnn_runner.h)
AclnnRunner 基类实现源文件 (<operator>_aclnn_runner.cpp)
BuildAclnnVariantPack 方法处理张量转换SetAclNNWorkspaceExecutor 方法配置工作空间LaunchAclnnKernel 方法执行计算LoadMethod 方法动态加载ACLNN函数更新头文件包含
#include "<operator>_aclnn_runner.h"修改CreateRunner方法
<Operator>AclnnRunner<Operator>OpsRunner更新设备支持
CreateOperation 函数编译验证
功能验证
性能验证
参数映射
设备检测
GetSingleton<Config>().Is910B() 检测 910B 设备类型GetSingleton<Config>().Is950() 检测 950 设备类型内存管理
错误处理
ACLNN加速
条件编译
设备兼容性
接口一致性
测试覆盖
错误处理
# 确保CANN环境正确配置
# 确保ATB代码库已更新
# 在ATB代码库中应用迁移
git apply <operator>_aclnn_migration.patch
# 编译ATB代码
cd ascend-transformer-boost
mkdir build && cd build
cmake ..
make -j
# 运行算子测试
./tests/apitest/opstest/python/operations/<operator>/test_<operator>.py
# 对比ATB和ACLNN实现的性能
python performance_benchmark.py
A: 检查CANN版本是否兼容,确保ACLNN接口可用。
A: 检查ACLNN函数是否正确加载,验证工作空间配置。
A: 确保设备检测逻辑正确,验证原有实现未受影响。
通过该工具,开发者可以轻松将ATB算子迁移到ACLNN实现,在910B/950设备上获得更好的性能,同时保持对其他设备的兼容性。该实现遵循项目代码规范,与现有ACLNN runner实现保持一致,确保代码质量和可维护性。
⚠️ 执行后填写:技能执行完成后,参照下方格式填写实际执行结果。
| 步骤 | 检查点描述 | 状态 |
|---|---|---|
| 1 | ATB 源码目录存在 | ✅ PASS / ❌ FAIL / ⏭️ SKIP |
| 1 | 原有 Operation 源文件定位 | ✅ PASS / ❌ FAIL / ⏭️ SKIP |
| 1 | 现有 ACLNN runner 参考定位 | ✅ PASS / ❌ FAIL / ⏭️ SKIP |
| 2 | <op>_aclnn_runner.h 创建 | ✅ PASS / ❌ FAIL / ⏭️ SKIP |
| 2 | <op>_aclnn_runner.cpp 创建 | ✅ PASS / ❌ FAIL / ⏭️ SKIP |
| 2 | BuildAclnnVariantPack 实现 | ✅ PASS / ❌ FAIL / ⏭️ SKIP |
| 2 | SetAclNNWorkspaceExecutor 实现 | ✅ PASS / ❌ FAIL / ⏭️ SKIP |
| 2 | LaunchAclnnKernel 实现 | ✅ PASS / ❌ FAIL / ⏭️ SKIP |
| 2 | LoadMethod 实现 | ✅ PASS / ❌ FAIL / ⏭️ SKIP |
| 3 | CreateRunner 包含 910B/950 分支 | ✅ PASS / ❌ FAIL / ⏭️ SKIP |
| 4 | 编译成功 | ✅ PASS / ❌ FAIL / ⏭️ SKIP |
| 5 | 非 910B/950 设备功能正常 | ✅ PASS / ❌ FAIL / ⏭️ SKIP |
| 5 | 910B 设备 ACLNN 路径正常 | ✅ PASS / ❌ FAIL / ⏭️ SKIP |
| 5 | 950 设备 ACLNN 路径正常 | ✅ PASS / ❌ FAIL / ⏭️ SKIP |
VERDICT: ✅ SUCCESS / ⚠️ PARTIAL / ❌ FAILED / ⏭️ SKIPPED
| 等级 | 检查点 | 问题描述 | 建议 |
|---|---|---|---|
| 🔴 CRITICAL | - | - | - |
| 🟡 WARNING | - | - | - |