繁体   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