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

3

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


你必须针对BLAS/ATLAS/MKL/OPENBLAS进行全部编译,即对于R本身以及所有需要编译的包。 - user3710546
谢谢你的评论,Pascal。如果我使用已有的带有BLAS/ATLAS等编译的C/C++代码R包,会提高速度吗? - Tay Shin
@Pascal:那是不正确的,我在下面提供了更多细节。 - Dirk Eddelbuettel
@DirkEddelbuettel 只有基于 Debian 的 Linux 才不正确,对吧? - user3710546
在使用系统提供的LAPACK和BLAS的每个R构建系统上都是正确的。我会说“几乎所有但Windows”。 - Dirk Eddelbuettel
1个回答

10
经常有人说,包括这里的评论,“你必须重新编译R”才能使用不同的BLAS或LAPACK库。这是错误的。只要它是构建在共享库版本的BLAS和LAPACK上,就不需要重新编译R。
我有一个CRAN上的软件包和手册,利用这个事实提供了一个基准测试框架,通过安装不同的BLAS和LAPACK版本(在Debian/Ubuntu中只需一个命令),并运行基准测试来计时,这是如此简单,可以在这样的软件包中自动化。
该软件包中的结果将提供可能的速度差异的想法。它们的具体表现取决于您的计算机、数据(大小)、问题等等。但是,如果您的问题使用可以从多线程运行中受益的LAPACK函数,那么安装OpenBLAS可能会有所帮助。这对于任何使用LAPACK的R软件包都是正确的,因为它们将使用相同的LAPACK安装,通过are进行访问,并且这些可以更改。

从来没有想到“gcbd”包的作者在这里发表了评论。虽然在提问之前我已经阅读了说明文档和您的包,但我想我并没有完全理解它。无论如何,非常感谢!:D - Tay Shin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接