https://baijiahao.baidu.com/s?id=1734998483605483848
下图是兆芯网官上的公开测试成绩,测试对象是3.0GHz的KX-U6880A。
有几个问题:
市面上从来没有见到过3.0GHz的KX-U6880A,无论京东、淘宝还是闲鱼,都只能找到2.7GHz的KX-U6780A。包括各个厂商的产品宣传中,也从未见过3.0GHz的兆芯CPU。
兆芯官方虽然公布了测试成绩,但没有公布详细的测试环境和测试工具的编译参数。SPEC CPU 2006和STREAM都需要测试者自行编译,没有编译参数就一定程度上阻止了用户复现官方的测试成绩。
SPEC CPU 2006的测试成绩,可以换算到2.7GHz,虽然与实际测试结果会有误差,但影响不大。因此可以使用2.7GHz的KX-U6780A来尝试复现换算之后的成绩,可是我始终无法复现。
下表中是SPEC CPU 2006 int测试的官方成绩和我实测成绩的对照。SPEC CPU的测试分为“单任务”和“多任务”两种方式,还分为 base 和 peak 两种模式。peak是“峰值”,成绩总是比base要好一些,因此表中的实测成绩我是填写的peak成绩。
本人实测也是用的ICC编译器,并且版本更新。不但开启了自动并行,还使用了Jemalloc库,但测试成绩和官方的差距实在太大。可是,我在完全相同的环境测试Intel于2007年发布的笔记本CPU T7500得到的成绩,比SPEC官网上T7700的成绩还好,这就说明测试环境和编译参数都没有问题,真是很难理解。
上图汇总了我测试过的几款CPU,有用GCC编译器的,也有用ICC编译器的。int base测试我一般不用“自动并行化”,因为龙芯、飞腾公开的int base测试成绩也都没有开启“自动并行化”。int base我也一般不使用第三方库优化,同样是因为龙芯、飞腾的int base成绩不使用第三方库。
下面是飞腾公开的FT-2000+/64的测试成绩,测试的是一款64核的CPU。在上面的测试汇总中,有我实测飞腾D2000的成绩,与下表中飞腾FT-2000+/64的成绩完全对得上。飞腾D2000使用的是与它相同的核心,但核心数量缩减到了8个,CPU的主频就要高一些,因此我实测的SPECint成绩就要比下表中的高一些。
还有龙芯官方公布的3A4000和3A5000的测试成绩,我也成功复现。实测成绩甚至比官方公布的成绩更高一些。
3A4000(2.0GHz)的官方SPECint是19.1,我测试的是1.8GHz的版本,成绩是17.5,换算到2.0GHz就是19.4,比官方成绩高一些。
3A5000(2.5Ghz)的官方SPECint是26+,我实测成绩是26.6。
我的所有测试都没有得到任何的官方支持,都是自己配置的测试环境和编译参数,只是对飞腾CPU的测试得到过网友的帮助。无论是龙芯还是飞腾,又或者是Intel,它们公开的CPU测试成绩,我都能成功复现。但是对兆芯我无能为力。
下面放上我使用ICC编译器,以及使用了jemalloc库之后,测试得到的KX-U6780A的SPEC CPU int 多任务的测试报告:
即使与把官方成绩换到2.7GHz之后的153相比,base 101和peak 109也差得太远了
我的测试到底哪儿有问题呢?