将Cython与intel编译器和OpenMP一起使用

时间:2012-05-24 22:33:45

标签: python openmp intel cython

我现在使用Cython编译器将一个需要OpenMP的C语言程序包装成setup.py脚本,如下所示(Cython脚本“test.pyx”导入“test.h”模块)。

from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext

ext_modules = [
    Extension("wrap_test",
          ["test.pyx"],
          libraries=["gomp"],
          extra_compile_args=["-fopenmp"])]

setup(
    name="wrap_test",
    cmdclass={"build_ext": build_ext},
    ext_modules=ext_modules)

这是针对gcc的。那么,什么是英特尔编译器(icc)对应物呢?有谁知道答案?


如果我只是将环境变量CC设置为icc并输入“python setup.py build_ext --inplace”,则会出现几条错误消息,并自动调用gcc而不是icc(链接目标文件)。这会导致共享对象“wrap_test.so”,由于某些错误,无法将其导入其他Python脚本。所以我想我必须告诉Cython一套适当的编译器,库和编译选项,以便在setup.py脚本中使用。

1 个答案:

答案 0 :(得分:2)

使用OpenMP支持进行编译的Intel C命令行选项为-openmp