我来到论坛后,如果问坛友们“对于棋软引擎来说,运行棋软用到的是核心数还是线程数”之类的问题,十有八九都是核心数!甚至很多坛友说线程数(超线程)与棋软引擎毫不相干、应该关闭、具有副作用……那么到底是怎么一回事呢?本帖试图说明:
我的看法与论坛大部分坛友相反,认为:或许核心数对于棋软来说基本上没有什么作用,起作用的是线程数!
由于不支持超线程的处理器核心数与线程数相同,这样便把核心数的作用夸大了。其实这个问题棋软引擎本身“自己”已经说得很清楚了,却对其熟视无睹,感到不解。依我猜测这可能是一直以来误认为用到的是核心数习惯了; 不管是棋软引擎也好、还是各种测试软件也罢,从来都没有“说过”运行用到的是核心数!那么棋软引擎本身是怎么说的呢:
测试类软件说的是:在逻辑处理器中找到,所谓的逻辑处理器便是线程;怎么它不说在“物理处理器(核心)中找到”;
在引擎本身中说的则是:比方说佳佳引擎,打开后便有一段字符“当前使用的线程数是……”,为什么引擎不说“当前使用的核心数是……”;引擎最大支持也是提到的Threads,这个英文翻译便是线程;阿童木2线程版打开后有个广告,“限制最多使用2线程”,这是说得很准确的。如4线程的电脑运行它CPU使用率只有50%;
棋软配置文件中也是提到“Threads = ”,它怎么不说“Cores(核心数)= ”;
这一切充分说明棋类引擎(不论中象也好国象也罢)都是用到的线程数。所有相关问题的探讨应该以此为出发点,否则“一开始就是错的”。
至于“根据处理器的核心数与线程数应该怎么高效配置棋软”的问题、不能与“引擎实际用到的是核心数还是线程数”混为一谈,这一点特别说明。
那么线程数对于棋类引擎来说作用显而易见这个问题基本说清,那么坛友们普遍关心的核心数对于棋软引擎的作用又是怎么样的呢:说它毫不相干难免有些武断。CPU的核心数可以=线程数,但不能超过线程数。如果关闭超线程仍然可以用核心数(线程数)运行。核心数可以视为运行棋软时线程数的附庸。也就是说,对于一些引擎或者超频电脑来说,可以关闭一半的线程获取核心数的效率。这个问题具体说来例子很多,这里举一个最为典型的例子,相信这个例子最能说明问题:
CPU为十六核心32线程,运行6.2(最高支持16线程)。如果直接满载运行,CPU使用率只有50%。这个时候如果关闭超线程,以“物理线程”来运行,相当于“棋软(线程)与处理器(核心)两者的有机结合”,这样或许对于运行棋软引擎最有效率。核心数的效用便可以充分发挥!因此,核心数对于处理器是那么的重要、线程数对于棋软又是这么的重要!因此,如果能这样有机结合,相信作用是最大的!当然,一般不作这种考虑,单单为线程考虑足以;因为似乎没有必要购置多出一半的价钱多出1半的线程数的配置。如果决定运行16线程的引擎,一般不会考虑32线程的处理器,16线程完全足够!