f2py with OMP:无法导入模块,未定义符号GOMP_*

2024-06-16 19:06:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望使用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

使用以下命令编译和导入:

^{pr2}$

我得到一个错误。错误在于导入-直接使用f2py或gfortran编译都可以正常工作(只会收到关于“使用不推荐使用的NumPy API”的警告)。在

Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: ./SOmod.so: undefined symbol: GOMP_barrier

对于不同的OMP指令,我得到不同的GOMP_x错误。没有指令(但是有-openmp标志)它可以工作。在

任何帮助都将不胜感激。在


Tags: 模块代码test错误指令endmodulefortran
1条回答
网友
1楼 · 发布于 2024-06-16 19:06:37

我能够在Mac OS X(10.9.5)上重现该错误,使用自制程序安装了gfortran,并通过在命令中添加-lgomp来修复它:

f2py -m SOmod  fcompiler=gnu95  f90flags='-march=native -O3 -fopenmp' -lgomp -c SOtest.f95

由@Mark添加:请注意,-lgomp是f2py的参数,而不是gfortran。尽管它只使用-gomp进行编译,但是-gomp和{}都需要它是并行的,如{a1}所述。GOMP是GNU openMP实现。在

相关问题 更多 >