使用numpy distutils传递fortran OpenMP标志的正确方法?

时间:2014-04-28 23:36:23

标签: python numpy openmp distutils f2py

我开发了一个python包,它使用了带有OpenMP指令的fortran 90代码,并且我想使用numpy.distutils打包它。我遇到的问题是编译器标志和OpenMP库对于不同的fortran编译器都是不同的(例如-fopenmp和-lgomp用于gfortran和-openmp,-liomp5用于ifort)。

我发现一旦我知道编译器就可以成功传入编译器和链接标志。例如,如果我确定用户可以使用gfortran,

  ext1 = numpy.distutils.core.Extension(
      name = 'rabacus_fc',
      sources = f90_paths,
      extra_f90_compile_args = ["-fopenmp"],
      extra_link_args = ["-lgomp"],
     )

首先,我尝试在对Extension,

的调用中使用额外的关键字参数强制编译器
  f2py_options = ["--fcompiler=gnu95"]

这将返回错误消息

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'

如果有人知道如何正确传递f2py选项而不是有助于编译器选项。

接下来,我尝试确定是否有办法检测哪个编译器f2py和numpy.distutils将使用,然后使用此信息设置正确的标志。我没有在任何地方找到这个,这就是我被困的地方。

0 个答案:

没有答案