gpt4 book ai didi

python - 为什么在将ubuntu从12.04升级到14.04后使用python的numpy进行矩阵乘法变得如此缓慢?

转载 作者:太空狗 更新时间:2023-10-30 02:20:06 25 4
gpt4 key购买 nike

我以前有 Ubuntu 12.04,最近全新安装了 Ubuntu 14.04。我正在研究的内容涉及大矩阵(~2000 X 2000)的乘法,为此我使用了 numpy。我遇到的问题是现在计算的时间延长了 10-15 倍。

从 Ubuntu 12.04 到 14.04 意味着从 Python 2.7.3 到 2.7.6 以及从 numpy 1.6.1 到 1.8.1。但是,我认为这个问题可能与 numpy 链接到的线性代数库有关。而不是 libblas.so.3gfliblapack.so.3gf,我只能找到 libblas.so.3liblapack。所以.3

我还安装了 libopenblas 和 libatlas:

$ sudo apt-get install libopenblas-base libatlas3-base

并尝试了它们,但减速并没有改变。所以,我的问题是:

  1. 有和没有“gf”的包裹有什么区别?
  2. 这是否可能导致矩阵乘法变慢?
  3. 如果是这样,我如何返回到 libblas.so.3gf 和 liblapack.so.3gf?它们似乎在 Ubuntu 14.04 中停产了。

非常感谢!

最佳答案

wim 是正确的,因为问题可能是由 numpy 链接到较慢的 BLAS 库(例如引用 CBLAS 库而不是 ATLAS)引起的。

您可以通过在 numpy 的已编译共享库之一上调用 ldd 实用程序来检查正在链接哪个 BLAS 库。

例如,如果您使用 apt-get 在标准位置安装了 numpy:

~$ ldd /usr/lib/python2.7/dist-packages/numpy/core/_dotblas.so
...
libblas.so.3 => /usr/lib/libblas.so.3 (0x00007f01f0188000)
...

此输出告诉我 numpy 链接到 /usr/lib/libblas.so.3。这通常是引用 CBLAS 库的符号链接(symbolic link),速度非常慢。

您可以按照 wim 的建议,删除通过 apt-get 安装的 numpy 版本,然后使用 pip 或直接下载源代码自行构建。但是,我强烈不鼓励您使用 sudo pip install ... 在系统范围内安装 Python 模块。这是一个不好养成的习惯,因为您冒着破坏系统范围 Python 环境中的依赖关系的风险。

使用 pip install --user ... 安装到您的 ~/.local/ 目录中或者更好的是,安装到一个完全独立 virtualenv .

另一种选择是使用 update-alternatives强制您的系统范围内的 numpy 链接到不同的 BLAS 库。我写了一个 previous answer here显示了如何执行此操作。

关于python - 为什么在将ubuntu从12.04升级到14.04后使用python的numpy进行矩阵乘法变得如此缓慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25320684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com