SPEC CPU是一个应用广泛的大型CPU性能测试项目,SPEC是标准性能评估公司(Standard Performance Evaluation Corporation)的简称,这是一个由计算机厂商、系统集成商、大学、研究机构、咨询等多家公司组成的非营利性组织,这个组织的目标是建立、维护一套用于评估计算机系统的标准。除了SPEC CPU之外,SPECviewperf系列产品也是常见的测试工作站/图形卡部件所用到的测试软件,类似的项目还有如SPECjbb 2015(Java应用性能)、SPEC SFS2015(文件服务器性能)等。
SPEC CPU是SPEC组织推出的一套CPU子系统评估软件,目前最新版本是SPEC CPU2017,于2017年6月20日发布,但此次测试来不及使用这个测试,我们使用的仍然是SPEC CPU2006,它包括CINT2006和CFP2006两个子项目,分别用于测量整数性能和浮点性能。SPEC CPU的测试组件均来源于真实的应用程序,并经过修改以降低对IO子系统的影响,在测试中,测试系统的处理器、内存子系统和使用到的编译器(SPEC CPU测试提供的是源代码,并且允许测试用户按照规则进行一定的编译优化)都会影响最终的测试性能,而I/O(磁盘)、网络、操作系统和图形子系统对于SPEC CPU2006的影响非常之小。
SPEC CPU2006包括了12项整数运算和17项浮点运算,除此之外,还有两个随机数产生测试程序998.sperand(整数)和999.specrand(浮点),它们虽然也包含在套件中并得到运行,但是它们并不进行计时以获得得分。这两个测试主要是用来验证一些其他组件中会用到的PRNG随机数生成功能的正确性。各个测试组件基本上由C和Fortran语言编写,有7个测试项目使用了C++语言,而Fortran语言均用来编写浮点部分。SPEC CPU2006以一台Sun Ultra Enterpirse 2工作站作为基准参考系统,系统基于一颗296MHz的UltraSPARC II处理器,测试的得分就表明这个项目中测试系统相对基准系统性能的比值。
SPEC CPU2006测试子项目 by 盘骏/Lucifer
测试同样使用了接近最新的Intel C&Fortran Compiler编译器17.0 update 3,同时代码使用MicroQuill的SmartHeap 10.2进行编译以更好地管理堆(此堆非Stack堆栈的那个堆)。要生成AVX-512代码,我们在配置文件里面使用了-xcore-avx512开关以生成最适应skylake-sp的代码:
注意:对于AVX-512而言,它和功耗、Turbo Boost具有一个复杂的影响关系。必须得说,这种复杂性对用户来说整体上是更好的,但它也让理解系统的运行状态变得更加麻烦。如下图所示:
Skylake-SP上,Turbo Boost睿频技术具有6个峰值频率,按照负载的不同而不同
实际上具有的频率还更多!原有的Turbo Boost睿频技术让系统在不同数量核心负载时具有不同的频率,按照non-AVX/AVX2/AVX-51的不同,这个频率表的规模要乘以三倍,这个表笔者目前尚未能完全测试整理完善。总的来说,这个状况让系统在运行传统代码的时候可以具有尽量高的频率。在运行AVX-512代码的时候,不管是基频,还是Turbo频率,全线都会有所降低,这有时会带来一些负面影响。
AVX-512代码编译和SPEC CPU2006测试得到了Intel上海实验室的大力支持,特此鸣谢。
好文章,需要你的鼓励
智谱AI发布GLM-4大模型;工信部发布《国家人工智能产业综合标准化体系建设指南》(征求意见稿);高通骁龙数字底盘、联想AI PC亮相CES 2024
国家数据局等17部门联合印发《“数据要素x”三年行动计划(2024—2026年)》;小米举办汽车技术发布会。