F2PY 和 Windows Intel Fortran#
截至 NumPy 1.23,僅支援經典 Intel 編譯器 (ifort
)。
注意
在轉換到 LLVM 支援的 ifx/icc
系列編譯器期間,beta 軟體的授權限制 已放寬。然而,由於與 組件反組譯和責任 相關的問題,本文檔不認可在下游專案中使用 Intel。
Python Intel 安裝和 Classic Intel C/C++ Compiler 皆非必要。
Intel Fortran 編譯器 以組合安裝程式形式提供,同時包含 Classic 和 Beta 版本;這些也佔用大約 1.5 GB 左右的空間。
我們將考慮生成費波那契數的經典範例,fib1.f
,如下所示
C FILE: FIB1.F
SUBROUTINE FIB(A,N)
C
C CALCULATE FIRST N FIBONACCI NUMBERS
C
INTEGER N
REAL*8 A(N)
DO I=1,N
IF (I.EQ.1) THEN
A(I) = 0.0D0
ELSEIF (I.EQ.2) THEN
A(I) = 1.0D0
ELSE
A(I) = A(I-1) + A(I-2)
ENDIF
ENDDO
END
C END FILE FIB1.F
對於 cmd.exe
愛好者來說,使用 Intel oneAPI 命令提示字元是最簡單的方法,因為它為 ifort
和 msvc
都載入了所需的環境。也提供了輔助批次腳本。
# cmd.exe
"C:\Program Files (x86)\Intel\oneAPI\setvars.bat"
python -m numpy.f2py -c fib1.f -m fib1
python -c "import fib1; import numpy as np; a=np.zeros(8); fib1.fib(a); print(a)"
Powershell 的使用體驗稍差,而此配置現在可以與 MSVC 搭配使用,如下所示
# Powershell
python -m numpy.f2py -c fib1.f -m fib1 --f77exec='C:\Program Files (x86)\Intel\oneAPI\compiler\latest\windows\bin\intel64\ifort.exe' --f90exec='C:\Program Files (x86)\Intel\oneAPI\compiler\latest\windows\bin\intel64\ifort.exe' -L'C:\Program Files (x86)\Intel\oneAPI\compiler\latest\windows\compiler\lib\ia32'
python -c "import fib1; import numpy as np; a=np.zeros(8); fib1.fib(a); print(a)"
# Alternatively, set environment and reload Powershell in one line
cmd.exe /k '"C:\Program Files (x86)\Intel\oneAPI\setvars.bat" && powershell'
python -m numpy.f2py -c fib1.f -m fib1
python -c "import fib1; import numpy as np; a=np.zeros(8); fib1.fib(a); print(a)"
請注意,ifort 本機安裝的實際路徑可能會有所不同,並且需要相應地更新上面的命令。