74 Star 218 Fork 167

Ascend / modelzoo

 / 详情

TopKV2算子float32数据计算结果有较大精度误差

DONE
Consultation
创建于  
2021-08-10 20:29

使用昇腾TopKV2算子,在计算int32、int64和double64类型的tensor时都没有误差问题,但是计算float32类型的数据时,测试误差较大(如图,数据小数点后4位就出现diff),不知道是正常现象,还是我哪里使用有误?按理说TopKV2算子不涉及数据运算,不应该有这么大的误差。。

Debug截图

评论 (4)

From00 创建了Consultation
From00 关联仓库设置为Ascend/modelzoo
zhujianpeng 负责人设置为张周磊
zhujianpeng 任务状态TODO 修改为Analysing
展开全部操作日志

算子内部计算由于指令限制只支持fp16,所以其他数据类型的话会在topkv2算子前后插入cast算子。fp32的话会将fp32到fp16再由topkv2计算完cast回fp32。此时会有一部分误差。是正常现象

好的,了解。不过我测试fp64的数据并不会有这么大误差,只有fp32误差大,如果是cast算子原因,感觉fp64的类型应该会有更大误差才对?

aicore不支持Fp64数据类型,因此会走到Aicpu的topk算子。aicpu的topk支持fp64,不会插入cast算子,因此精度更好,但是性能会不如aicore的topkv2算子

好的,感谢答疑。

zhujianpeng 任务状态Analysing 修改为DONE
吴定远 关联仓库Ascend/modelzoo-his 修改为Ascend/modelzoo

登录 后才可以发表评论

状态
负责人
项目
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
预计工期 (小时)
参与者(2)
1
https://gitee.com/ascend/modelzoo.git
git@gitee.com:ascend/modelzoo.git
ascend
modelzoo
modelzoo

搜索帮助