我在不同的环境(MacOS、Ubuntu、RedHat)中使用 numpy 和 scipy。通常我使用可用的包管理器(例如,mac ports、apt、yum)来安装 numpy。
但是,如果您不手动编译 Numpy,如何确定它使用 BLAS 库?使用 mac 端口,ATLAS 作为依赖项安装。但是,我不确定它是否真的被使用过。当我执行一个简单的基准测试时, numpy.dot()
函数需要大约。时间是使用 Eigen C++ 库计算的点积的 2 倍。我不确定这是否是一个合理的结果。
原文由 Apoptose 发布,翻译遵循 CC BY-SA 4.0 许可协议
numpy.show_config()
并不总是提供可靠的信息。例如,如果我在 Ubuntu 14.04 上apt-get install python-numpy
,则np.show_config()
的输出如下所示:看起来 numpy 正在使用标准 CBLAS 库。但是,我知道 numpy 正在使用 OpenBLAS,这是我通过
libopenblas-dev
包安装的。检查 *nix 的最明确方法是使用
ldd
找出在运行时针对哪些共享库 numpy 链接(我没有 Mac,但我认为您可以使用otool -L
代替ldd
)。如果
_dotblas.so
不存在,这可能意味着 numpy 在最初编译时未能检测到任何 BLAS 库,在这种情况下,它根本不会构建任何与 BLAS 相关的组件。_dotblas.so
已被删除,但您可以检查multiarray.so
的依赖关系:查看我通过
apt-get
安装的 numpy 版本:/usr/lib/libblas.so.3
实际上是符号链接链的开始。如果我使用readlink -e
跟随他们到达最终目标,我看到他们指向我的 OpenBLAS 共享库: