【发布时间】:2017-10-05 03:19:56
【问题描述】:
我有一个 cython 优化的速度程序,但速度仍然很慢。我想知道我的 cython 程序是使用 OpenBLAS 还是 MKL(链接 openblas / mkl 库)? 怎么知道?
【问题讨论】:
-
@ead 的回答看起来不错,并建议对其他问题采取稍微不同的方法。
标签: python numpy cython intel-mkl openblas
我有一个 cython 优化的速度程序,但速度仍然很慢。我想知道我的 cython 程序是使用 OpenBLAS 还是 MKL(链接 openblas / mkl 库)? 怎么知道?
【问题讨论】:
标签: python numpy cython intel-mkl openblas
查看进程使用哪些 dll/共享库并没有什么不同。启动 python 并导入你的 cython 模块:
import my_cython_module
Python 现在将动态加载您的模块和您的模块所需的所有共享库,这也意味着 MKL 或 BLAS。
在 Linux 上:
pgrep python
cat /proc/<PID>/maps
在 Windows 上:
现在,如果您同时加载了(blas 和 mkl)(可能是这种情况),我想您必须运行计算并使用调试器查看调用堆栈才能确定。
大多数时候,您的 cython 模块不会直接与 MKL/BLAS 链接,而是通过 numpy.在这种情况下,正如 DavidW 提供的 question 的链接中所示,您可以通过以下方式查找它:
>>> numpy.show_config()
lapack_opt_info:
libraries = ['mkl_core_dll', 'mkl_intel_lp64_dll', 'mkl_intel_thread_dll']
...
【讨论】: