鲲鹏社区首页
中文
注册
开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

选项 -fp-model

说明

-fp-model选项是一组用于控制浮点计算精度与行为的编译器选项,各个子选项说明如下:

  • -fp-model=normal

    默认值,等同于不开任何fp-model选项,对其他选项无任何影响。

  • -fp-model=fast

    等同于开启-ffast-math,会开启多种可能降低数值精度的优化例如交换结合律、强度折减等。

  • -fp-model=precise

    禁用所有可能降低浮点精度的优化,确保计算结果的正确性。包括关闭交换结合律、强度折减、向零舍入、fma指令生成等优化。

  • -fp-model=except

    开启浮点计算异常机制,编译器在优化时会考虑浮点异常的存在,从而阻止那些忽略异常的激进优化。需注意:鲲鹏芯片暂时不支持浮点异常中断功能。

  • -fp-model=strict

    等效于同时启用-fp-model=precise和-fp-model=except。

使用方法

根据浮点计算精度的需求加入相应的选项即可。

由于该选项基于GCC开发,遵循不干扰GCC开源原有选项优先级行为的原则,因此-fp-model的优先级如下:

-fp-model=precise/strict/normal/fast/except与-ffast-math优先级相同,且高于 -Ofast/-O3。

自研选项优先级遵循以下规则:
  • 当命令行中指定多个-fp-model选项时,仅最后一个生效;若发生覆盖,编译器将在屏幕输出中发出warning提示。
  • 最终起效的-fp-model为precise或strict时, 命令行排在此选项之前的-Ofast选项被改为-O3,-ffast-math选项被删除。同时报出warning。
  • -fp-model选项与开源-ffast-math的优先级一致,因此-fp-model与-fmath-errno/-funsafe-math-optimization等选项的优先级相同生效与否仅取决于命令行顺序和前端代码逻辑。