银行 社区服务 每日签到 会员排行 网站地图
  • 6797阅读
  • 34回复

关于超线程在中国象棋软件上的应用的探讨

楼层直达
级别: 少尉
[棋中红钻2级]发帖数量≥100篇 [未点亮棋中黄钻]金币数量<100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
164
金币
58
威望
1
贡献值
0
乐币
0
主题
7
— 本帖被 棋中论坛 从 棋软讨论 移动到本区(2012-11-24) —

最近坛子里掀起了一阵对超线程及对棋软的作用的讨论,其中出现了一些对超线程认识上的廖误和偏差。特开此帖谈谈本人的看法,欢迎不同意见参加讨论。

一. 什么是超线程

    CPU生产商为了提高CPU的性能,通常做法是提高CPU的时钟频率和增加缓存容量。不过目前CPU的频率越来越快,如果再通过提升CPU频率和增加缓存的方法来提高性能,往往会受到制造工艺上的限制以及成本过高的制约。
基于在实际应用中,很多因素令CPU的执行单元不能被充分使用,如果CPU不能正常读取数据(总线/内存的瓶颈),其执行单元利用率会明显下降, 因而造成了CPU性能不能得到全部的发挥。

    因此,Intel则采用了另一个思路去提高CPU的性能,让CPU可以同时执行多重线程,就能够让CPU发挥更大效率,即所谓“超线程(Hyper-Threading,简称“HT”)”技术。超线程技术就是利用特殊的硬件指令,把一个真正的CPU物理核心分成两个,一个是真正的核心,英文叫physical core(物理核心),另外一个是从属核心,英文叫Logical core(逻辑核心)。逻辑内核只是被模拟成物理芯片,让单个处理器核心都能使用线程级并行计算,也就是说超线程技术是在一颗CPU同时执行多个程序而共同分享一颗CPU内的资源,理论上要像两颗CPU一样在同一时间执行两个线程,这样就减少了CPU的闲置时间,提高的CPU的运行效率。

    以i7 2600K为例,就是把四个逻辑内核模拟成四个物理芯片。当在BIOS里打开超线程设置后(BIOS里的Hyper-threading设置成Enable),在操作系统中看到的CPU数量是实际CPU物理核心数量的两倍,就是原本一个物理核心的可以看到两个,两个的可以看到四个, 四个的可以看到八个......。方法是打开Windows任务管理器(同时按下Ctrl、 Alt、 Del键), 然后在资源监视器的窗口内就可看到原本四个物理内核的2600K变成了八个所谓的CPU: CPU0, 1, 2, 3, 4, 5, 6, 7。

    虽然采用超线程技术能同时执行N个线程,但它并不象N个真正的CPU那样,每个CPU都具有独立的资源。当两个线程都同时需要某一个资源时,其中一个要暂时停止,并让出资源,直到这些资源闲置后才能继续。因此超线程的性能并不等于两颗CPU物理核心的性能。

    需要注意的是,含有超线程技术的CPU需要芯片组、操作系统及应用程序软件支持,才能发挥该项技术的优势。要想使用超线程或将超线程的威力发挥出来,需要五大基本的条件:

1.  CPU要支持HT。
2. 主板芯片要支持HT。
3. 双通道内存。
4. 操作系统的支持。
5. 应用程序的支持。

    据我所知,目前真正支持HT的应用程序可以说是凤毛麟角。已经支持HT的应用程序,其实是无心插柳之作:例如Adobe的Photoshop与微软的Windows Media Decoder在推出之前,都为了查错的原因,而在上市前加入了多线程功能。

二. 超线程可以在中国象棋软件的运行中发挥作用吗?

     这个问题首先要对照上述的关于使用超线程的五大条件,
