5 python distutils numpy openmp f2py
我正在开发一个 python 包,它使用带有 OpenMP 指令的 fortran 90 代码,我想使用 numpy.distutils 对其进行打包。我遇到的问题是,对于不同的 fortran 编译器,编译器标志和 OpenMP 库都不同(例如,gfortran 的 -fopenmp 和 -lgomp 以及 ifort 的 -openmp 和 -liomp5)。
我发现一旦我知道编译器,我就可以成功地传递编译器和链接标志。例如,如果我确定用户有 gfortran 我可以这样做,
ext1 = numpy.distutils.core.Extension(
name = 'rabacus_fc',
sources = f90_paths,
extra_f90_compile_args = ["-fopenmp"],
extra_link_args = ["-lgomp"],
)
Run Code Online (Sandbox Code Playgroud)
起初,我尝试强制编译器在调用 Extension 时使用额外的关键字参数,
f2py_options = ["--fcompiler=gnu95"]
Run Code Online (Sandbox Code Playgroud)
这会返回错误消息,
running install
running bdist_egg
running egg_info
running build_src
build_src
building extension "rabacus_fc" sources
f2py options: ['--fcompiler=gnu95']
f2py:> build/src.linux-x86_64-2.7/rabacus_fcmodule.c
Unknown option '--fcompiler=gnu95'
Run Code Online (Sandbox Code Playgroud)
如果有人知道如何正确传递 f2py 选项而不是编译器选项,那将会有所帮助。
接下来,我尝试确定是否有一种方法可以检测 f2py 和 numpy.distutils 将使用哪个编译器,然后使用此信息来设置正确的标志。我在任何地方都没有找到这个,这就是我被困住的地方。
归档时间: |
|
查看次数: |
942 次 |
最近记录: |