全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
12011 27
2014-08-27
用同一台电脑(4核8线程),MAC系统下,分别用Stata 12和Stata 13运行相同的程序(用statsby估算约7万个回归方程系数)。Stata 12 MP 4-core,Stata 13 MP 8-core, Stata 13 MP 64-core分别用时400秒,527秒和544秒(Stata中timer计时)。用Stata 12 MP 4-core进行计算时,CPU占用率约50%,用Stata 13 MP 8-core和64-core进行计算时,CPU占用率接近100%。
不知道有没有坛友做过类似的测试,想问的问题是,为什么Stata 13 更多核的情况下运行速度比Stata 12慢,莫非是CPU占用率过高导致的速度下降?

后来在坛友提示下用set processors命令设置软件使用CPU核心数目,经测试发现Stata 13在set processors 4的情况下,跑上述程序耗时403秒(只比Stata 12 MP 4-core稍慢,但是后来测试中发现Stata 12 MP 4-core最快一次耗时386秒)。set processors 5 和 6的情况下分别耗时424秒和446秒。set processor 6的情况下,CPU占用率75%左右。以上测试说明,Stata 13的运行速度和Stata 12基本想当,更准确说速度稍慢。对速度影响大的是对虚拟线程的使用,具体来说,在完全使用物理真核数目的情况下(4核8线程CPU,set processors 4)运行速度最快,在使用虚拟核心后,表面上发挥更多CPU能力,但实际上运行速度下降明显,在CPU满载情况下(使用所有8线程 - 物理真核4核外加4虚拟核心),速度严重降低(比CPU 50%占用率即完全使用物理真核时耗时增加约36%)。综上所述,Stata运行速度最佳的条件是设置使用核心数目等于CPU物理核心数目(举例:4核8线程CPU,设置set processor 4速度最快)。


截止到上一步,本以为问题得到了解决。但是我还好奇利用多核进行并行运算能比单核运算快多少。于是set processor为1和2,但是测试结果有点出乎意料,在使用单核和双核的情况下,运行上述程序均用时378秒。换句话说,单核运行速度超过了4核。单核和双核运行速度持平,这个结果是否说明我执行的命令不支持并行处理呢?我测试时的主要命令是:
statsby _b, by(Group) clear: reg y x1 x2 x3 x4 x5
如果statsby这个命令不支持多核并行运算,那么单核运行速度和双核运行速度持平是可以理解的,但问题是为什么速度要快于4核速度呢?另外,对于这个问题不知道MAC和Windows系统下运行是否有差异。由于我手头上只有MAC的机器是4核8线程,Windows的机器没那么多核心,因此我没有在Windows系统下做测试。对这个问题很好奇,不知道哪位坛友有兴趣做类似的测试。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-8-27 19:47:11
多谢,我早就绝对继续用stata12。

实际上stata官网已经给出答案,13并没有优化速度。不过加的那几个模型还是挺管用的,手动不会搞只会用鼠标点的应该买。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-8-27 19:53:01
你电脑是4-core的,跟这个有关系吗
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-8-27 22:54:44
tuguy83 发表于 2014-8-27 19:47
多谢,我早就绝对继续用stata12。

实际上stata官网已经给出答案,13并没有优化速度。不过加的那几个模型 ...
没优化速度没问题,但是不至于减速吧?400秒到500秒以上,这可是慢了许多啊。
用Stata 13最主要看中的是长字符。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-8-27 22:56:57
liangsky 发表于 2014-8-27 19:53
你电脑是4-core的,跟这个有关系吗
我现在觉得可能有关系。但是最直接的比较应该拿两个软件的4-core版本比。但是我没有Stata 13 MP 4-core的lic,所以没法比啊。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-8-28 08:40:26
liangsky 发表于 2014-8-27 19:53
你电脑是4-core的,跟这个有关系吗
后来发现是核心数目使用问题,利用set processors命令,使用物理真核数目时运行速度最快,运用虚拟线程就会减速。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群