R 并行和串行处理的系统时间
我正在运行一个贝叶斯MCMC概率模型,并试图并行实现它。在比较并行和串行时,我得到了关于我的机器性能的令人困惑的结果。我没有很多做并行处理的经验,所以我可能做得不对 对于probit模型,我在R 并行和串行处理的系统时间,r,parallel-processing,mcmc,R,Parallel Processing,Mcmc,我正在运行一个贝叶斯MCMC概率模型,并试图并行实现它。在比较并行和串行时,我得到了关于我的机器性能的令人困惑的结果。我没有很多做并行处理的经验,所以我可能做得不对 对于probit模型,我在mcmcpcpack包中使用MCMCprobit,对于并行处理,我在parallel包中使用parlappy 这是我的串行运行代码,以及来自system.time的结果: system.time(serial<-MCMCprobit(formula=econ_model,data=mydata,mcm
mcmcpcpack
包中使用MCMCprobit
,对于并行处理,我在parallel
包中使用parlappy
这是我的串行运行代码,以及来自system.time
的结果:
system.time(serial<-MCMCprobit(formula=econ_model,data=mydata,mcmc=10000,burnin=100))
user system elapsed
657.36 73.69 737.82
user system elapsed
0.26 0.53 1097.25
你知道为什么并行进程的用户和系统时间会短得多,但运行时间却长得多吗?我在较短的MCMC运行(100和1000)中尝试了它,故事是一样的。我想我在什么地方犯了个错误
以下是我的电脑规格:
- R 3.1.3
- 8GB内存
- Windows 7 64位
- Intel Core i5 2520M CPU,双核
mcmc
除以工人数量来实现,尽管这可能不是您真正想要做的
我认为这解释了
system.time
报告的长时间运行。“用户”和“系统”时间很短,因为它们是主进程的时间,在执行parlappy
时使用很少的CPU时间:实际CPU时间由工作人员使用,而system.time
没有报告。谢谢,我没有意识到我必须做mcmc/cores.@robin.datadrivers我不确定这是否会给你想要的结果,但你需要某种方法将问题分解成更小的部分,否则并行执行没有任何好处。我正在尝试进行10000次运行,并希望更快。我想你给每个核心发送5000的解决方案就是我想要的,除非我解释错了,或者我应该知道还有其他事情发生。
user system elapsed
0.26 0.53 1097.25