我尝试在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平台上有嵌套并行计算的解决方案吗?感谢。
答案 0 :(得分:1)
为什么您认为需要嵌套并行化?这只会增加你的并行化开销(如果它可以工作,我怀疑)。从概念上讲,只有并行化外部循环(如果它包含足够的迭代并且或多或少地负载平衡),它要好得多。
但是,您可以将nested foreach
loops与并行后端一起使用。这会将嵌套循环转换为一个循环,然后再将其发送给工作者。