我正在尝试完成以下操作:并行运行3个不同的实验,并且每个实验都使用库dclone
进行并行MCMC模拟。总的来说,我想在一台32核的机器上并行运行12个进程(每个实验4个* 3个实验)。
我天真的尝试是:
library(foreach)
library(doMC)
library(dclone)
registerDoMC(3)
foreach(i in 1:3) %dopar% {
y = generate_data(i)
cl <- makePSOCKcluster(4)
mod = parJagsModel(cl, name="Model", file=myfilename)
samples = parCodaSamples(cl=cl, model="Model")
stopCluster(cl)
saveRds(samples, outfile[i])
}
但是我得到的错误是:
Error in { : task 1 failed - "cannot open the connection"
但是,可以很好地执行3个“上层”任务之一(即外部dopar)!
如果我只使用%dopar%
而不是%do%
,那么效果很好