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)
    }

person Jim Maas    schedule 30.01.2017    source источник
comment
У меня была похожая проблема, поэтому я провел несколько тестов. Помогли, но решения проблемы пока нет. stackoverflow.com/questions/41925706/   -  person JustGettinStarted    schedule 10.02.2017
comment
хотя в моем конкретном примере используется doParallel, я недавно перешел на MPI и та же проблема   -  person JustGettinStarted    schedule 10.02.2017
comment
Каково значение PopSize? Вы используете 10 воркеров или 10 воркеров на узел? Возвращает ли AnnualProbInf одно числовое значение или вектор?   -  person Steve Weston    schedule 12.02.2017