R Snowfall - 在并行函数中调用并行函数?

Posted

技术标签:

【中文标题】R Snowfall - 在并行函数中调用并行函数?【英文标题】:R Snowfall - Call a parallel function within parallel function? 【发布时间】:2013-09-17 07:17:10 【问题描述】:

我最近开始在 R 中使用 Snowfall 包。我让它在相当复杂的实现中成功运行,如下所示(并行处理 y 循环):

increment x from 1:100 
    increment y from 1:100 
        increment z from 1:20  
        increment q from 1:20  
    

我在 2 或 4 处理器计算机上运行它。理论上,我想我可以并行运行 x、y、z 和 q 循环。所以并行运行 x 计数器,然后对于每个并行 x 进程,并行运行 y 等等。

我的问题是,使用这么少的处理器是否有意义?例如对于四个处理器,我想象的 y 循环计算将保持进程以最大输出运行(每个处理器在任何时候平均 25 个),因此拆分进程的其他部分不会节省时间。

【问题讨论】:

【参考方案1】:

您应该只并行化外部循环,因为您有足够的迭代来使用所有内核。如果迭代次数和内核数量不同,事情可能会变得很棘手,但对于您的问题,并行化其他循环只会损害性能。

我写了一个关于并行运行嵌套循环的小插曲:Nesting Foreach Loops。虽然您没有使用foreach,但您可能会发现它很有帮助。

【讨论】:

以上是关于R Snowfall - 在并行函数中调用并行函数?的主要内容,如果未能解决你的问题,请参考以下文章

使用降雪包并行化 R 代码

R降雪环境问题

R Snowfall - 难以实现调用其他函数的函数

如何并行化 R 中包的函数

R 降雪:并行应用于表格列

在 R 中并行运行函数