R 安装和管理手册中的BLAS 部分说,当使用配置参数从源代码--without-blas
构建 R 时,它将R_HOME/lib/libRblas.so
与标准 R 共享库一起将 Netlib 的参考 BLAS 构建到一个独立的共享库中R_HOME/lib/libR.so
。这使用户更容易在 R 环境中切换和基准测试不同的调整 BLAS。该指南建议研究人员可以使用符号链接来libRblas.so
实现这一点,本文提供了更多详细信息。
相反,当简单地从 R CRAN 的镜像或 Ubuntu 的存储库(对于像我这样的 linux 用户)安装 R 的预编译二进制版本时,理论上在不重建 R 的情况下在不同的 BLAS 之间切换应该更困难,因为预-编译的 R 版本配置为--with-blas = (some blas library)
. 我们可以很容易地检查这一点,要么通过读取配置文件R_HOME/etc/Makeconf
,要么检查R CMD config BLAS_LIBS
. 例如,在我的机器上它返回-lblas
,因此它在构建时链接到参考 BLAS 。结果,没有R_HOME/lib/libRblas.so
,只有R_HOME/lib/libR.so
。
但是,这个 R 博客说,即使没有从源代码安装 R,也可以在不同的 BLAS 之间切换。作者从 ubuntu 的存储库中尝试了 ATLAS 和 OpenBLAS,然后使用update-alternatives --config
来解决。也可以从源代码配置和安装调整的 BLAS,通过 将它们添加到“替代品” update-alternatives --install
,然后以相同的方式在它们之间切换。在这种情况下,BLAS 库(一个符号链接)可以在/usr/lib/libblas.so.3
ubuntu 和 R's 下找到LD_LIBRARY_PATH
。我已经测试过了,这确实有效!但我对 R 如何实现这一点感到非常惊讶。 正如我所说,R 应该与构建时配置的 BLAS 库绑定,即,我希望所有 BLAS 例程都集成到R_HOME/lib/libR.so
. 那么为什么仍然可以通过 更改 BLAS/usr/lib/libblas.so.3
呢?
谢谢,如果有人可以解释一下。