【问题标题】:Installing OpenBLAS on CentOS / Fedora在 CentOS / Fedora 上安装 OpenBLAS
【发布时间】:2017-07-07 14:11:54
【问题描述】:

在一个 Java 项目中,我使用 matrix-toolkits-java (MTJ) 进行高效的矩阵乘法。这依赖于netlib-java,而后者又依赖于机器上安装的 BLAS 和 LAPACK 的优化实现。它专门寻找/usr/lib64/libblas.so.3/usr/lib64/liblapack.so.3 来查找这些库。

当通过 Yum 安装 blaslapack 时,我们会从通过 Yum 安装的引用 blaslapack 中获得指向 .so 文件的符号链接 /usr/lib64/libblas.so.3/usr/lib64/liblapack.so.3

现在我们想使用比参考更快的实现,在我的例子中是OpenBLAS。与我自己编译还是通过 Yum 安装无关,我最终得到/usr/lib64/libopenblas-r0.2.18.so

现在,根据互联网上的任何指南,我应该将参考实现的符号链接替换为 OpenBLAS 实现的符号链接,结果如下:

libblas.so.3 -> libopenblas-r0.2.18.so
liblapack.so.3 -> libopenblas-r0.2.18.so

好的,我可以做到!我可以通过ln 或通过alternatives 做到这一点。如果我这样做了,我的代码就会愉快地使用快速的 OpenBLAS。

但是,当ldconfig 运行时,我很棒的符号链接消失了,它们被参考 BLAS 和 LAPACK 安装覆盖。然后我的软件又变慢了。

所以我的问题是,如何在 CentOS/Fedora 上安装 OpenBLAS 以使运行ldconfig 不会破坏它?我无法删除 blaslapack 软件包,因为主机的其他客户端可能会依赖它。相反,我会以某种方式让操作系统了解 OpenBLAS 是 blaslapack 的替代品。

【问题讨论】:

  • 如果其他人依赖 blas 和 lapack 包,他们是否很可能也依赖指向 blas 实现的 libblas.so.3?

标签: centos rpm blas openblas mtj


【解决方案1】:

This article 建议通过 Yum 安装 openblas-compat。这为我解决了这个问题。安装默认的blas 软件包后,我的软件仍在使用 OpenBLAS。

【讨论】:

    【解决方案2】:

    我不认为这种行为是可以在不删除参考实现的情况下避免的。 如果您需要手动重建 ld.so.cache,您可以运行ldconfig -X 以避免更新链接。

    除此之外,您很可能必须创建一个自定义脚本,以便在 ldconfig 更新链接后恢复到 openblas 的符号链接

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-20
      • 2016-01-30
      • 2018-08-05
      • 2018-04-23
      相关资源
      最近更新 更多