Я использовал комбинацию 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)
}