中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
鲲鹏小智

编译选项分析法

编译器对精度有很大的影响,有些编译选项为了性能会牺牲掉精度,或者同一编译选项在不同的编译器上的实现是不一致的。本节介绍如何找到影响计算结果的编译选项。

前提条件

两个平台初始时结果不一致,但在不添加任何编译选项时,两个平台的输出结果是完全一致的。如果存在数学库导致的差异,可以统一使用开源数学库SLEEF暂时屏蔽,使用方法请参考开源数据库SLEEF使用方法

下面以WRF 3.4.1为例。

  • 鲲鹏使用毕昇编译器,初始编译选项:
    FCBASEOPTS_NO_G = -w
  • x86使用icc编译器,初始编译选项:
    FCBASEOPTS_NO_G = -w -ftz -align all -fno-alias -fp-model precise
  1. 两个平台去掉FCBASEOPTS_NO_G的编译选项。

    其计算结果是完全一致的。

    • 鲲鹏编译选项:
      FCBASEOPTS_NO_G =
    • x86编译选项:
      FCBASEOPTS_NO_G =
  2. 逐步增加剩余编译选项。
    1. 增加-w,两个平台计算结果仍旧一致。
      • 鲲鹏编译选项:
        FCBASEOPTS_NO_G = -w
      • x86初始编译选项:
        FCBASEOPTS_NO_G = -w
    2. 增加-ftz,两个平台计算结果出现差异。
      • 鲲鹏编译选项:
        FCBASEOPTS_NO_G = -w
      • x86编译选项:
        FCBASEOPTS_NO_G = -w -ftz
    3. 先屏蔽-ftz编译选项,继续增加剩余编译选项。最终确认无新的编译选项会影响结果。
  3. 针对找出影响计算结果的-ftz编译选项,分析其产生差异的原因和修改方法。
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词