总结

针对TBE算子,我们已经介绍了一些定位以及解决精度问题的方法。总结一下,当我们遇到精度问题,可以按照以下步骤来解决:

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