R,foreach,doMPI通过增加迭代来降低速度

时间:2017-01-30 13:20:20

标签: r foreach parallel-processing 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)
    }

0 个答案:

没有答案