Cython:OpenMP配置

作者: txfly | 来源:发表于2019-10-17 21:06 被阅读0次

在Cython中使用parallel、prange或者OpenMP时,除了添加/openmp编译参数,还需要将vcomp140.dll拷贝到输出目录。

测试环境:Python3.7.4 + VS2019 + Cython0.29

大致步骤如下:
第一步:添加编译脚本。其中extra_link_args=['/openmp']可以去掉,在编译时该参数会被忽略掉。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from distutils.core import setup

import numpy
from Cython.Build import cythonize
from Cython.Distutils import build_ext, Extension

# >python setup.py build_ext --inplace
# cython demo.pyx -a

ext_modules = [
    Extension("demo",
              ["demo.pyx"],
              include_dirs=[numpy.get_include()],
              extra_compile_args=['/openmp'],
              extra_link_args=['/openmp'],
              )
]
setup(
    name="openmp",
    ext_modules=cythonize(ext_modules, force=True),
    cmdclass={'build_ext': build_ext}
)

第二步:添加OpenMP运行库,在我的电脑里路径是C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Redist\MSVC\14.23.27820\x64\Microsoft.VC142.OpenMP\vcomp140.dll,把vcomp140.dll拷贝到输出目录即可。如果没有vcomp140.dll文件,使用时会出现ImportError: DLL load failed: 找不到指定的模块。错误。

注意以上两步,就可以启用OpenMP了。

版权声明:本文为「txfly」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://www.jianshu.com/p/b9f0a2604898

相关文章

网友评论

    本文标题:Cython:OpenMP配置

    本文链接:https://www.haomeiwen.com/subject/iktbmctx.html