Pull Request已成功合入, 合并人@CANN-robot
(感谢 rk 的贡献)变更摘要
此 PR 新增了 add_layer_norm_quant 算子的 aclnn 测试示例文件 test_aclnn_add_layer_norm_quant.cpp,用于演示如何通过 CANN 算子库 API 调用 aclnnAddLayerNormQuant 算子。该示例完整覆盖了 ACL 设备初始化、输入输出张量构造、算子 workspace 查询与执行、结果回拷打印以及资源释放的全流程。
主要改动
- 新增
test_aclnn_add_layer_norm_quant.cpp测试示例文件:位于norm/add_layer_norm_quant/examples/目录下,共 294 行,作为aclnnAddLayerNormQuant算子的参考用法示例。 - 实现通用辅助函数
GetShapeSize和CreateAclTensor:GetShapeSize用于计算 shape 张量元素总数,CreateAclTensor模板函数封装了aclrtMalloc、aclrtMemcpy以及 strides 计算与aclCreateTensor调用逻辑,简化了多次张量创建的重复代码。 - 演示完整的算子调用流程:在
main函数中依次初始化 ACL 设备与 stream,分别创建 7 个 float 类型输入张量(x1、x2、gamma、beta、bias、s1、s2)和 4 个输出张量(y1/y2为ACL_INT8类型,x/outScales1/outScales2为ACL_FLOAT类型),然后调用aclnnAddLayerNormQuantGetWorkspaceSize和aclnnAddLayerNormQuant两段式接口执行计算。 - 包含输出结果验证与资源清理:通过
aclrtMemcpy将 5 路输出从 device 侧回拷到 host 侧并逐元素打印,最后依次释放所有aclTensor、device 内存、workspace、stream 以及 ACL 资源,形成完整的端到端示例。


代码审查
审查结束总结
本次审查针对 norm/add_layer_norm_quant/examples/test_aclnn_add_layer_norm_quant.cpp(新增 294 行),共发现 4 个问题:
| 优先级 | 数量 | 说明 |
|---|---|---|
| P1 | 1 | CreateAclTensor 未检查 aclCreateTensor 返回值,空指针传入算子 API 将导致崩溃 |
| P2 | 2 | ① CreateAclTensor 中 aclrtMemcpy 失败时泄露 device 内存;② main 函数中任意错误提前返回时泄露所有已分配的 device 内存、tensor 及 stream |
| P3 | 1 | 第165行注释"创建不带 bias 的 aclTensor"存在误导 |
整体风险判断:该文件为算子测试示例,逻辑主体与官方文档示例一致,核心 API 调用参数顺序正确。主要风险集中在错误路径的资源管理上——缺少 aclCreateTensor 返回值校验和 device 内存释放,可能在异常场景下导致崩溃或 NPU device 内存泄漏。建议在合入前至少修复 P1 的空指针问题,P2 的资源泄漏可后续统一改进。
已审查文件:
norm/add_layer_norm_quant/examples/test_aclnn_add_layer_norm_quant.cpp— 发现 4 个问题(见上表)
| 类型 | 数量 |
|---|---|
| 🔴 阻塞 | 1 |
| 🟡 建议 | 2 |
⛔ 需要修改


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
PR Approval Progress
✅ Congratulations! All modules have met the lgtm and approve requirements.
Module Approval Details
| module | lgtm status | approve status |
|---|---|---|
| norm | ✅ 陈昊文, 陈琦 (2/2) | ✅ 陈昊文 (1/1) |
💡 Tip:
- Committer can comment
/approveor/lgtm- Commenting
/approveimplies both code review (lgtm) and intent to merge (approve)
CLA Signature Pass
wangpengbo26, thanks for your pull request. All authors of the commits have signed the CLA. 👍


/approve


Pull Request 已合并或已关闭。
If you want to solve this problem, you can click here to do it in the FAQs.


描述
为 AddLayerNormQuant 算子补充 aclnn 接口调用方式的测试示例。算子 README(norm/add_layer_norm_quant/README.md)调用说明中 aclnn 接口的样例代码列原为空("-"),仅有图模式(geir)测试示例,本 PR 填补 aclnn 调用示例的缺失。
新增文件
norm/add_layer_norm_quant/examples/test_aclnn_add_layer_norm_quant.cpp,内容包括:aclnnAddLayerNormQuantGetWorkspaceSize计算 workspace 并创建 executor,aclnnAddLayerNormQuant执行计算关联的Issue
测试
编译并运行
test_aclnn_add_layer_norm_quant.cpp,验证:aclnnAddLayerNormQuantGetWorkspaceSize返回 ACL_SUCCESSaclnnAddLayerNormQuant执行成功,aclrtSynchronizeStream正常返回文档更新
无。
类型标签
AI/Agent生成声明