2

你知道是否有计划在 R 中为所有包引入并行编程?我知道一些发展,例如 R-revolution 和并行编程包,但它们似乎具有替代最流行功能(线性编程等)的专用功能。然而,R 的一大优点是每天都有大量专门的软件包支持,使复杂且耗时的分析非常容易运行。其中很多使用了广义线性模型等非常流行的函数,但也将结果用于额外的计算和比较,最后整理输出。据我了解,您需要定义函数的哪些部分可以在并行编程中运行,所以这可能是大多数专业 R 包不运行的原因

是否有任何计划(或任何包)使所有最流行的 R 函数能够并行处理,以便包含这些的所有不太流行的函数都可以并行处理运行?例如,difR 包的大部分功能都使用了 glm 功能;如果 glm 包能够在所有多处理器机器的并行处理中运行(或重新编写,然后在新的 R 版本中发布),则不需要重新编写 difR 包,然后可以运行一些借助 Windows PC 上的并行编程,了解其最繁重的程序。

4

2 回答 2

5

我完全同意保罗的回答。

此外,用于并行化的通用系统需要一些非常重要的校准,即使对于那些可以轻松并行化的函数:如果您有一个提供并行计算的多个函数的调用堆栈(例如,您正在引导一些模型拟合,模型拟合可能已经提供并行化并且低级线性代数可以隐式并行)?您需要估计(或手动选择)应该在哪个级别进行显式并行化。此外,您可能有隐式并行化,因此您需要在这些之间进行权衡。

但是,有一种特别简单且通用的方法可以在 R 中隐式并行化计算:通过使用优化的 BLAS,可以显着并行化和加速线性代数。使用它可以(取决于您的系统)就像告诉您的包管理器安装优化的 BLAS 一样简单,R 将使用它。一旦链接到 R,所有使用基本线性代数函数(如 、 等)的包%*%crossprodsolve受益。

参见例如 Dirk Eddelbüttel 的gcbd包及其小插图,以及如何使用 GotoBLAS2 / OpenBLAS 的讨论。

于 2012-04-18T11:12:54.100 回答
2

如何并行化某个问题通常并非易事。因此,必须在每种情况下进行特定的实现,在这种情况下,对于每个 R 包。因此,我认为不会在 R 中实现并行处理的一般实现,甚至是不可能的。

于 2012-04-18T10:00:52.890 回答