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

时间:2015-05-01 09:02:46

标签: r blas intel-mkl atlas openblas

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

1 个答案:

答案 0 :(得分:9)

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

如果是针对BLAS和LAPACK的共享库版本构建的,不必重新编译R

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

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