我尝试在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。我猜这是因为不支持嵌套并行。从另一个关于堆栈溢出的questions上,有人建议我应该使用mcapply(),它只能在Linux上应用,但我在Windows平台上运行程序。Windows平台上的嵌套并行计算有什么解决方案吗?谢谢。
发布于 2014-06-23 15:12:22
为什么你认为你需要嵌套并行化?这只会增加你的并行化开销(如果它能工作的话,我对此表示怀疑)。从概念上讲,到目前为止,只对外部循环进行并行化要好得多(只要它包含足够的迭代并且或多或少是负载平衡的)。
但是,您可以使用具有并行后端的nested foreach loops。这会将嵌套的循环转换为一个循环,然后再将其发送给工作程序。
https://stackoverflow.com/questions/24360109
复制相似问题