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

Tay*_*hin 3 r blas atlas intel-mkl openblas

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

Dir*_*tel 9

经常声明,包括在这里的评论中,"你必须重新编译R"才能使用不同的BLAS或LAPACK库.那是错的.

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

在CRAN上有一个软件包和插图,它使用这个事实来提供一个基准测试框架,其中不同的BLAS和LAPACK版本只是通过安装不同的(Debian/Ubuntu中的一个命令)和运行基准来定时 - 这是非常简单的它可以在这样的包中自动化.

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