【发布时间】:2017-07-06 20:02:10
【问题描述】:
我目前在包装一些 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 cmets 删除此错误。
将子程序改为大致等效的Fortran程序,程序编译为.exe并正确并行运行。
我在 Windows 10 平台上,配备 AMD64 处理器,使用来自 TDM-GCC 的 GNU Fortran 和 C 编译器
【问题讨论】:
-
我遇到了完全相同的问题。看来 TDM-GCC 与 py3 不兼容。