使用 Pythran 作为 Numpy 后端

使用标志 --np-pythran,可以将 Pythran 的 numpy 实现用于与 numpy 相关的操作。使用此后端的一个优势是,Pythran 实现使用 C++ 表达式模板来节省内存传输,并且可以从现代 CPU 的 SIMD 指令中获益。

在某些情况下,这会导致非常显著的加速,速度提高 2 到 16 倍,具体取决于目标 CPU 架构和原始算法。

请注意,此功能尚处于实验阶段。

使用 setuptools 的示例

首先,您需要安装 Pythran。有关更多信息,请参见其 文档

然后,只需在需要使用 Pythran numpy 支持编译的 Python 文件顶部添加 cython: np_pythran=True 指令。

以下是一个使用 setuptools 的简单 setup.py 文件示例

from setuptools import setup
from Cython.Build import cythonize
import numpy
import pythran

setup(
    name = "My hello app",
    ext_modules = cythonize('hello_pythran.pyx'),
    include_dirs = [numpy.get_include(), pythran.get_include()]
)

然后,在 hello_pythran.pyx 中使用以下头文件

# cython: np_pythran=True

hello_pythran.pyx 将使用 Pythran numpy 支持进行编译。

请注意,可以通过在 $HOME/.pythranrc 文件中添加设置来进一步调整 Pythran。例如,这可以用于启用 Boost.SIMD 支持。有关更多信息,请参见 Pythran 用户手册