繁体   English   中英

如何知道 cython 程序是使用 numpy+MKL 还是不使用 MKL?

[英]How to know cython program is using numpy+MKL or not using MKL?

我有一个 cython 优化的速度程序,但仍然变慢。 我想知道我的 cython 程序是使用 OpenBLAS 还是 MKL(链接 openblas / mkl 库)? 怎么知道呢?

查看进程使用哪些 dll/共享库并没有什么不同。 启动 python 并导入你的 cython 模块:

import my_cython_module

Python 现在将动态加载您的模块和您的模块所需的所有共享库,这也意味着 MKL 或 BLAS。

在 Linux 上:

  1. 获取程序的pid: pgrep python
  2. 查看加载的共享库: cat /proc/<PID>/maps

在 Windows 上:

  • 您可以使用ProcessExplorer ,选择 python 进程并查看加载的 dll (Ctrl+D)。
  • 您可以将 VisualStudio-Debugger 附加到 python 进程并查看模块 (Ctrl+Alt+U)。

现在,如果您同时加载了(blas 和 mkl)(可能是这种情况),我想您必须运行计算并使用调试器查看调用堆栈才能确定。


大多数情况下,您的 cython 模块不会直接与 MKL/BLAS 链接,而是通过 numpy。 在这种情况下,正如 DavidW 提供的问题链接中所示,您可以通过以下方式查找:

>>> numpy.show_config()
lapack_opt_info:
     libraries = ['mkl_core_dll', 'mkl_intel_lp64_dll', 'mkl_intel_thread_dll']
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM