簡體   English   中英

帶有OMP的f2py:無法導入模塊,未定義的符號GOMP_ *

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM