排查到报错算子为sum算子,分析算子反编译文件与CCE文件后,未发现逻辑问题,排除算子自身问题;考虑到sum算子涉及atomic add操作,怀疑数据中包含nan导致atomic溢出。
读取UB数据,trudiv的第二个输入中确实存在部分为0的数据,从原始模型的算法看,无法保证不除零,但通过great+select可以保证不使用除零的结果,也就是即便发生除零,inf/NAN不会往下传递。进一步排查inf/NAN被错误向下传递的原因。
select算子实现问题,导致网络中针对除零做的保护失效,将除零结果NAN向下传递,最终导致atomic累加溢出。