我发现使用 BLAS/ATLAS/MKL/OPENBLAS 之一会提高 R 的速度。但是,它是否仍会改进用 C 或 C++ 编写的 R 包?例如,R 包 Glmnet 用 FORTRAN 实现,R 包 rpart 用 C++ 实现。只是安装 BLAS/...等会提高执行时间吗?还是我们必须重建(构建新的 C 代码)基于 BLAS/...等的包?
问问题
2385 次
1 回答
10
经常说,包括在此处的评论中,“您必须重新编译 R”才能使用不同的 BLAS 或 LAPACK 库。那是错的。
您不必重新编译 R,只要它是针对 BLAS 和 LAPACK 的共享库版本构建的。
我在 CRAN 上有一个包和小插图,它使用这个事实来提供一个基准测试框架,其中不同的 BLAS 和 LAPACK 版本通过安装不同的版本(Debian/Ubuntu 中的一个命令)并运行基准测试来针对每个版本进行计时——这非常简单它可以在这样的包中自动化。
该软件包中的结果将提供可能的速度差异的想法。它们的确切结果取决于您的计算机、数据(大小)、问题等。但是,如果您的问题使用 LAPACK 函数,这些函数可以从运行多线程中受益,那么安装 OpenBLAS 可能会有所帮助。对于任何使用 LAPACK 的 R 包来说都是如此,因为它们将使用通过 are 访问的相同 LAPACK 安装,并且可以更改这些安装。
于 2015-05-01T11:44:10.307 回答