在 CentOS/Fedora 上安装 OpenBLAS
Installing OpenBLAS on CentOS / Fedora
在一个 Java 项目中,我使用 matrix-toolkits-java (MTJ) for efficient matrix multiplication. This relies on netlib-java,它又依赖于机器上安装的 BLAS 和 LAPACK 的优化实现。它专门查找 /usr/lib64/libblas.so.3
和 /usr/lib64/liblapack.so.3
来找到这些库。
当通过 Yum 安装 blas
和 lapack
时,我们得到符号链接 /usr/lib64/libblas.so.3
和 /usr/lib64/liblapack.so.3
指向引用 blas
中的 .so 文件lapack
通过 Yum 安装。
现在我们想要使用比参考实现更快的实现,在我的例子中 OpenBLAS。不管是我自己编译还是通过 Yum 安装它,我最终都会得到 /usr/lib64/libopenblas-r0.2.18.so
。
现在,根据 Internet 上的任何指南,我应该将指向参考实现的符号链接替换为指向 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 上以 运行 ldconfig
不会破坏它的方式安装 OpenBLAS?我无法删除 blas
和 lapack
包,因为主机的其他客户端可能依赖它。相反,我会以某种方式让 OS 理解 OpenBLAS 是 blas
和 lapack
.
的替代品
我认为在不删除参考实现的情况下无法避免这种行为。
如果您需要手动重建 ld.so.cache,您可以 运行 ldconfig -X
以避免更新链接。
除此之外,您很可能必须创建一个自定义脚本来在 ldconfig 更新链接后将符号链接恢复到 openblas
This article 建议通过 Yum 安装 openblas-compat
。这为我解决了这个问题。安装默认 blas
软件包后,我的软件仍在使用 OpenBLAS。
在一个 Java 项目中,我使用 matrix-toolkits-java (MTJ) for efficient matrix multiplication. This relies on netlib-java,它又依赖于机器上安装的 BLAS 和 LAPACK 的优化实现。它专门查找 /usr/lib64/libblas.so.3
和 /usr/lib64/liblapack.so.3
来找到这些库。
当通过 Yum 安装 blas
和 lapack
时,我们得到符号链接 /usr/lib64/libblas.so.3
和 /usr/lib64/liblapack.so.3
指向引用 blas
中的 .so 文件lapack
通过 Yum 安装。
现在我们想要使用比参考实现更快的实现,在我的例子中 OpenBLAS。不管是我自己编译还是通过 Yum 安装它,我最终都会得到 /usr/lib64/libopenblas-r0.2.18.so
。
现在,根据 Internet 上的任何指南,我应该将指向参考实现的符号链接替换为指向 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 上以 运行 ldconfig
不会破坏它的方式安装 OpenBLAS?我无法删除 blas
和 lapack
包,因为主机的其他客户端可能依赖它。相反,我会以某种方式让 OS 理解 OpenBLAS 是 blas
和 lapack
.
我认为在不删除参考实现的情况下无法避免这种行为。
如果您需要手动重建 ld.so.cache,您可以 运行 ldconfig -X
以避免更新链接。
除此之外,您很可能必须创建一个自定义脚本来在 ldconfig 更新链接后将符号链接恢复到 openblas
This article 建议通过 Yum 安装 openblas-compat
。这为我解决了这个问题。安装默认 blas
软件包后,我的软件仍在使用 OpenBLAS。