其中最关键的一点是我们现在使用的中国象棋软件是否支持超线程。很多人有个误解:说棋软的参数设定上有个参数叫THREAD(翻译成中文就是线程), 他就认为既然是线程,
如果棋软信息中显示最大支持线程是8, 就可以设成8线程,尽管他的CPU只有四个物理核心。其实这是个天大的误解,除非你的象棋软件是支持超线程的,否则棋软里说的THREAD是指真正的CPU物理核心。能进行计算的是真正的CPU物理核心,而逻辑核心只是起到减少CPU物理核心空闲的作用。假设一个游戏可以用4核,我们很清楚,这时候最有效的办法是把任务分配到4个真实的物理核心上,如果你明明只有四个CPU物理核心,却在棋软里设置成八线程,不支持超线程的棋软会把八线程需要处理的资料并行交给你的四个物理核心及四个逻辑核心,因为它可分不清哪4个是真实的物理核心,哪4个是HT技术带来的逻辑核心,这时候问题就来了,可是在系统眼里,那8个核心是完全等同的,没有高低贵贱之分,所以很大的可能性是系统把任务分配到了所有物理核心及逻辑核心上了。可悲的事情就这样发生了,逻辑核心与物理核心争抢资源,虽然采用超线程技术能同时执行两个线程,但它并不象两个真正的CPU那样,每个CPU都具有独立的资源。当两个线程都同时需要某一个资源时,其中一个要暂时停止,并让出资源,直到这些资源闲置后才能继续。(这时候物理核心的处理性能大受影响,逻辑核心所发挥的性能还不如物理核心所损失的,所谓得不偿失),这样等于脱了裤子放屁,效率反而低于关掉超线程只用四个物理核心计算的情况。

    这就是为什么当你打开BIOS里超线程而运行棋软的时候,你的CPU占用率不能达到100%, 这说明CPU物理核心没有被充分利用,有一部分工作分配给了逻辑核心,但逻辑核心的工作还是要靠物理核心的计算来完成的,因此造成了真正的CPU物理核心的空闲时间加大。此外,在BIOS里打开超线程支持后,如果处理器以双处理器模式工作,那么处理器内部缓存就会被划分成几区域,互相共享内部资源。对于不支持多处理器工作的软件在运行时效率反而较低,出错的概率也要比单处理器高很多。

    现在再说说当下的棋软有那些是支持超线程的,据我所知,没有一个象棋软件的作者或是代理商宣称他们的软件是支持超线程的,如果有的话那我恭喜你,你可以利用超线程去提高软件的效率,比如你是4核心八线程的CPU,就可以使用支持八线程的软件而把THREAD设置成8。 本人使用的是象棋旋风四,代理商的指引是让你设置成与你物理核心数量相等的线程数,换言之就是旋风四不支持超线程技术。因此我认为如果你使用的是不支持超线程的棋软,就没有必要打开超线程,因为打开超线程后处理器内部缓存就会被划分成多于单纯使用物理核心时所划分的区域,并且互相共享内部资源,结果造成单个的子系统性能下降。

结论:

除非你使用的是支持超线程的软件,否则不要期望HT能为你的机器性能带来什么改变。打开超线程反而降低了处理器的性能,而且打开超线程后要使用CPU内部更多的晶体管,从而产生更多的热量,如果你是一个超频玩家,打开超线程会使得CPU温度比关闭超线程高约9度,自然对超频产生不利的影响。
本帖最近评分记录: 2 条评分 金币 +10 威望 +1
人生若只如初见,何事秋风悲画扇。
[棋中红钻3级]发帖数量≥500篇 [棋中黄钻2级]金币数量≥1000枚 [未点亮棋中蓝钻]乐币数量<10枚 [棋中粉钻1级]贡献值数量≥1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
525
金币
1948
威望
1
贡献值
1
乐币
8
主题
86

只看该作者 一楼  发表于: 2012-11-24
本帖的理论依据比较专业,可读性强,我个人认为绝对可取,试想如果I7-980可以使用12个线程去运行引擎,还有谁会花大价钱去装2U机呢,那华山上的“北斗”们岂不都成了傻子??3930再使用超线程运行软件,也不如一台至强5650两U机K值高而稳定,据我本人所知,好像只有天机一款引擎支持超线程技术,可惜破解版本已经很难寻觅了。
皇纲归有道,
家国寄楚遥。
玫韵一生吟,
瑰词丝绢妙。
级别: 四级士官
[棋中红钻1级]发帖数量≥10篇 [棋中黄钻1级]金币数量≥100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
66
金币
151
威望
1
贡献值
0
乐币
5
主题
6
只看该作者 二楼  发表于: 2012-11-24
        的确,目前主流软件的代理商,都表明不支持超线程,建议购买与CPU真实核心数相等的软件。但我要问:I7 2600K,在使用名手348(最大支持6线程)时,到底该怎么设置呢?是关闭超线程,设置4;还是开启超线程,设置6或者5?真心希望有人在这方面,做更多的对弈测试!
