在CentOS/Fedora上安装OpenBLAS
在一个Java项目中,我使用(MTJ)实现高效的矩阵乘法。这取决于,而这又取决于机器上安装的BLAS和LAPACK的优化实现。它专门查找在CentOS/Fedora上安装OpenBLAS,centos,rpm,blas,openblas,mtj,Centos,Rpm,Blas,Openblas,Mtj,在一个Java项目中,我使用(MTJ)实现高效的矩阵乘法。这取决于,而这又取决于机器上安装的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指向通过Yum安装的参考blas和lapack中的.so文件 在我的例子中,现在我们希望使用比参
/usr/lib64/libblas.so.3
和/usr/lib64/liblapack.so.3
来查找这些库
通过Yum安装blas
和lapack
时,我们会获得符号链接/usr/lib64/libblas.so.3
和/usr/lib64/liblapack.so.3
指向通过Yum安装的参考blas
和lapack
中的.so文件
在我的例子中,现在我们希望使用比参考实现更快的实现。不管是我自己编译还是通过Yum安装,我最终得到的是/usr/lib64/libopenblas-r0.2.18
现在,根据互联网上的任何指南,我应该将参考实现的符号链接替换为OpenBLAS实现的符号链接,最终得到如下结果:
libblas.so.3 -> libopenblas-r0.2.18.so
liblapack.so.3 -> libopenblas-r0.2.18.so
好的,我能做到!我可以使用ln
,或者通过备选方案
。如果我这样做了,我的代码将很高兴地使用快速OpenBLAS
但是,当ldconfig
运行“我的超级棒”符号链接时,它们会被参考BLAS和LAPACK安装覆盖。然后,我的软件又变得悲伤和缓慢
所以我的问题是,如何在CentOS/Fedora上安装OpenBLAS,这样运行ldconfig
就不会破坏它?我无法删除blas
和lapack
包,因为主机的其他客户端可能依赖它。相反,我想让操作系统明白OpenBLAS是blas
和lapack
的替代品,我不认为不删除参考实现就可以避免这种行为。
如果需要手动重建ld.so.cache,可以运行ldconfig-X
以避免更新链接
除此之外,在ldconfig更新链接后,您很可能需要创建一个自定义脚本来恢复指向openblas的符号链接建议通过Yum或者up2date安装openblas compat
。这为我解决了这个问题。安装默认的blas
软件包后,我的软件仍在使用OpenBLAS。如果其他人依赖blas和lapack软件包,他们不也很可能依赖libblas。那么.3指向blas实现?