【问题标题】:Disabling fp-model strict when using ifort with f2py将 ifort 与 f2py 一起使用时禁用 fp-model strict
【发布时间】:2015-06-11 13:57:04
【问题描述】:

我正在使用f2py 将我的python 代码的性能关键部分卸载到fortran。我有两个 fortran 编译器,gfortranifort。由于我运行的代码将在英特尔处理器上运行,ifort 通常更快。但对于我的代码中最关键的部分,我观察到相反的情况,gfortran 的速度提高了 40%!在检查了正在调用的实际命令行ifort 之后,我注意到f2py-fp-model strict 附加到命令行,无论我在FFLAGS 环境变量中指定什么。我怀疑这是 ifort 缓慢的原因。

有没有办法让f2py 停止执行这个浮点模型?我已经尝试将-fp-model fast 添加到FFLAGSf2py--f90flags 参数中,但是当它们出现在最终命令行上时,它们在严格标志之前这样做,因此被覆盖。虽然我感谢对 NaN 等的支持,但不值得放慢 40% 的速度。

这是我的f2py 命令行:

FFLAGS="-openmp -Ofast -fPIC" f2py --fcompiler=intelem -c -m pmat_core_32 pmat_core_32.f90 -liomp5

根据f2py 输出,这里是实际传递给ifort 的标志:

-FI -openmp -Ofast -fPIC -xhost -openmp -fp-model strict

【问题讨论】:

    标签: python numpy optimization fortran f2py


    【解决方案1】:

    标志-xhost -openmp -fp-model strict来自

    def get_flags_opt(self):
        return ['-xhost -openmp -fp-model strict']
    

    在文件site-packages/numpy/distutils/fcompiler/intel.py 中用于调用ifort 的类。

    您有两种选择来修改这些标志的行为:

    • 使用--noopt 标志调用f2py 以禁止这些标志
    • 使用--opt='blah' 调用f2py 以覆盖这些标志

    你可以得到你想要的旗帜:

    FFLAGS="-fPIC" f2py --fcompiler=intelem --opt='-xhost -0fast -openmp' -c -m pmat_core_32 pmat_core_32.f90 -liomp5
    

    【讨论】:

      猜你喜欢
      • 2012-05-06
      • 1970-01-01
      • 1970-01-01
      • 2019-02-21
      • 2021-12-30
      • 2016-07-29
      • 1970-01-01
      • 2019-03-12
      • 1970-01-01
      相关资源
      最近更新 更多