[英]f2py with OMP: can't import module, undefined symbol GOMP_*
我希望使用openmp來加速我通過f2py運行的Fortran代碼。 但是,在成功編譯之后,我無法在Python中導入模塊。
對於像這樣的Fortran95模塊:
module test
implicit none
contains
subroutine readygo()
real(kind = 8), dimension(10000) :: q
!$OMP WORKSHARE
q = 7
!$OMP END WORKSHARE
end subroutine
end module
使用以下命令編譯和導入:
f2py -m SOmod --fcompiler=gnu95 --f90flags='-march=native -O3 -fopenmp' -c SOtest.f95
python2 -c "import SOmod"
我收到一個錯誤。 錯誤是導入 - 編譯直接使用f2py或gfortran工作正常(僅獲得有關'使用已棄用的NumPy API'的警告)。
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: ./SOmod.so: undefined symbol: GOMP_barrier
我為不同的OMP指令得到了不同的GOMP_ *錯誤。 沒有指令(但使用-openmp標志)它可以工作。
任何幫助將不勝感激。
我能夠在Mac OS X(10.9.5)上重現錯誤,使用自制軟件安裝gfortran
,我可以通過在命令中添加-lgomp
來修復它:
f2py -m SOmod --fcompiler=gnu95 --f90flags='-march=native -O3 -fopenmp' -lgomp -c SOtest.f95
由@Mark添加 :請注意, -lgomp
是-lgomp
的參數,而不是gfortran。 雖然它只是編譯-gomp
,既-gomp
和-fopenmp
需要為它是平行的,如所描述這里 。 GOMP是GNU openMP實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.