安装 BLAS/ATLAS/MKL/OPENBLAS 是否会加速用 C/C++ 编写的 R 包?

Does installing BLAS/ATLAS/MKL/OPENBLAS will speed up R package that is written in C/C++?

我发现使用 BLAS/ATLAS/MKL/OPENBLAS 之一会提高 R 的速度。但是,它是否仍会改进用 C 或 C++ 编写的 R 包? 例如,R 包 Glmnet 是用 FORTRAN 实现的,R 包 rpart 是用 C++ 实现的。仅安装 BLAS/...等会缩短执行时间吗?还是我们必须重建(构建新的 C 代码)基于 BLAS/...等的包?

经常指出,包括在此处的评论中,"you have to recompile R" 使用不同的 BLAS 或 LAPACK 库。这是错误的。

不必重新编译 R,前提是它是针对 BLAS 和 LAPACK 的共享库版本构建的。

我有一个 package and vignette on CRAN,它使用这个事实来提供一个基准测试框架,其中不同的 BLAS 和 LAPACK 版本通过安装不同的版本(Debian/Ubuntu 中的一个命令)和 运行ning 基准测试——这非常简单,可以在这样的包中自动执行。

该包中的结果将提供可能的速度差异的概念。它们究竟如何解决取决于您的计算机、您的数据(大小)、您的问题等。但是,如果您的问题使用 LAPACK 函数可以 运行 从 运行ning 多线程中受益,那么安装 OpenBLAS 可能帮助。对于任何使用 LAPACK 的 R 包都是如此,因为它们将使用通过 are 访问的相同 LAPACK 安装,并且这些可以更改。