SPEC CPU测试是我们沿用了多年的一个大型CPU性能测试项目。SPEC是标准性能评估公司(Standard Performance Evaluation Corporation)的简称。SPEC是由计算机厂商、系统集成商、大学、研究机构、咨询等多家公司组成的非营利性组织,这个组织的目标是建立、维护一套用于评估计算机系统的标准。除了SPEC CPU之外,我们也使用SPECviewperf等产品来测试工作站/图形卡等领域的性能。
SPEC CPU 2006是SPEC组织推出的CPU子系统评估软件最新版,在早些年,我们使用的是其上一个版本SPEC CPU 2000。和SPEC CPU 2000一样,SPEC CPU 2006包括了CINT2006和CFP2006两个子项目,前者用于测量和对比整数性能,而后者则用于测量和对比浮点性能,SPEC CPU 2006中对SPEC CPU 2000中的一些测试进行了升级,并抛弃/加入了一些测试,因此两个版本测试得分并没有可比较性。
SPEC CPU测试中,测试系统的处理器、内存子系统和使用到的编译器(SPEC CPU提供的是源代码,并且允许测试用户进行一定的编译优化)都会影响最终的测试性能,而I/O(磁盘)、网络、操作系统和图形子系统对于SPEC CPU2006的影响非常的小。
An ounce of honest data is worth a pound of marketing hype(一盎司诚实的数据值得一磅的市场宣传)是SPEC组织成立的座右铭,为了保持数据的公平、可信度以及有效,SPEC CPU测试使用了现实世界的应用程序,而不是用循环的算术操作来进行基准测试。SPEC CPU 2006包括了12项整数运算和17项浮点运算,除此之外,还有两个随机数产生测试程序998.sperand(整数)和999.specrand(浮点),它们虽然也包含在套件中并得到运行,但是它们并不进行计时以获得得分。这两个测试主要是用来验证一些其他组件中会用到的PRNG随机数生成功能的正确性。各个测试组件基本上由C和Fortran语言编写,有7个测试项目使用了C++语言,而Fortran语言均用来编写浮点部分。
SPEC CPU 2006 v1.0.1测试项目 | |||
---|---|---|---|
子项目 | 语言 | 原型/组件 | 说明 |
整数测试 | |||
400.perlbench PERL编程语言 | ANSI C | Perl v5.8.7 SpamAssassin v2.61 Digest-MD5 v2.33 HTML-Parser v3.35 MHonArc v2.6. 8 IO-stringy v1.205 MailTools v1.60 TimeDate v1.16 | 负载由三个script组成: 主负载是垃圾邮件检测软件SpamAssassin 一个是email到HTML的转换器MHonArc 最后一个是specdiff |
401.bzip2 压缩 | ANSI C | bzip2 v1.0.3 | 负载包括六个部分: 两个小的JPEG图片 一个程序 一个tar包起的几个源程序文件 一个HTML文件 混合文件,包括压缩起来的高可压缩文件及不怎么可压缩的文件 测试分别使用了三个不同的压缩等级进行压缩和解压缩 |
403.gcc C编译器 | C | gcc v3.2 | 对9组C代码进行了编译 |
429.mcf 组合优化 | ANSI C w/libm | MCF v1.2 | MCF是一个用于大型公共交通中的单站车辆调度的程序 429.mcf运行于32/64位模型时分别需要约860/1700MB的内存 |
445.gobmk 人工智能:围棋 | C | 围棋 | |
456.hmmer 基因序列搜索 | C | 使用HMMS(Hidden Markov Models,隐马尔科夫模型) 基因识别方法进行基因序列搜索 | |
458.sjeng 人工智能:国际象棋 | ANSI C | Sjeng v11.2 | 国际象棋 |
462.libquantum 物理:量子计算 | ISO/IEC 9899:1999("C99") | libquantum是模拟量子计算机的库文件,用来进行量子计算机应用的研究 | |
464.h264ref 视频压缩 | C | h264avc v9.3 | 分别使用两种配置对两个YUV格式源文件进行H.264编码 |
471.omnetpp 离散事件仿真 | C++ | OMNeT++ | 包括约8000台计算机和900个交换机/集线器,以及混合了各种从10Mb到1000Mb速率的大型CSMA/CD协议以太网络模拟 |
473.astar 寻路算法 | C++ | 实现了2D寻路算法A*的三种不同版本 | |
483.xalancbmk XML处理 | C++ | Xalan-C++ v1.8 mod Xerces-C++ v2.5.0 | XML文档/XSL表到HTML文档的转换 |
浮点测试 | |||
410.bwaves 流体力学 | Fortran 77 | 对三维瞬跨音速粘性流中冲击波的模拟计算 | |
416.gamess 量子化学 | Fortran | GMAESS | 三种SCF自洽场计算: 胞嘧啶分子 水和Cu2+离子 三唑离子 |
433.milc 量子力学 | C | MILC | 四维SU(3)格点规范理论的模拟,用来研究QCD量子色动力学、夸克及胶子 |
434.zeusmp 物理:计算流体力学 | Fortran 77/REAL*8 | ZEUS-MP | 用来计算理想、非相对论条件下的流体力学和磁流体力学,434.zeusmp模拟计算了一个统一磁场中的3D冲击波 |
435.gromacs 生物化学/分子力学 | C & Fortran | GROMACS | GROMACS是一个分子力学计算套件,然而也可以用于非生物系统,435.gromacs模拟了在一个水和离子溶液中的蛋白质溶菌酶结构在各种实验手段如核磁共振的X光照射下的变化 |
436.cactusADM 物理:广义相对论 | Fortran 90, ANSI C | Cactus BenchADM | 436.cactusADM对时空曲率由内部物质决定的爱因斯坦演化方程进行求解,爱因斯坦演化方程由10个标准ADM 3+1分解的二阶非线性偏微分方程组成 |
437.leslie3d 流体力学 | Fortran 90 | LESlie3d | LESlie3d是用来计算湍流的计算流体力学程序,437.leslie3d计算了一个如燃油注入燃烧室这样的时间分层的混合流体 |
444.namd 生物/分子 | C++ | NAMD | NAMD是一个大型生物分子系统并行计算程序,444.namd模拟了了92224个原子组成的A-I载脂蛋白 |
447.dealII 有限元分析 | C++ w/Boost lib | deal.II lib | deal.II是定位于自适应有限元及误差估计的C++库,447.dealII对非常系数的亥姆霍兹方程进行求解,它使用了基于二元加权误差估计生成非常好的网格的自适应方法,该方程在3维得解 |
450.soplex 线形编程、优化 | ANSI C++ | SoPlex v1.2.1 | SoPlex使用单纯形算法解线性方程 |
453.povray 影像光线追踪 | ISO C++ | POV-Ray | POV-Ray是一个光线追踪渲染软件,453.povray渲染一幅1280x1024的反锯齿国际象棋棋盘图像 |
454.calculix 结构力学 | Fortran 90 & C w/SPOOLES code | CalculiX | CalculiX是一个用于线性及非线性三位结构力学的有限元分析软件,454.calculix计算了一个高速旋转的压缩盘片在离心力的作用下的应力和变形情况 |
459.GemsFDTD 计算电磁学 | Fortran 90 | GmesTD from GEMS | 459.GemsFDTD使用FDTD(有限差分时域)方法求解三维时域中的麦克斯韦方程,计算了一个理想导体的雷达散射截面 |
465.tonto 量子化学 | Fortran 95 | Tonto | Tonto是一个面向对象的量子化学程序包,465.tonto计算面向量子晶体学,它基于一个符合X光衍射实验数据的、约束的分子Hartree-Fock波函数 |
470.lbm 流体动力学 | ANSI C | 470.lbm使用LBM(格子波尔兹曼方法)模拟非压缩流体,它模拟了两种情况:类似活塞推动的剪切驱动流体和管道流体,测试包含了3000个步骤 | |
481.wrf 天气预报 | Fortran 90 & C | WRF v2.0.2 | 481.wrf基于WRF(Weather Research and Forecastin)模型,对NCAR的数据进行了计算,数据包括了UTC 2001.06.11到UTC 2001.06.12以三小时为间隔的数据 |
482.sphinx3 语音识别 | C | Sphinx-3 | 语音识别 |
可以看出,SPEC CPU 2006的测试项目都有着其原来的应用程序版本,整个SPEC CPU 2006测试就包括了多种实际的应用程序的运行性能测试。当然,SPEC CPU是一个测试CPU子系统的程序,因此一些需要读写磁盘的操作部分都已经被修改,使得外部存储子系统和网络系统对测试结果不造成影响,当然,对内存是非常有需求的。在4路32核心64线程的Nehalem-EX测试样机上,需要128GB的内存。样机配置了256GB内存,因此这个不是问题。