Mar*_*ark 6 python fortran numpy openmp f2py
我希望使用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
Run Code Online (Sandbox Code Playgroud)
使用以下命令编译和导入:
f2py -m SOmod --fcompiler=gnu95 --f90flags='-march=native -O3 -fopenmp' -c SOtest.f95
python2 -c "import SOmod"
Run Code Online (Sandbox Code Playgroud)
我收到一个错误.错误是导入 - 编译直接使用f2py或gfortran工作正常(仅获得有关'使用已弃用的NumPy API'的警告).
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: ./SOmod.so: undefined symbol: GOMP_barrier
Run Code Online (Sandbox Code Playgroud)
我为不同的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
Run Code Online (Sandbox Code Playgroud)
由@Mark添加:注意这-lgomp是f2py的参数,而不是gfortran.虽然只有编译-gomp,都-gomp和-fopenmp需要为它是平行的,如所描述这里.GOMP是GNU openMP实现.
| 归档时间: |
|
| 查看次数: |
1403 次 |
| 最近记录: |