所有R包的并行编程

Mar*_*o M 2 parallel-processing r

你知道是否有任何计划在R中为所有包引入并行编程?我知道一些发展,如R-revolution和并行编程包,但它们似乎有专门的功能,取代了最流行的功能(线性编程等).然而,关于R的一个好处就是大量的专用软件包每天支持并且使复杂且耗时的分析非常容易运行.其中许多使用非常流行的函数,例如广义线性模型,但也使用结果进行额外的计算和比较,最后对输出进行排序.据我所知,你需要定义一个函数的哪些部分可以在并行编程中运行,所以这可能是为什么大多数专业的R包没有这个功能,除非编辑代码,否则不能拥有它.

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

cbe*_*ica 5

我完全同意保罗的回答.

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

然而,有一种特别简单和通用的方法可以在R中隐式地并行计算:线性代数可以通过使用优化的BLAS进行并行化和大幅加速.使用此功能(取决于您的系统)就像告诉您的包管理器安装优化的BLAS一样简单,R将使用它.一旦它被连接到R,使用该基线性代数函数等的所有包%*%,crossprod,solve等将获利.

参见例如DirkEddelbüttel的gcbd包及其插图,以及如何使用GotoBLAS2/OpenBLAS的讨论.