如何在Windows平台上实现R的嵌套并行

时间:2014-06-23 06:59:12

标签: windows r parallel-processing scientific-computing

我尝试在R。

中的并行包中使用parApply()
 cl <- makeCluster(16)
 cl.boot <-makeCluster(8)

在我的计划中,我先打电话给t(parApply(cl,rv,1,sim.one.test))。在函数sim.one.test中,调用函数boot()。在boot()中,我使用

 bs.resample <- t(parApply(cl.boot,rv.boot,1,function(x) bs.mle(n1,n2,x,s,t1,t2,m,theta)))

简单来说,外部函数是sim.one.test(),内部函数是bs.mle()。 错误信息为invalid connection。我想这是因为不支持嵌套并行。从stackoverflow上的另一个questions,建议我应该使用mcapply(),它只能应用于Linux,但我在Windows平台上运行该程序。在Windows平台上有嵌套并行计算的解决方案吗?感谢。

1 个答案:

答案 0 :(得分:1)

为什么您认为需要嵌套并行化?这只会增加你的并行化开销(如果它可以工作,我怀疑)。从概念上讲,只有并行化外部循环(如果它包含足够的迭代并且或多或少地负载平衡),它要好得多。

但是,您可以将nested foreach loops与并行后端一起使用。这会将嵌套循环转换为一个循环,然后再将其发送给工作者。