级别: 中尉
[棋中红钻3级]发帖数量≥500篇 [棋中黄钻3级]金币数量≥2000枚 [棋中蓝钻1级]乐币数量≥10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
581
金币
2238
威望
0
贡献值
0
乐币
16
主题
1
只看该作者 三楼  发表于: 2012-11-24
Re:关于超线程在中国象棋软件上的应用的 ..
楼主这篇论文最有说服力,具有很好的参考价值文章!对棋软使用者绝对有帮助,值得参考学习,大力支持一下!
级别: 四级士官
[棋中红钻2级]发帖数量≥100篇 [未点亮棋中黄钻]金币数量<100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
150
金币
23
威望
0
贡献值
0
乐币
0
主题
0
只看该作者 4楼 发表于: 2012-11-24
感谢你的优秀文章,棋中有你更精彩。
级别: 少校
[棋中红钻5级]发帖数量≥2000篇 [棋中黄钻3级]金币数量≥2000枚 [棋中蓝钻3级]乐币数量≥100枚 [棋中粉钻3级]贡献值数量≥10点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
2569
金币
3442
威望
2
贡献值
10
乐币
427
主题
119

只看该作者 5楼 发表于: 2012-11-24
支持原创 谢谢分享 棋中有你更精彩
级别: 四级士官
[棋中红钻2级]发帖数量≥100篇 [未点亮棋中黄钻]金币数量<100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
187
金币
61
威望
0
贡献值
0
乐币
2
主题
1
只看该作者 6楼 发表于: 2012-11-24
谢谢楼主,能不能出点实例教教我们任何设置线程。
级别: 论坛检查
[棋中红钻5级]发帖数量≥2000篇 [棋中黄钻4级]金币数量≥5000枚 [棋中蓝钻1级]乐币数量≥10枚 [棋中粉钻2级]贡献值数量≥5点 [棋中彩钻2级]精华帖数量≥2篇
发帖
3280
金币
6102
威望
6
贡献值
7
乐币
48
主题
58

只看该作者 7楼 发表于: 2012-11-24
楼主的观点很有说服力,但我仍有不解之处,依我的设备为例,我是四核八线程,原来是超频的,一直开着超线程,QQ打到九级,华山打了一个无极和几个天罡,按照你的逻辑"打开超线程反而降低了处理器的性能"那么我关了超线程成绩还能堤高吗?cpu温度能降低吗?我怎么感觉八线程处理器很强,遇北斗的多核强机和棋占多数.一般的双核根本就羸不了。
级别: 三级士官
[棋中红钻1级]发帖数量≥10篇 [未点亮棋中黄钻]金币数量<100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
71
金币
17
威望
0
贡献值
0
乐币
0
主题
0
只看该作者 8楼 发表于: 2012-11-24
谢谢楼主,能不能出点实例教教我们任何设置线程。
yne
级别: 子爵
[棋中红钻5级]发帖数量≥2000篇 [棋中黄钻2级]金币数量≥1000枚 [棋中蓝钻3级]乐币数量≥100枚 [棋中粉钻1级]贡献值数量≥1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
2257
金币
1825
威望
2
贡献值
1
乐币
297
主题
0

只看该作者 9楼 发表于: 2012-11-24
这些个理论问题,好多人搞不明白,一句话,尚未定论。
而最有说明力,最可行,最简单的方法,就是在自已的电脑上试验。
与其在理论上,推测来推测去,不如大家都来说说自已的使用效果。
一个人的经验不能算可靠,人多了,验证的效果就可靠多了。
从我个人的使用效果来看,K值有提高,上层快了一些。所以,我愿意开着超线程。

另外,现在的超线程技术,据说,是优先使用物理核心的,而不是分不清楚。

