Ascend C 算子开发:五个错误示范的终端实录(续篇)
·
感谢社区同学的建议,以下补充五个错误示范在实际终端中的真实反馈与修复过程。
0. 环境确认与基线通过
如图 1 和图 2 所示,执行 bash run.sh -r cpu -v Ascend910B2,8 个核全部 exit success,error ratio: 0.0000,输出 test pass。

1. 错误示范:删除核函数的 __aicore__ 修饰符
改动:执行 sed 命令删除 __global__ 后的 __aicore__。
现象:在 CPU 调试模式下侥幸通过,但在 NPU 模式(-r npu)下,编译器直接报错(图 4)。
报错原文:
text
error: expecting global function add_custom requires the [aicore] or __aicpu__ qualifier
修复:恢复原文件。

2. 错误示范:制造尾核/尾块(TOTAL_LENGTH 不整除)
改动:TOTAL_LENGTH = 8 * 2048 + 10000; 导致数据无法被 8 个核整除。
现象:不仅精度全错,而且触发了 SIGABRT 崩溃(图 6)。
报错原文:
text
[DataCopyCheck][9740] Failed to check count value in DataCopy... count * sizeof(T) must be 32B align, current count value is 206. SIGABRT Signal (Abort Signal from abort) catched...
原因:尾块未处理导致长度变成了 206,破坏了 32 字节对齐红线,CPU 调试器捕获越界直接中断。最终错误率高达 error ratio: 1.0000(图 7)。
修复:恢复原文件。


更多推荐



所有评论(0)