Using the flag
--np-pythran
, it is possible to use the
Pythran
numpy implementation for numpy related operations. One advantage to use this backend is that the Pythran implementation uses C++ expression templates to save memory transfers and can benefit from SIMD instructions of modern CPU.
This can lead to really interesting speedup in some cases, going from 2 up to 16, depending on the targeted CPU architecture and the original algorithm.
Please note that this feature is experimental.
You first need to install Pythran. See its 文档编制 了解更多信息。
Then, simply add a
cython:
np_pythran=True
directive at the top of the Python files that needs to be compiled using Pythran numpy support.
Here is an example of a simple
setup.py
file using distutils:
from distutils.core import setup from Cython.Build import cythonize setup( name = "My hello app", ext_modules = cythonize('hello_pythran.pyx') )
Then, with the following header in
hello_pythran.pyx
:
# cython: np_pythran=True
hello_pythran.pyx
will be compiled using Pythran numpy support.
Please note that Pythran can further be tweaked by adding settings in the
$HOME/.pythranrc
file. For instance, this can be used to enable
Boost.SIMD
support. See the
Pythran user manual
了解更多信息。