R, foreach, doMPI уменьшил скорость с увеличенными итерациями
Я уже несколько лет использую комбинацию R, doMPI и foreach в кластере, и обычно увеличение числа итераций моделирования довольно линейно с точки зрения требуемого времени выполнения. Недавно я использовал этот вложенный цикл foreach, и по мере увеличения количества симуляций (NumSim) скорость резко замедляется, и я понятия не имею, почему. Есть мысли о том, как поставить диагноз или с чего начать искать?
Например, в качестве примера тестирования с 10 ядрами и всем остальным, если
NumSim = 10, время для завершения 678 секунд
NumSim = 20, время = 1856 секунд
NumSim = 30, время = 3560 секунд
NumSim = 50, время = 7956 секунд
В предыдущей работе я ожидал, что NumSim = 50 займет почти ровно 678 * 5 ~ 3390 секунд.
results <- foreach (j = 1:NumSim, .combine = acomb) %:%
## Person Single Population
foreach (i = 1:PopSize, .combine=rbind, .packages = c("zoo")) %dopar% {
annual <- AnnualProbInf(WatCons, CrpPerLit, 1, 1, naf)
daily <- AnnualProbInf(WatCons, CrpPerLit, 365, 365, khf)
immune <- AnnualProbInfImm(WatCons, CrpPerLit, 730, 730, khf, DayNonSus)
out <- cbind (annual, daily, immune)
}