1

几年来,我已经在集群上使用了 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)
    }
4

0 回答 0