本帖最后由 yhl 于 2025-12-24 10:26 编辑
ATC 自定义算子问题
基础背景:
(1)自定义算子fconv在onnx model目录下,结构如下:
(2) 双输入,单输出算子,简单测试用例,两个板端输入数据都为{ 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 },可见data目录 下data0.txt和data1.txt,在测试中会根据实际的运算来重新设定输出的维度。
(3)测试中所有tensor的量化和反量化参数设定值一样都为1:quantParam.alpha = 1.0;quantParam.bias = 0.0;
(4)测试中,不考虑分块,循环条件按c,h,w(实际只循环两次,按C独立计算)
一项测试用例:
VSum + VvMul + VSEmadFaSb(a为0.f)测试:
功能仿真随机数与结果如下(黑)正确,板端推理结果如下(黄)第二次错误(4380):
现象:
在同一循环函数中,Add、Mul、Sum输出结果在不同维度均正确(PC与板端),包括VVMad等所有的组合在PC debug中均正确,但是不同的组合排序下板端会有推理错误。
结论:
ATC:修改自定义算子多个指令循环执行时,结果不正确问题,提供修复后的cann包。目前所有SVP NPU部分都存在此问题(16/19DV500、928/927),需要使用非公共的ATC工具。
|