我发现使用 BLAS/ATLAS/MKL/OPENBLAS 之一会提高 R 的速度。但是,它仍然会改进用 C 或 C++ 编写的 R 包吗?
例如,R 包 Glmnet 是用 FORTRAN 实现的,R 包 rpart 是用 C++ 实现的。仅安装 BLAS/...etc 会提高执行时间吗?还是我们必须重建(构建新的 C 代码)基于 BLAS/...等的包?
最佳答案
人们经常说,包括在这里的评论中,“你必须重新编译 R”才能使用不同的 BLAS 或 LAPACK 库。那是错的。
您不必重新编译 R,前提是它是针对 BLAS 和 LAPACK 的共享库版本构建的。
我有一个 package and vignette on CRAN,它使用这一事实来提供一个基准测试框架,其中不同的 BLAS 和 LAPACK 版本仅通过安装不同的版本(Debian/Ubuntu 中的一个命令)并运行基准测试来对每个版本进行计时——这非常简单,它可以在这样的包中自动化。
该包中的结果将提供可能的速度差异的概念。它们的确切方式取决于您的计算机、您的数据(大小)、您的问题等。但是,如果您的问题使用 LAPACK 函数,这些函数可以从运行多线程中受益,那么安装 OpenBLAS 可能会有所帮助。对于使用 LAPACK 的任何 R 包都是如此,因为它们将使用通过 are 访问的相同 LAPACK 安装,并且这些可以更改。
关于r - 安装 BLAS/ATLAS/MKL/OPENBLAS 是否会加速用 C/C++ 编写的 R 包?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29984141/