有一个关于超线程的使用问题应该说明一下,如果是为了尽可能的提高棋力,线程数是要设满的,就是让CPU100%工作,当然,这要引擎的支持才行。比如:四核八线程,用名手6U版,设6线程,是不如直接关了超线程设4线程的。如果是双核四线程,要么设4线程,要么关了超线程设成2.
超线程带来的性能提升比较小,比直接的物理核心的性能,还是有巨大差距的。
级别: 四级士官
[棋中红钻2级]发帖数量≥100篇 [棋中黄钻1级]金币数量≥100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
133
金币
238
威望
0
贡献值
0
乐币
1
主题
1
只看该作者 10楼 发表于: 2012-11-24
楼主对超线程的论述非常正确,但对棋软不适合使用超线程的论点过于武断,大家都知道有一款测试CPU并行运算速度的软件Fritz Chess Benchmark,它源自于国际象棋软件,它的测试结果表明使用超线程运算速度可以提高约30%。其实使用超线程的效率取决于软件对资源的争夺上,如果对资源争夺的不厉害,超线程的效率就高,反之效率降低,一般而言效率总是有的。不过的确要考虑楼主说的另外一个问题,如果超线程效率不高但CPU温度很高影响了超频就得不偿失了,因为超频可以弥补不使用超线程造成的运算效率的降低。
级别: 中尉
[棋中红钻2级]发帖数量≥100篇 [棋中黄钻1级]金币数量≥100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
421
金币
855
威望
0
贡献值
0
乐币
0
主题
14
只看该作者 11楼 发表于: 2012-11-24
感谢分享心得 棋中有你更精彩!
级别: 少尉
[棋中红钻2级]发帖数量≥100篇 [未点亮棋中黄钻]金币数量<100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
164
金币
58
威望
1
贡献值
0
乐币
0
主题
7
只看该作者 12楼 发表于: 2012-11-24
回 10楼(三言两语) 的帖子
Fritz Chess Benchmark确实是支持超线程的,但它是源自于国际象棋软件。不能从这点就断定中国象棋软件也是支持超线程的,支不支持超线程取决于软件程序员的程序设计。验证超线程在中国象棋软件内的作用并不难,你可以在同一台电脑上运行同一款棋软,如果你的CPU是4核心八线程,那你找一款支持最大八线程的软件,首先关闭超线程,在棋软上设定为THREAD = 4,在棋盘上任何子不动的情况下按分析模式(冰河五四有这个模式),此时棋软开始运算,你可记下最高的K值,以及到达某一运算层次需要的时间,比如达到26层需要多少秒。(请注意:测试棋软的效率不能只看K值,更重要的是看上层的速度,也就是在某一特定的时间内达到多少层。)当做好记录后,你打开超线程,把棋软设置成THREAD = 8,然后再记下最高K值以及到达同一层数的时间。这样就可以做一比较,如果你把棋软设置成THREAD = 8,打开超线程的情况下到达26层的时间短于THREAD = 4,关闭超线程的情况,那你的软件就是支持超线程的,绝对可以这样使用。反之,就证明你的软件不支持超线程,将THREAD设成8反而降低了棋软的效率。除此以外,还要注意的是THREAD =8的情况下软件的计算是否会出错,比如跳水的机率是否高于关闭超线程的情况,运行时是否有异常情况等。
级别: 三级士官
[棋中红钻1级]发帖数量≥10篇 [未点亮棋中黄钻]金币数量<100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
58
金币
-5
威望
0
贡献值
0
乐币
0
主题
0
只看该作者 13楼 发表于: 2012-11-24
据我本人所知,好像只有天机一款引擎支持超线程技术,
级别: 少尉
[棋中红钻2级]发帖数量≥100篇 [未点亮棋中黄钻]金币数量<100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
218
金币
0
威望
0
贡献值
0
乐币
0
主题
0
只看该作者 14楼 发表于: 2012-11-24
感谢您的分享。您的国际象棋更有趣
天行健,君子以自强不息。地势坤,君子以厚德载物。
级别: 中尉
[棋中红钻2级]发帖数量≥100篇 [棋中黄钻3级]金币数量≥2000枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
479
金币
2033
威望
0
贡献值
0
乐币
4
主题
9
只看该作者 15楼 发表于: 2012-11-24
楼主对超线程的论述非常正确,但对棋软不适合使用超线程的论点过于武断,大家都知道有一款测试CPU并行运算速度的软件Fritz Chess Benchmark,它源自于国际象棋软件,它的测试结果表明使用超线程运算速度可以提高约30%。其实使用超线程的效率取决于软件对资源的争夺上,如果对资源争夺的不厉害,超线程的效率就高,反之效率降低,一般而言效率总是有的。不过的确要考虑楼主说的另外一个问题,如果超线程效率不高但CPU温度很高影响了超频就得不偿失了,因为超频可以弥补不使用超线程造成的运算效率的降低。

