繁体   English   中英

使用OpenMP编译的f2py模块的Python导入错误

[英]Python Import error for f2py modules compiled with OpenMP

我目前在包装一些Fortran子例程以在python3脚本中使用时遇到问题。 自从我尝试在子例程中使用OpenMP以来,才出现此问题。

例如,如果我使用f2py -c -m --fcompiler=gfortran --compiler=mingw32 --f90flags='-fopenmp' test test.f90 -lgomp来编译模块“ test.pyd”,其中“ test.f90” '是一个包含并行循环的Fortran子例程,在尝试将此模块导入到脚本中时,我遇到ImportError: DLL load failed: A dynamic link library (DLL) initialization routine failed.

删除编译时的-fopenmp标志,或Fortran子例程中的!$omp注释均会删除此错误。

将子例程更改为大致等效的Fortran程序,该程序将编译为.exe并可以并行正确运行。

我在使用AMD64处理器的Windows 10平台上,使用来自TDM-GCC的GNU Fortran和C编译器

我刚刚尝试了您的build命令,看起来非常好。 我自己能够按照您的方式从python模块运行并行子程序。

您如何执行使用模块的python代码? 我认为问题在于您的路径中没有libgomp-1.dll dll(名为libgomp-1.dll

我建议您从bash shell运行:

where libgomp-1.dll

如果找不到该命令,则可能应将路径添加到您的openmp dll(通常为“ C:\\ tools \\ mingw64 \\ bin \\”)中。

为此,您可以使用:

export PATH=$PATH:C:\tools\mingw64\bin\ && python script_using_module.py

您执行python代码的方式很有可能无法正确说明路径,因为您可以毫无问题地运行并行可执行文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM