Pull Request has been successfully merged by CANN-robot.
(Thank you for 李政君's contribution.)变更摘要
本 PR 修复线上回黄(BUILD_OPS_RTY_KERNEL)编出的 ascend960dt 包中缺失 A6 适配 py(如 moe_distribute_dispatch_v2_a6.py)的问题。A6 适配 py 已由 generate_transformer_adapt_py 生成到 build/impl/dynamic/,但打包 install 白名单只覆盖 .py、_a2、_a3、_apt,导致 _a6.py 在安装阶段被丢弃。改动围绕两条打包路径补齐 a6 后缀安装,并在构建框架层面统一 A6 源码目录登记方式,整体仅影响 A6(ascend960dt / ascend960pr)适配 py 的安装,其余 SoC 行为不变。
主要改动
- custom 路径补装
_a6.py:cmake/custom_build.cmake在算子动态文件安装循环中新增对${ASCEND_IMPL_OUT_DIR}/dynamic/${_op_name}_a6.py的install(FILES ...)条目(OPTIONAL),使自定义构建路径也能将 A6 适配 py 安装到${IMPL_DYNAMIC_INSTALL_DIR}。 - 统一登记
<op>_a6_dir:cmake/func.cmake的add_bin_compile_target中,在原有_a2_dir、_a3_dir、_apt_dir之外增加set(${_op_name}_a6_dir ${_op_info}),由框架统一写入 A6 源码目录变量,避免各算子手工set(... PARENT_SCOPE)。 - 回黄路径安装后缀增加
a6:按 PR 描述,CMakeLists.txt中回黄路径的安装后缀白名单加入a6,使该路径同样保留_a6.py。 - 清理重复定义:按 PR 描述,移除
moe_distribute_dispatch_v2、moe_distribute_dispatch_v3、moe_distribute_combine_add_rms_norm中重复的_a6_dir定义,改由上述统一登记逻辑提供;保留各算子未加后缀的_depends,host 侧符号链接与依赖 kernel 头文件安装行为不变。
🧩 本次 Review 已使用自定义 Skill:


Thanks for your pull-request.
The full list of commands accepted by me can be found at here.
You can get sig-info at here.
You can self-configure the PR merge rules for this repository. For more details, please refer to Here.
For more, you also can visit HICANN.
PR Approval Progress
✅ Congratulations! All modules have met the lgtm and approve requirements.
Module Approval Details
| module | lgtm status | approve status |
|---|---|---|
| CMakeLists.txt | ✅ wang-minbo, 蒋礼锐 (2/2) | ✅ wang-minbo, 蒋礼锐 (2/1) |
| cmake | ✅ wang-minbo, 蒋礼锐 (2/2) | ✅ 蒋礼锐, wang-minbo (2/1) |
| mc2 | ✅ 蒋礼锐, luobaiqing, wang-minbo (3/2) | ✅ wang-minbo, 蒋礼锐, luobaiqing (3/1) |
💡 Tip:
- Committer can comment
/approveor/lgtm- Commenting
/approveimplies both code review (lgtm) and intent to merge (approve)
CLA Signature Pass
wanker, thanks for your pull request. All authors of the commits have signed the CLA. 👍


| 🚀 CI 流水线已启动 |
|---|
| 📋 执行详情: 点击查看流水线 |


这里把 a6 和 a2/a3/apt 平级登记了,不过同函数里 ASCEND_OP_NAME 那段后缀剥离正则还是 _(a2|a3|apt)$,不认 a6——分片构建传 ASCEND_OP_NAME=


验证一节写的还是「预期」——这个问题的现象就是安装树里丢文件,最直接的就是真跑一次 --pkg --soc=ascend960dt,确认安装树 dynamic/ 下 moe_distribute_dispatch_v2_a6.py 真的落盘了,比「预期」踏实


【review】
问题分类:正确性
位置:CMakeLists.txt:664,代码:foreach (_suffix a2 a3 apt a6)
问题:在 BUILD_OPS_RTY_KERNEL=ON 的干净构建目录中,新增 a6 后缀仍受下一行 if(EXISTS ...) 的配置期检查控制。适配文件由第638行 generate_transformer_adapt_py 构建目标运行后才生成,首次配置时 dynamic/<算子名>_a6.py 尚不存在,因此不会生成对应 install(FILES ...) 规则;后续生成文件并执行安装不会重新执行这个条件。custom_build.cmake 中本次新增的 a6 安装规则没有此配置期条件,两条构建路径行为不一致。
可能导致的结果:完成首次构建后直接安装时,安装树仍缺失 a6 适配 py 文件,必须再次配置才可能补装,本次针对 a6 漏装的修复在该路径的干净构建中仍不生效。
建议的修改方法:去掉该循环内配置期的 if(EXISTS ...) 条件,对各后缀始终登记已有 OPTIONAL 的 install(FILES ...) 规则,让安装阶段判断文件是否存在;补一次“干净配置、构建适配文件、安装且不二次配置”的检查,确认 a6 文件落盘。


| 🚀 CI 流水线已启动 |
|---|
| 📋 执行详情: 点击查看流水线 |


a系列放在一起呗,上面也是,a2 a3 a6 apt。不过为什么没有a5,apt是a5的指代吗,如果是那现在这个顺序倒是没问题,但是引出另一个问题,a6是一个对外的合适的后缀吗?


/approve


/lgtm
/approve


/approve
/lgtm


背景
线上回黄(BUILD_OPS_RTY_KERNEL)编出的 ascend960dt 包中缺少
moe_distribute_dispatch_v2_a6.py等 A6 适配 py。排查确认:py 已由
generate_transformer_adapt_py生成到build/impl/dynamic/,但两条打包路径的 install 白名单只包含.py / _a2 / _a3 / _apt,_a6.py在安装阶段被丢弃。修改内容
CMakeLists.txt:回黄路径的安装后缀列表增加a6。cmake/custom_build.cmake:custom 路径补装<op>_a6.py。cmake/func.cmake:add_bin_compile_target统一登记<op>_a6_dir,避免各算子手工set(... PARENT_SCOPE)。moe_distribute_dispatch_v2/moe_distribute_dispatch_v3/moe_distribute_combine_add_rms_norm中重复的_a6_dir定义。验证
_depends,host 侧符号链接与依赖 kernel 头文件安装行为不变。--pkg --soc=ascend960dt后,build/impl/dynamic/与安装树dynamic/均出现moe_distribute_dispatch_v2_a6.py。影响范围
仅影响 A6(ascend960dt / ascend960pr)适配 py 的安装。