在 CentOS / Fedora 上安装 OpenBLAS

TTT*_*TTT 5 centos rpm blas mtj openblas

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

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

现在我们想要使用比参考更快的实现,在我的例子中是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
Run Code Online (Sandbox Code Playgroud)

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

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

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

TTT*_*TTT 1

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