所有R包的并行编程
你知道有没有计划在R中为所有包引入并行编程? 我知道一些发展,如R-revolution和并行编程包,但它们似乎有专门的函数,取代了最流行的函数(线性编程等)。然而,R的一大优点是每天都有大量专门的软件包,使复杂而耗时的分析非常容易运行。其中许多使用非常流行的函数,如广义线性模型,但也使用结果进行额外的计算和比较,并最终整理输出。据我所知,您需要定义函数的哪些部分可以在并行编程中运行,因此这可能就是为什么大多数专业的R软件包没有此功能,并且除非对代码进行编辑,否则无法拥有此功能的原因所有R包的并行编程,r,parallel-processing,R,Parallel Processing,你知道有没有计划在R中为所有包引入并行编程? 我知道一些发展,如R-revolution和并行编程包,但它们似乎有专门的函数,取代了最流行的函数(线性编程等)。然而,R的一大优点是每天都有大量专门的软件包,使复杂而耗时的分析非常容易运行。其中许多使用非常流行的函数,如广义线性模型,但也使用结果进行额外的计算和比较,并最终整理输出。据我所知,您需要定义函数的哪些部分可以在并行编程中运行,因此这可能就是为什么大多数专业的R软件包没有此功能,并且除非对代码进行编辑,否则无法拥有此功能的原因 是否有任何
是否有任何计划(或任何软件包)使所有最流行的R函数都能在并行处理中运行,以便所有不太流行的包含这些函数的函数都能在并行处理中运行?例如,包difR对其大多数功能使用glm函数;如果glm包已启用以并行处理方式运行(或重新编写,然后以新的R版本发布)对于所有多处理器机器,则无需重新编写difR包,这样就可以借助Windows PC上的并行编程来运行一些最繁重的过程。如何并行化某个问题通常是非常重要的。因此,在每种情况下,都必须对每个R包进行具体的实现。因此,我认为在R中实现并行处理是不可能的,甚至是不可能的。我完全同意Paul的回答 此外,一个通用的并行化系统需要一些非常不平凡的校准,即使对于那些可以轻松并行化的函数也是如此:如果您有一个由多个函数组成的调用堆栈来提供并行计算,该怎么办(例如,您正在引导某些模型拟合,模型拟合可能已经提供并行化,而低级线性代数可以隐式并行)?您需要估计(或手动选择)在哪个级别应该进行显式并行化。此外,您可能有隐式并行化,所以您需要在这两者之间进行权衡 然而,有一种在R中隐式并行计算的特别简单和通用的方法:通过使用优化的BLAS,线性代数可以并行化并大大加速只要告诉您的软件包管理器安装优化的BLAS,R就会使用它。一旦它链接到R,所有使用基本线性代数函数的软件包,如
%*%
,crossprod
,solve
等,都将受益
请参阅例如Dirk Eddelbüttel的
gcbd
软件包及其小插曲,以及如何使用GotoBLAS2/OpenBLAS的讨论。感谢您提出的非常有趣的建议。这非常有帮助。