gpt4 book ai didi

python - 将 ifort 与 f2py 一起使用时禁用 fp-model strict

转载 作者:太空宇宙 更新时间:2023-11-04 03:31:59 25 4
gpt4 key购买 nike

我正在使用 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

最佳答案

标志 -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

关于python - 将 ifort 与 f2py 一起使用时禁用 fp-model strict,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30782913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com