---
title: 使用精度友好的编译选项
description: "ICC编译器的-fp-model编译选项用来控制浮点运算的优化，其影响程序的运行性能和结果的准确性。选用性能更好的优化选项，必然会带来精度上的损失。"
url: https://www.hikunpeng.com/document/detail/zh/perftuning/computp-wp/kunpengcomputp_19_0007.html
sourcePath: /source/zh/perftuning/computp-wp/kunpengcomputp_19_0007.html
indexId: 6a40468ec3eb977816a82e0ffeb7b0f372325674495360eae90604104b3378b660
---
# 使用精度友好的编译选项

ICC编译器的-fp-model编译选项用来控制浮点运算的优化，其影响程序的运行性能和结果的准确性。选用性能更好的优化选项，必然会带来精度上的损失。

在优化等级为-O2及以上时，-fp-model默认选项是fast=1，在优化等级为-Ofast时，-fp-model默认选项是fast=2，这表示编译器对浮点运算应用更多的性能优化。为了获取更高的浮点计算精度，设置-fp-model=precise，保证运算过程中浮点数是值安全的（value-safe），即编译器不会进行数学逻辑上相等的运算转换，如前文提到的A + B + C转换为A + ( B + C )。当然，更改后可能影响程序性能，这需要开发人员作出权衡。

毕昇编译器同样有编译选项-ffp-contract=off/on/fast控制浮点运算优化。-ffp-contract默认选项是fast，使能浮点数乘加操作，将乘法和加法合并为一次乘加运算从而提升性能。为了获得更高的浮点计算精度，可以设置-ffp-contract=off。

另外毕昇编译器还有一系列编译选项来控制浮点数的优化策略，详细解释请参见《毕昇编译器 用户指南》中“浮点运算控制选项(https://www.hikunpeng.com/document/detail/zh/kunpengdevps/compilation/ug-bisheng/kunpengbisheng_06_0013.html)”的相关内容。

#### 修改建议

- 毕昇编译器增加编译选项-ffp-contract=off。
- ICC编译器增加编译选项-fp-model=precise。
