总结
针对TBE算子,我们已经介绍了一些定位以及解决精度问题的方法。总结一下,当我们遇到精度问题,可以按照以下步骤来解决:
排除对比数据错误、公式错误、CCE生成错误等等非精度问题。
通过数据类型转换,排查float16精度不足问题导致的计算误差。
根据精度不达标数据的分布确定不达标区间,可以通过EXCEL、OCTAVE等工具辅助画图将数据可视化。
通过分解计算过程,查看中间结果,分析精度不达标的原因,找到根因(如指令问题、溢出、计算失效等)。
针对具体问题采用不同的优化方案。
通过仿真分析所采用的数学公式能否拟合真实数值,分析理论相对误差是否能达到要求,如果方案本身就存在精度问题可参考
数学公式优化
进行方案优化。
如果所用方案理论上能精度达标,定位到是指令精度问题可参考
指令精度优化
进行优化。
针对溢出错误(常见于
、
等函数),可以通过变换公式防止数学计算的溢出,例如
等。
针对计算失效,即有时候误差会随着计算次数的增加而被逐步放大,尤其是当系数或者输入数值
过大时,误差放大因子会远远大于1从而导致最终计算结果发散,可以通过寻找替换公式,映射区间等方式避免。
父主题:
TBE算子精度优化