我正在构建一台办公用PC,其最繁重的任务将在R中运行Monte Carlo Markov Chain(MCMC)估计。显然,这是一项CPU密集型任务,并且R以仅限于单个内核而著称。
鉴于预算有限,AMD或Intel哪种CPU更适合该任务?特别是,我正在研究Intel Core i3 4130,其两个内核主频为3.4 GHz,AMD FX-6300,六个内核主频为3.5 Ghz,并且具有未锁定的乘法器。考虑到R的局限性,在繁重的计算任务中,哪一种性能更好?
谢谢。
编辑:关于此问题,我能找到的唯一信息是此常见问题解答项目:
2.23为什么R永远不会使用超过50%的CPU?这是对Windows令人困惑的任务管理器的误读。R的计算是单线程的,因此它不能使用多个CPU。任务管理器显示的不是CPU使用率,而是占表观CPU总数的百分比。我们说“表观”是因为它处理所谓的“超线程” CPU,例如每个内核有两个CPU,并且大多数现代CPU至少有两个内核。
我是否知道如果R仅可以使用一个CPU线程,那么Intel的超线程就没有关系了,因此AMD的更高时钟将具有优势?
EDIT2:这是一些相关的基准测试,尽管它们没有比较CPU,只是比较有无超线程的速度。
EDIT3:尽管用不同的术语表达,但该主题是关于同一问题的。虽然没有太多的分辨率。
EDIT4:我已经找到了答案,但是由于我怀疑这个问题是否会被重新提出,我将在这里引用它。请参阅我对以下主要帖子的评论。
正确的答案应该是AMD(鉴于此特定选择)。如果存在计算困难,例如需要运行很长的MCMC链,则可以将JAGS或BUGS与R包(例如BRugs,R2WinBUGS,runjags和rjags)一起使用。在这种情况下,可以在不同的内核上针对同一参数运行多个链,并在事后结合它们。这个vid解释了这一点。内核越多,链越多,因此具有六个内核的AMD比具有四个(超线程)内核的Intel更可取。
例如,在六核AMD上,我将同时运行六个链:
library(R2WinBUGS)
re.sim<-bugs(data, inits, parameters, "model.bug", n.chains=6, n.iter=100000,
n.burnin=3000, n.thin=2, debug=F, program="openbugs")
在Intel CPU上,我只能以较低的时钟同时运行四个链。可能有意思的是,runjags库允许并行执行,包括多计算机集群。
我相信那些将这篇文章标记为题外的人认为这是一个非常广泛的问题,而实际上这是一个非常狭窄的问题,需要R的知识,R的软件接口,MCMC是什么和做什么以及如何在综合利用CPU能力方面,这是其中之一。我提供的答案完全不是主观的,它与在R中编程复杂的贝叶斯模型直接相关。投票决定重新开放,标记为离题很可能是由于对MCMC所需要内容的无知,而是着眼于“ AMD vs英特尔”红鲱鱼。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句