计算化学公社

标题: 多线程似乎在动力学模拟中没什么用? [打印本页]

作者
Author:
ChaosChiao    时间: 2015-1-6 16:23
标题: 多线程似乎在动力学模拟中没什么用?
新购的E5-2680V2,20核心40线程,使用AMBER进行模拟,np=16速度明显快于np=32,这样的话多线程还有什么用?还是说有什么方法能解决这个问题?请各位指点
作者
Author:
xiaowu759    时间: 2015-1-6 17:29
不能这么说,这也取决于体系的大小,体系太小需要的线程要少一些,多了反而速度慢了
作者
Author:
sobereva    时间: 2015-1-6 17:33
那是超线程。和多线程不是一个概念。

有n个物理核心2n个逻辑核心的时候,可能n线程跑更快也可能2n线程的时候跑更快,取决于程序。诸如gromacs,16核心32线程的机子上,用32线程跑比16线程跑往往要快(取决于体系、参数)。
超线程多出来的一倍逻辑核心是“虚的”,至多能让多线程任务总性能提升20%,但往往由于资源竞争、软件本身并行效率的原因当调用2n核心的时候速度可能比只用n核心的时候更慢。

你有20物理核心,就应当测试20线程和40线程的速度,哪种情况更快就用哪种。但即便40线程更快,也不会比20线程速度提升明显。所以,如果懒得测试的话,简单来说,有多少物理核心,就用多少线程跑,余出来的那点处理能力就负责后台任务
作者
Author:
lao7    时间: 2015-1-6 21:06
不知道gaussian和orca在超线程处理器的支持方面怎么样?
作者
Author:
sobereva    时间: 2015-1-6 21:30
lao7 发表于 2015-1-6 21:06
不知道gaussian和orca在超线程处理器的支持方面怎么样?

跑量化程序的时候,有超线程的CPU就当成没有超线程来设定调用的内核数就行了。
这些程序不会专门为超线程而做任何特殊的优化和考虑。
作者
Author:
lao7    时间: 2015-1-7 08:00
sobereva 发表于 2015-1-6 21:30
跑量化程序的时候,有超线程的CPU就当成没有超线程来设定调用的内核数就行了。
这些程序不会专门为超线 ...

那计算机会自己处理的时候调用超线程吗?比如,虽然软件不支持超线程,但计算机计算时,为了提高效率,cpu内置程序实际会超线程处理。也就是说,具有超线程的机器还是会比不具超线程的快些,在调用相同核心下。
作者
Author:
ChaosChiao    时间: 2015-1-7 08:44
sobereva 发表于 2015-1-6 17:33
那是超线程。和多线程不是一个概念。

有n个物理核心2n个逻辑核心的时候,可能n线程跑更快也可能2n线程的 ...

明白了,谢谢sob!
作者
Author:
sobereva    时间: 2015-1-7 12:50
lao7 发表于 2015-1-7 08:00
那计算机会自己处理的时候调用超线程吗?比如,虽然软件不支持超线程,但计算机计算时,为了提高效率,cp ...

从程序角度来说,CPU有没有超线程是一样的。超线程纯粹是Intel为了加快多个程序或多线程程序的运行速度而想出来的进一步压榨CPU闲余处理能力的方法,软件开发者这边该怎么写程序还怎么写程序,不用为超线程技术做什么特殊考虑(除非程序明确地说就是为了Intel的CPU专门进行了优化)。所以不说“软件支不支持超线程”。

理想情况下,可以认为有超线程技术的CPU拥有没有超线程的同规格CPU约115%的处理能力。如果有n个物理核心,那么你调用n个核计算,就正好把100%那部分用了,剩下来的15%,可以干别的。比如你一边做计算,可以一边查毒、玩小型的游戏、压缩文件之类,不会觉得卡,也不会明显拖慢计算速度。但如果不开超线程,那么此时计算任务就把CPU全部处理能力占满了,你再干别的就会觉得卡,后台任务执行也会被拖慢,或者说,你再干其它需要消耗一定CPU资源的事情的时候,计算任务速度会下降比较明显。

如果有超线程,而且你分配了2n个核计算,那么这115%的运算能力就会被完全占满,看似比没有超线程时更快,但由于资源竞争和并行效率问题,也经常可能比只分配n个核计算更慢。
作者
Author:
luwis    时间: 2015-7-22 00:03
看来一切主要靠物理核。

作者
Author:
shi891018    时间: 2017-2-7 13:25
原来如此,谢谢分享~!




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3