【问题标题】:Does installing BLAS/ATLAS/MKL/OPENBLAS will speed up R package that is written in C/C++?安装 BLAS/ATLAS/MKL/OPENBLAS 会加速用 C/C++ 编写的 R 包吗?
【发布时间】:2015-05-01 09:02:45
【问题描述】:

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

【问题讨论】:

  • 您必须针对 BLAS/ATLAS/MKL/OPENBLAS 编译所有内容,即 R 本身以及所有需要编译的包。
  • 感谢帕斯卡的评论。那么如果我使用 BLAS/ATLAS 等进行编译,使用现有的 C/C++ 代码 R 包会提高速度吗?
  • @Pascal:这是不正确的,我在下面提供了更多细节。
  • @DirkEddelbuettel 只对基于 Debian 的 Linux 不正确,对吧?
  • 在构建 R 以使用系统提供的 LAPACK 和 BLAS 的每个系统上更正。我会说“几乎除了 Windows”。

标签: r blas intel-mkl atlas openblas


【解决方案1】:

经常说,包括在此处的评论中,“您必须重新编译 R”才能使用不同的 BLAS 或 LAPACK 库。这是错误的。

不必重新编译 R,只要它是针对 BLAS 和 LAPACK 的共享库版本构建的。

我有一个package and vignette on CRAN,它利用这一事实提供了一个基准测试框架,其中不同的 BLAS 和 LAPACK 版本通过安装不同的版本(Debian/Ubuntu 中的一个命令)并运行基准测试来针对每个版本进行计时——就是这样很简单,它可以在这样的包中自动化。

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

【讨论】:

  • 没想到包“gcbd”的作者在这里发表了评论。不过,在我问问题之前,我阅读了小插图和你的包裹。我想我没有很好地理解它。无论如何,非常感谢你! :D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-20
  • 2014-03-07
  • 1970-01-01
  • 1970-01-01
  • 2018-02-22
  • 2020-03-09
相关资源
最近更新 更多