【问题标题】:Importing Numpy fails after building from source against amd blis从源代码构建针对 amd blis 后导入 Numpy 失败
【发布时间】:2022-11-05 15:17:09
【问题描述】:

我正在尝试针对 BLIS(针对 BLAS 和 CBLAS)和针对 LAPACK 的 OpenBLAS 从源代码构建 Numpy 的本地版本。

我开始在启用 CBLAS 的情况下为 zen3 在本地构建 BLIS,如下所示:

./configure --enable-threading=openmp --enable-cblas --prefix=$HOME/blis zen3

然后运行测试(全部通过)并运行make install。我确保所有相关文件都在 $HOME/blis 库中(见附件截图)。

我还在本地构建了 openBLAS,那里没有特殊配置。

之后,我修改了 numpy 的 site.cfg 以相应地配置 openBLAS 和 blis 文件夹:

[blis]
libraries = blis
library_dirs = /home/or/blis/lib/
include_dirs = /home/or/blis/include/blis
runtime_library_dirs = /home/or/blis/lib/

[openblas]
libraries = openblas
library_dirs = /opt/OpenBLAS/lib
include_dirs = /opt/OpenBLAS/include
runtime_library_dirs = /opt/OpenBLAS/lib

我继续构建和安装 numpy:

NPY_BLAS_ORDER=blis NPY_LAPACK_ORDER=openblas NPY_CBLAS_LIBS= python ./numpy/setup.py build -j 32

请注意,如果 CBLAS 包含在 BLIS 库中,那么 NPY_CBLAS_LIBS 是空的,因为 numpy 的构建文档说这样做。

然后,导入 numpy 导致: Original error was: /home/or/.pyenv/versions/3.9.6/lib/python3.9/site-packages/numpy-1.24.0.dev0+998.g6a5086c9b-py3.9-linux-x86_64.egg/numpy/core/_multiarray_umath.cpython-39-x86_64-linux-gnu.so: undefined symbol: cblas_sgemm

在这一点上我一无所知,因为我在网上找不到关于这个具体案例的任何信息。

从 pip(openblas 自带)安装 numpy 可以成功导入。

更新1: 在阅读make install 日志时,我发现它在该位置找不到我的 BLIS 库文件,即使这些文件位于指定的路径中。我还尝试在各种路径中重新编译和安装 BLIS,并在编译之前重新配置 numpy,但得到了相同的结果。

当我从 AMD 的网站下载预编译版本的 BLIS 时,numpy 似乎得到了它,但这不是推荐的方法,因为我缺少 Zen3 的优化。

【问题讨论】:

  • 狂拍:将/opt/OpenBLAS/lib 添加到LD_LIBRARY_PATH 有帮助吗?
  • @user3840170 你是说 BLIS 吗?因为使用 OpenBLAS 从来都不是问题,它可以正常工作。
  • ldd /home/or/.pyenv/versions/3.9.6/lib/python3.9/site-packages/numpy-1.24.0.dev0+998.g6a5086c9b-py3.9-linux-x86_64.egg 的输出是什么/numpy/core/_multiarray_umath.cpython-39-x86_64-linux-gnu.so ?听起来它正在尝试动态加载一些依赖项并且找不到它们

标签: python numpy blas cblas


【解决方案1】:

我不确定这是否是正确的答案,但请尝试将环境变量 CPATH 设置为 BLIS 包含文件的路径。例如:

导出 CPATH=/home/或/blis/include/blis 然后重建并安装numpy。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-29
    • 1970-01-01
    • 1970-01-01
    • 2021-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多