我发现使用BLAS/ATLAS/MKL/OPENBLAS中的一个会提高R的速度。但是,它还会改进用C或C++编写的R包吗?例如,R包Glmnet在FORTRAN中实现,R包rpart在C++中实现。它会只是安装BLAS/。。。etc会提高执行时间吗?还是我们必须重建(构建新的C代码)基于BLAS/。。。等
经常有人说,包括在这里的注释中,"您必须重新编译R"才能使用不同的BLAS或LAPACK库。这是错误的。
您不必重新编译R,前提是它是根据BLAS和LAPACK的共享库版本构建的。
我有一个关于CRAN的软件包和小插曲,它利用这个事实提供了一个基准测试框架,在这个框架中,不同的BLAS和LAPACK版本只需安装不同的版本(Debian/Ubuuntu中的一个命令)并运行基准测试就可以定时——这非常简单,可以在这样的软件包中实现自动化。
该软件包中的结果将为可能的速度差异提供一个概念。它们的确切结果取决于你的计算机、你的数据(大小)、你的问题等。但是,如果你的问题使用了LAPACK函数,这些函数可以从运行多线程中受益,那么安装OpenBLAS可能会有所帮助。使用LAPACK的任何R包都是如此,因为它们将使用通过are访问的相同LAPACK安装,并且这些都可以更改。