赞同!现在计算机内存很大,关于争抢资源,本人不大认同!用小虫0.2a(支持1-4u)的,开启超线程后,基本可以顶和名手3.48(名手配置不变的情况下)!

小驴过河的寓言,也告诉我们只有自己试过,才知道河水的深浅!

不要纸上谈兵,实践是检验真理的唯一标准!
级别: 中尉
[棋中红钻2级]发帖数量≥100篇 [棋中黄钻1级]金币数量≥100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
293
金币
746
威望
3
贡献值
0
乐币
2
主题
21
只看该作者 16楼 发表于: 2012-11-24
棋软引擎本身也是使用线程的,因此开启超线程自然无可非议!但问题并非这样简单,因为超线程只是棋软的一个很重要因素,不能单纯的从超线程这方面单纯的看,还必须要看频率;

超线程比原线程提升幅度不多这个观点我同意(比方说2600K使用8线程的引擎、开启超线程,如果设为4与设为8相较,设为8的效率比起设为4的效率高不了多少,但肯定要高一些毋庸置疑。而八核心8线程的处理器运行8线程的引擎效率肯定高于四核心8线程),但不能因此而夸大原线程的作用。

总体来看,还必须考虑各种其它因素,尤其是频率!我以前发过“十六核心32线程运行棋软效果测试”的帖子,但由于频率只有2.3,提升幅度并不大,运行6.2仅有6000多K。因此必须考虑频率这个重要因素;

除了线程和频率外,还应该考虑三级缓存、制程、平台、引擎等各种因素,最后才能得出相对可靠的结论。
级别: 四级士官
[棋中红钻2级]发帖数量≥100篇 [棋中黄钻1级]金币数量≥100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
133
金币
238
威望
0
贡献值
0
乐币
1
主题
1
只看该作者 17楼 发表于: 2012-11-24
回 12楼(棋中西风) 的帖子
看看9楼朋友的回复:从我个人的使用效果来看,K值有提高,上层快了一些。所以,我愿意开着超线程。这足以说明棋软是支持超线程的。
级别: 中尉
[棋中红钻3级]发帖数量≥500篇 [棋中黄钻1级]金币数量≥100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
515
金币
919
威望
0
贡献值
0
乐币
2
主题
6
只看该作者 18楼 发表于: 2012-11-24
回 12楼(棋中西风) 的帖子
经常会出现思考不一致的情况的。。。
级别: 少尉
[棋中红钻2级]发帖数量≥100篇 [未点亮棋中黄钻]金币数量<100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
164
金币
58
威望
1
贡献值
0
乐币
0
主题
7
只看该作者 19楼 发表于: 2012-11-24
回 7楼(棋中居士) 的帖子
其实赢棋不只是机器强就能赢,还有软件,开局库和人机操作的因素。所以居士赢棋不能全归功于
打开了超线程。请照我帖子里的方法测试一下,看看哪种方法你的软件上层快,这比K值的参考价值更大。有的软件K值很高,但棋力却比K值低于它的软件差。比如阿童木64位2U,其K值比旋风四4U 64位版本还高,但棋力的差距还是挺大的。所谓K值是说一秒钟内软件算了多少个走法,如果在计算走法的时候是省略了很多分支或计算,算出的走法自然较多,但关键是质量不是数量。请在BIOS里先关掉超线程,设置成THREAD = 4 ,看看哪种的效率更好一点。像2600K这样快的CPU,也许
打开和关掉超线程从感官上觉得分别不大,但还是让数值来说话,玩棋软毕竟机器性能强一点比弱一点好。能做到的事情又何乐而不为呢?
快速回复

限56 字节
请不要在回贴只采用字母:“ PP、asdfhjkl、HAO、OK、ddddddd ......”。  请不要在回贴过于简单的内容:“不错、顶、支持、厉害、呵呵、靠、晕........”
 
验证问题: 本站网址是?不带http://
上一个 下一个