在CentOS / Fedora上安装OpenBLAS

时间:2017-07-07 14:11:54

标签: centos rpm blas openblas mtj

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

通过Yum安装blaslapack时,我们会从引用/usr/lib64/libblas.so.3和{/usr/lib64/liblapack.so.3获取指向.so文件的符号链接blaslapack {1}}通过百胜安装。

现在我们想要使用比引用速度更快的实现,在我的例子https://github.com/swimlane/ngx-charts中。与我自己编译或通过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

好的,我能做到!我可以使用lnalternatives来完成此操作。如果我这样做,我的代码很乐意使用快速的OpenBLAS。

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

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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