我现在使用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脚本中使用。
答案 0 :(得分:2)
使用OpenMP支持进行编译的Intel C命令行选项为-openmp
。