Я пытаюсь выполнить что-то вроде следующего: параллельно запустить 3 разных эксперимента и для каждого эксперимента запустить параллельное моделирование MCMC с использованием библиотеки dclone
. В целом, я хотел бы запустить 12 процессов параллельно (4 на эксперимент * 3 эксперимента) на машине с 32 ядрами.
Моя наивная попытка была:
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%
я использую только %do%
, он отлично работает