首页 > 解决方案 > 如果 numpy 已经链接到 BLAS(例如 MKL),则值得使用 cython

问题描述

当我将我的 numpy 链接到 MKL 时,我的代码得到了一些加速。它仍然不够快,所以我们正在考虑使用 cython。我想到的方法是使用 CythonGSL 使用 gsl 的 blas 函数在 cython 中执行昂贵的功能。然而,这有可能是在浪费时间,因为 numpy 已经让 MKL 完成了一些工作。

但是我不知道 MKL 做了多少以及到底做了什么。我的代码中昂贵的部分是 np.sums 和 np.dots。我怀疑通过链接 MKL 代码已经是最优化的,但我不确定。那么知道 numpy + MKL 行为的人能否告诉我我是否可能通过执行 cython 实现来浪费我的时间?

标签: pythonnumpycythongsl

解决方案


不要这样做!通过 BLAS 操作进入 GSL 可以获得 0 收益。它只是链接到其他一些实现,具体取决于您如何构建它。代码是什么样的,为什么你认为它很慢?同时看看这里。

基准测试(python vs. c++ using BLAS)和(numpy)

人们有各种各样的假设,为什么事情是快/慢的。当您看到代码并意识到它们可能会不必要地复制矩阵等时,问题出在哪里通常会变得很明显。


推荐阅读