我使用f2py
將我的python代碼的性能關鍵部分卸載到fortran。我有兩個Fortran編譯器,gfortran
和ifort
。由於我運行的代碼將在英特爾處理器上,因此ifort
通常更快。但是對於我的代碼中最關鍵的部分,我觀察到相反的情況,gfortran
的速度提高了40%!在檢查實際的命令行ifort
被調用後,我注意到f2py
將-fp-model strict
附加到命令行,不管我在FFLAGS
環境變量中指定了什麼。我懷疑這是緩慢的原因。使用if2和f2py禁用fp-model
有沒有辦法讓f2py
停止執行這個浮點模型?我已經嘗試將-fp-model fast
加到FFLAGS
和f2py
的--f90flags
參數中,但是當它們出現在最後的命令行上時,它們在嚴格標誌之前這樣做,因此被覆蓋。雖然我很欣賞對NaN等的支持,但它不值得40%的放緩。
這是我f2py
命令行:
FFLAGS="-openmp -Ofast -fPIC" f2py --fcompiler=intelem -c -m pmat_core_32 pmat_core_32.f90 -liomp5
這裏是實際上傳遞給ifort
標誌,根據f2py
輸出:
-FI -openmp -Ofast -fPIC -xhost -openmp -fp-model strict