工具介绍
SPEC CPU 2006 benchmark是SPEC新一代的行业标准化的CPU测试基准套件。重点测试系统的处理器,内存子系统和编译器。这个基准测试套件包括的SPECint基准和SPECfp基准。 其中SPECint2006基准包含12个不同的基准测试和SPECfp2006年基准包含19个不同的基准测试。SPEC设计了这个套件提供了一个比较标准的计算密集型,高性能的跨硬件的CPU测试工具。在SPEC CPU 2006基准有几种不同的方法来衡量计算机性能。 一种方式是测量计算机完成单一任务的速度; 另一种方式吞吐量,容量或速率的测量。 说明:由于spec2006支持多种类型操作系统。以下安装、测试、移植等介绍均基于Unix 和其他的 Unix-like system如linux。Windows系统不在此范围内。
spec2006与spec2000的对比简要说明
2006年8月24日,标准性能评估公司(SPEC)宣布CPU2006将取代CPU2000。 Spec cpu基准测试被广泛的应用于工业界和学术界。新套件比cpu2000要大很多,而且将涵盖到CPU、存储器系统、编译器特别是C++编译器。Cpu2000只有1个关于C++的基准测试,CPU2006则含有7个相关套件,这其中包括了50W行c++代码,Fortran和C语言和之前一样有很好的覆盖。
Spec2000和spec20006具体的套件信息如下:
Spec int2000 12个整点测试项目
164.gzip C语言编写,很流行的数据压缩程序。使用Lempel-Ziv coding(LZ77)作为压缩算法。SPEC中的gzip除了读入集外没有其他文件I/O操作,所有压缩和解压都在主存中进行,方便测试CPU和存储子系统。
175.vpr C语言编写,FPGA中的电路定位和路由程序,用于计算机辅助电路设计领域。
176.gcc: C语言编写,C语言优化编译器。该GCC基于GCC 2.7.2.2版本,为摩托罗拉88100处理器生成机器码。
181.mcf: C语言编写,组合优化/单点轮换调度(Single-depot vehicle scheduling),派生自使用单站轮换调度的公共物流应用程序。
186.crafty: C语言编写,国际象棋游戏程序。这是一个在64位机上设计的高性能计算机国际象棋程序,在32位机上可以使用long long来表示该数据类型。主要是一个整点程序,大量的逻辑运算。通过配置,能生成不同的搜索集,可以对处理器的整点运算,转移预测和流水线等做测试。
197.parser: C语言编写,字处理程序。连接语法分析器(Link Grammar Parser)是一个基于连接语法的英语句法分析器。连接语法时英语语法的较早理论。给定一个句子,系统能给它赋予一个词法结构,这个结构是两个词之间被标记的连接。该分析器有大约60000个词表的字典。
252.eon: C++语言编写,计算机可视化。eon是一个基于概率的射线跟踪程序,基于Kajiya 1986 ACM SIGGRAPH会议的论文。它将一定数量的3D射线发射到一个3D多面体中,计算射线和多边形的交点,并通过计算入射光和交点生成新射线。最终的计算结果时一个能在照相机内看到的图片。程序中的计算需求和基本计算机图形学中介绍的传统确定性射线跟踪程序很相似,但是它有较少的存储一致性需求,因为很多在同一个位置生成的随机射线横切3D空间中完全不同的区域.输入:eon渲染一个150×150像素的一把椅子在房间前脚的图片。
253.perlbmk: C语言编写,Perl语言解释器。这是一个Perl v5.005_03版本的删减版,删除了很多操作系统相关的特性,并增加了一些第三方的模块,包括MD5 v1.7, MHonArc v2.3.3, IO-stringy v1.205,MailTools v1.11,TimeData v1.08。输入:由四个perl脚本组成,一个email-to-html 转换器,占用时间最长;一个spec CPU2000用来对比较输出的diff脚本,一个通过迭代算法寻找合格数字的脚本,一个用于测试伪随机数按照预定顺序生成的脚本。输出分别对应各个输入。
254.gap: C语言编写,群论,解释器中常用。它实现一个语言和库用于做群论计算。GAP是(Groups,Algorithms和Programming的缩写)。
255.vortex: C语言编写,单用户面向对象数据库中事务处理的benchmark。SPEC中的vortex来自完整面向对象数据库程序VORTEx的一个子集。输入和输入数据库的事务都会被转换成一个方案。
256.bzip2: C语言编写,压缩程序。基于Julian Seward的bzip2 v0.1,唯一的不同是SPEC中的bzip2除了输入外,无文件I/O。所有的压缩和解压都在内存中进行。输入,输出都和gzip的相似。
300.twolf: C语言实现,定位和路由模拟。twolf来自TimberWolfSC定位和全局路由,它被用于创建微处理器产品印刷电路布局的流程中,确定晶体管的位置和组内的全局连接。定位问题是一个排列,穷举法耗时太长,TimberWolfSC程序则使用模拟退火作为启发来找到较优解。
Spec int2006 12个整点测试项目
400.perlbench:C语言编写,同spec2000的253.perlbmk类似,是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。400.perlbench采用3个脚本进行增加负载或工作。1.主要的负载在于打开 垃圾邮件过滤软件SpamAssassin。采取的过滤方式是采用记分制,也就是说会根据我们所设定的标准来给予分数超过标准值的时候即判定为 SPAM(垃圾邮件),其余为非垃圾邮件。但对SpamAssassin软件做了很大程度的修改,避免一些I/0操作,并且没有使用贝叶斯过滤。2.是比较流行的email到HTML的转换器MHonArc 3.使用了spec2006的工具套件specdiff。
401.bzip2: C语言实现,同spec2000的256.bzip2类似,基于Julian Seward的bzip2 v1.03.唯一的不同是SPEC中的bzip2除了输入外,无文件I/O。所有的压缩和解压都在内存中进行。输入,输出都和gzip的相似。负载包括六个部分:两个小的JPEG图片、一个程序、一个tar包起的几个源程序文件、一个HTML文件、混合文件,包括压缩起来的高可压缩文件及不怎么可压缩的文件。测试分别使用了三个不同的压缩等级进行压缩和解压缩
403.gcc:C语言实现,同spec2000的176.gcc类似。该测试是基于gcc V3.2,为AMDCPU生成机器码。相比spec2000的176.gcc,该测试有更多的输入文件,因此测试压力会更大,负载来源于对9组C代码进行编译。
429.mcf:C语言实现,同时需要libm库支持,同spec2000的181.mcf类似,MCF是一个用于大型公共交通中的单站车辆调度的程序。但对输入文件做了一定的修改,由32位变成64位,用以兼容64位系统。并且增加了cache命中和程序的性能。相比spec2000的181.mcf来说,占用的内存由之前的100M-190M变为860M-1700M。
445.gobmk:C语言实现,同spec2000的186.crafty类似。不同的是这里是实现的围棋游戏。相比spec2000程序更复杂。
456.hmmer:C语言实现。HMMER是基于隐马尔可夫模型(profile HMMs),用于生物序列分析工作。同Timed HMMer Search 类似。
458.sjeng:C语言实现。基于一种象棋游戏Sjeng11.2,属于人工智能的范畴。
462.libquantum:C语言实现(C99)。libquantum是模拟量子计算机的库文件,用来进行量子计算机应用的研究。
464.h264ref:C语言实现。一种视频压缩程序,基于H264AVC 9.3版,去除了I/O和平台相关的东西。
471.omnetpp:C++语言实现。OMNeT++,离散事件仿真。包括约8000台计算机和900个交换机/集线器,以及混合了各种从10Mb到1000Mb速率的大型CSMA/CD协议以太网络模拟。
473 astar:C++语言实现,实现了2D寻路算法A*的三种不同版本。
- xalancbmk:C++语言实现,包含Xalan-C++ v1.8 mod、Xerces-C++ v2.5.0,实现了XML文档/XSL表到HTML文档的转换。
Spec fp2000 13个浮点测试项目
168 wupwise:Fortran 77语言实现,格点规范理论与威尔逊数值模拟对费米子格是夸克传播子的计算。输入文件wupwise.in包含几个创建该问题的参数,SEED:提供一个随机数 NITER:迭代次数KAPPA:参数表征矩阵M = I - KAPPA * D。输出文件wupwise.out,包含每次NITER迭代的校验值(EPS)和包含最终的EPSILON特征的结果。
171 swim:Fortran 77语言实现,气象学中的浅水模型。
172.mgrid :Fortran 77语言实现,多重网格求解器:3D势场
173.applu: Fortran 77语言实现,抛物线/椭圆型偏微分方程
177.mesa:C语言实现 ,3D图形库。
178.galgel :Fortran 90语言实现,计算流体动力学
179.art :C,图像识别/神经网络
183.equake:C语言实现, 地震波传播模拟
187.facerec: Fortran 90语言实现,图像处理:人脸识别
189.lucas :Fortran 90语言实现,数论/素性测试
191.fma3d :Fortran 90语言实现,有限元模拟碰撞
200.sixtrack :Fortran 77语言实现,高能核物理加速器设计
301.apsi: Fortran 77语言实现,气象学中污染物分布
Spec fp2006 17个浮点测试项目
410.bwaves:Fortran 77语言实现,流体力学范畴。对三维瞬跨音速粘性流中冲击波的模拟计算
416.gamess:Fortran语言实现,量子化学范畴。采用GMAESS组件,包含 胞嘧啶分子、水和Cu2+离子、三唑离子等3种SCF自洽场计算。
433.milc:C语言实现,量子力学范畴,采用MILC组件,包含用来研究QCD量子色动力学、夸克及胶子的四维SU(3)格点规范理论的模。
434.zeusmp :Fortran 77/REAL*8语言实现,属于计算流体力学范畴,ZEUS-MP程序,用来计算理想、非相对论条件下的流体力学和磁流体力学,434.zeusmp模拟计算了一个统一磁场中的3D冲击波。
435.gromacs :C & Fortran语言实现,属于生物化学/分子力学范畴。GROMACS是一个分子力学计算套件,然而也可以用于非生物系统,435.gromacs模拟了在一个水和离子溶液中的蛋白质溶菌酶结构在各种实验手段如核磁共振的X光照射下的变化。
436.cactusADM:Fortran 90, ANSI C语言实现,物理中的广义相对论。来源于Cactus BenchADM。436.cactusADM对时空曲率由内部物质决定的爱因斯坦演化方程进行求解,爱因斯坦演化方程由10个标准ADM 3+1分解的二阶非线性偏微分方程组成。
437.leslie3d :Fortran 90语言实现,属于流体力学范畴。 LESlie3d是用来计算湍流的计算流体力学程序,437.leslie3d计算了一个如燃油注入燃烧室的时间分层混合流体。
444.namd:C++语言实现。属于生物/分子学范畴。NAMD是一个大型生物分子系统并行计算程序,444.namd模拟了了92224个原子组成的A-I载脂蛋白
447.dealII:C++语言实现。进行有限元分析,w/Boost lib 、deal.II lib、deal.II是定位于自适应有限元及误差估计的C++库,447.dealII对非常系数的亥姆霍兹方程进行求解,它使用了基于二元加权误差估计生成最佳网格的自适应方法,该方程在3维得解。
450.soplex:C++语言实现。采用Plex v1.2.1程序,Plex使用单纯形算法解线性方程
453.povray:ISO C++ 语言实现。 POV-Ray POV-Ray是一个光线追踪渲染软件,453.povray渲染一幅1280x1024的反锯齿国际象棋棋盘图像
454.calculix:Fortran 90 & C语言实现,结构力学范畴。CalculiX是一个用于线性及非线性三位结构力学的有限元分析软件,454.calculix计算了一个高速旋转的压缩盘片在离心力的作用下的应力和变形情况
459.GemsFDTD:Fortran 90语言实现。属于电磁学范畴。 459.GemsFDTD使用FDTD(有限差分时域)方法求解三维时域中的麦克斯韦方程,计算了一个理想导体的雷达散射截面
465.tonto: Fortran 95实现。量子化学范畴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一种语音识别软件。
工具安装
标准安装方式
$mount -t iso9660 -o ro,exec /dev/cdrom /mnt
$cd /mnt
$./install.sh
可以指定安装目录如:
$./install.sh -d /home/cpu2006
安装过程中可能遇到以下提示:
Installing FROM /Volumes/SPEC_CPU2006
Installing TO /home/cpu2006
Is this correct? (Please enter ‘yes‘ or ‘no‘)
yes
通过安装完成的软件进行测试
先准备相关测试文件,如:cpu2006-20141030.tar。 解压文件:
$tar xf cpu2006-20141030.tar
进入安装目录:
$cd cpu2006v99/(根据实际路径)
导入测试工具:
$. shrc
注意:输入时,圆点与shrc之间至少一个空格,该命令开始导入SPEC CPU2006程序。 修改测试文件绝对路径:
$bin/relocate
显示“Top of SPEC benchmark tree is ‘/cpu2006v99‘”
运行测试
根据需求,进行参数选择,开始运行测试脚本: 例如:runspec -c linux-mipsel-gcc -i ref -n 3 all 命令参数说明:
-c:读取测试配置文件,linux-mipsel-gcc位于SPEC CPU2000安装目录的config目录下,该文件可以根据实际信息进行修改。其编译选项不建议修改。
-i:输入测试数据集的大小,ref代表最大测试数据集,test代表最小测试数据集;
-n:每个测试项目运行的次数,如果需要SPEC CPU2006自动计算测试分值,需要指定运行次数等于或大于3,即n>=3;
all:SPEC CPU2006将运行基准测试程序中的所有测试项目。
出现以下信息,表明测试已经启动“
runspec v4283 - Copyright 1999-2006 Standard Performance Evaluation Corporation
Using ‘mipsel-linux‘ tools
Reading MANIFEST... 17899 files
Loading runspec modules...............
Locating benchmarks...found 31 benchmarks in 13 benchsets.
Locating output formats: ASCII, config, CSV, flags, html (DISABLED), mail, PDF, PostScript, raw, Screen, Submission Check
Reading config file ‘/cpu2006v99/config/linux-mipsel-gcc.cfg‘
Benchmarks selected: 400.perlbench, 401.bzip2, 403.gcc, 429.mcf, 445.gobmk, 456.hmmer, 458.sjeng, 462.libquantum, 464.h264ref, 471.omnetpp, 473.astar, 483.xalancbmk, 999.specrand, 410.bwaves, 416.gamess, 433.milc, 434.zeusmp, 435.gromacs, 436.cactusADM, 437.leslie3d, 444.namd, 447.dealII, 450.soplex, 453.povray, 454.calculix, 459.GemsFDTD, 465.tonto, 470.lbm, 481.wrf, 482.sphinx3, 998.specrand
Compiling Binaries
up to date 400.perlbench ref base linux-mipsel-gcc default
Up to date 401.bzip2 ref base linux-mipsel-gcc default
Up to date 403.gcc ref base linux-mipsel-gcc default
Up to date 429.mcf ref base linux-mipsel-gcc default
……
这组测试配置基本和spec2000类似,不同的是,spec2006在测试前,会把每个测试组件重新编译建立一次。所以在测试前,应确保此时的系统中包含以下编译器:g++、gcc、gfortran编译器。如果进行连续测试,则不必进行再次编译,可以加参数”—nobuild”. 附config文件大体说明:斜体部分为文本内容 //为解释说明
#####################################################################
ignore_errors = yes
tune = base
ext = loongson.3a2000
output_format = asc, Screen, html
reportable = 0
teeout = yes
teerunout = yes
hw_avail = Feb-2015
sw_avail = Feb-2015
license_num =
company_name = Loongson
prepared_by = Loongson
tester_name = isoft
test_date = July-2016
verbose = 9
default=default=default=default:
#####################################################################
#
# Compiler selection
#
#####################################################################
makeflags = -j 4
CC = mips64el-loongson-linux-gcc
CXX = mips64el-loongson-linux-g++
FC = mips64el-loongson-linux-gfortran
## HW config
hw_cpu_name = Loongson
hw_model = 3A2000
hw_cpu_mhz = 1000
hw_fpu = Integrated
hw_nchips = 1
hw_ncores = 4
hw_ncoresperchip= 4
hw_nthreads = 4
hw_ncpuorder = 1
hw_parallel = yes
hw_pcache = 64KB I + 64KB D
hw_scache = 4096KB(I + D)
hw_memory = 2 x 4GB DDR1066
hw_vendor = Loongson
## SW config
sw_os = iSoft
sw_file = ext4
sw_state = runlevel 3
sw_compiler = gcc , g++ & gfortran 4.8
#####################################################################
# Optimization
#####################################################################
## Base is low opt
default=default=default=default:
# For this data model, -m32 needs to be here, as one of the lines below
OPTIMIZE = -static -march=loongson3a
PORTABILITY =
COPTIMIZE = -flto -Ofast
CXXOPTIMIZE = -flto -Ofast
FOPTIMIZE = -flto -Ofast
notes0100= C/C++ base flags: -flto -Ofast
notes0110= Fortran base flags: -flto -Ofast
#####################################################################
# 32/64 bit Portability Flags - all
#####################################################################
default=base=default=default:
notes25=
default=peak=default=default:
notes25=
#####################################################################
# Portability Flags - INT
#####################################################################
400.perlbench=default=default=default:
notes35 = 400.perlbench: -DSPEC_CPU_LINUX_IA32
CPORTABILITY= -DSPEC_CPU_LINUX_IA32 -fno-strict-aliasing
#notes35 = 400.perlbench: -DSPEC_CPU_LINUX
#CPORTABILITY= -DSPEC_CPU_LINUX -DSPEC_CPU_LITTLEENDIAN
#COPTIMIZE = -O2
......
其他具体组件的编译信息不再一一说明,基本可以保持默认即可。
更多测试类型与方法参见下文。
测试结果收集与分析
测试结束后在result目录下,查看测试结果,测试结果一般以测试类型和测试次序进行区别,并且会按照整点和浮点进行划分。如果是按照正式reportable的模式进行测试的话,会出一份网页版的正式测试结果,参见下图: 非正式结果可以去asc或txt文档查看,格式例如下文:
Base Base Base Peak Peak Peak
Benchmarks Ref. Run Time Ratio Ref. Run Time Ratio
-------------- ------ --------- --------- ------ --------- ---------
400.perlbench 9770 430 22.7 S 9770 339 28.8 S
400.perlbench 9770 429 22.8 * 9770 338 28.9 S
400.perlbench 9770 429 22.8 S 9770 339 28.8 *
401.bzip2 9650 559 17.3 * 9650 552 17.5 *
401.bzip2 9650 559 17.3 S 9650 553 17.5 S
401.bzip2 9650 560 17.2 S 9650 552 17.5 S
403.gcc 8050 374 21.5 S 8050 337 23.9 S
403.gcc 8050 367 22.0 * 8050 337 23.9 S
403.gcc 8050 366 22.0 S 8050 337 23.9 *
429.mcf 9120 187 48.9 S 9120 187 48.9 S
429.mcf 9120 188 48.6 * 9120 188 48.6 *
429.mcf 9120 211 43.2 S 9120 211 43.2 S
445.gobmk 10490 559 18.8 S 10490 542 19.4 S
445.gobmk 10490 559 18.8 S 10490 542 19.4 *
445.gobmk 10490 559 18.8 * 10490 541 19.4 S
456.hmmer 9330 213 43.8 S 9330 213 43.7 *
456.hmmer 9330 247 37.8 S 9330 214 43.6 S
456.hmmer 9330 214 43.5 * 9330 213 43.7 S
458.sjeng 12100 616 19.6 * 12100 574 21.1 *
458.sjeng 12100 617 19.6 S 12100 575 21.0 S
458.sjeng 12100 585 20.7 S 12100 574 21.1 S
462.libquantum 20720 14.2 1460 * 20720 14.2 1460 *
462.libquantum 20720 14.4 1440 S 20720 14.4 1440 S
462.libquantum 20720 13.5 1540 S 20720 13.5 1540 S
464.h264ref 22130 578 38.3 * 22130 527 42.0 S
464.h264ref 22130 579 38.2 S 22130 526 42.0 *
464.h264ref 22130 578 38.3 S 22130 526 42.0 S
471.omnetpp 6250 349 17.9 S 6250 288 21.7 *
471.omnetpp 6250 348 17.9 * 6250 288 21.7 S
471.omnetpp 6250 348 18.0 S 6250 289 21.7 S
473.astar 7020 313 22.4 S 7020 313 22.4 S
473.astar 7020 311 22.6 S 7020 311 22.6 S
473.astar 7020 311 22.6 * 7020 311 22.6 *
483.xalancbmk 6900 174 39.7 * 6900 170 40.7 S
483.xalancbmk 6900 174 39.6 S 6900 170 40.5 S
483.xalancbmk 6900 174 39.7 S 6900 170 40.6 *
==============================================================================
400.perlbench 9770 429 22.8 * 9770 339 28.8 *
401.bzip2 9650 559 17.3 * 9650 552 17.5 *
403.gcc 8050 367 22.0 * 8050 337 23.9 *
429.mcf 9120 188 48.6 * 9120 188 48.6 *
445.gobmk 10490 559 18.8 * 10490 542 19.4 *
456.hmmer 9330 214 43.5 * 9330 213 43.7 *
458.sjeng 12100 616 19.6 * 12100 574 21.1 *
462.libquantum 20720 14.2 1460 * 20720 14.2 1460 *
464.h264ref 22130 578 38.3 * 22130 526 42.0 *
471.omnetpp 6250 348 17.9 * 6250 288 21.7 *
473.astar 7020 311 22.6 * 7020 311 22.6 *
483.xalancbmk 6900 174 39.7 * 6900 170 40.6 *
SPECint(R)_base2006 36.7
SPECint2006 39.1
Base Ratio为测试分值,该测试一般运行3遍取中值。整体结果为所有结果的几何平均值。
举例说明SPEC CPU2006常用测试命令组合
1.runspec -c test.cfg -i test -I all 基于最小测试数据集快速执行所有的测试,测试过程中如果某个用例发生错误,则跳过错误用例,继续执行其他用例。 2.runspec -c test.cfg -i ref -n 3 -I all 基于最大测试数据集全面执行所有的测试,用于测试单核CPU,测试过程中如果某个用例发生错误,则跳过错误用例,继续执行其他用例。 3.runspec -c test.cfg –r ref –n 3 fp 基于最大测试数据集,只运行fp测试 4.runspec -c test.cfg –r ref –n 3 int 基于最大测试数据集,只运行int测试 5.runspec -c test.cfg -i ref 473.astar 基于最大测试数据集只执行473.astar单个测试。 6 runspec –c test.cfg –i ref --rate 4 int 基于最大数据测试集进行rate测试,运行4线程测试的分值
其他命令补充
--action build 创建测试项目
--action onlyrun 只是运行,不进行确认测试结果是否正确
--action report 标准测试
--action clean 清理已经建立的测试项目
模式很多,不再一一介绍。
--check_version 检查版本更新
--copies –c number 默认1 用来进行SPECrate run
--help 显示帮助文档
--ignore_errors 忽略错误
ations number —n 测试次数,一次reportable测试,必须是3次
--iter—loose 未设置reportable测试
--output_format 输出文件格式 默认为html text 可以选择 all cfg test csv html mail pdf ps printer raw screen text 等多种方式。
--rate -r 进行SPECspeed测试可以指定copies数量运行。
--rebuild 重新编译测试文件
--tune tuning 默认是base 可以选择base, peak, or all ,Report 首先是base,其次是peak.
以上是比较常用的命令,一些不常用的命令不再介绍,可参考下文了解。
-a Same as --action
--action action Do: build|buildsetup|clean|clobber|configpp| onlyrun|realclean|report|run|runsetup|scrub| setup|trash|validate
--basepeak Copy base results to peak (use with --rawformat)
--nobuild Do not attempt to build binaries
-c Same as --config
-C Same as --copies
--check_version Check whether an updated version of CPU2006 is available
--comment "text" Add a comment to the log and the stored configfile.
--config file Set config file for runspec to use
--copies Set the number of copies for a SPECrate run
-D Same as --rebuild
-d Same as --deletework
--debug Same as --verbose
--define SYMBOL[=VALUE] Define a config preprocessor macro
--delay secs Add delay before and after benchmark invocation
--deletework Force work directories to be rebuilt
--dryrun Same as --fake
--dry-run Same as --fake
-e Same as --extension
--ext Same as --extension
--extension ext[,ext...] Set the extensions
-F Same as --flagsurl
--fake Show what commands would be executed.
--fakereport Generate a report without compiling codes or doing a run.
--fakereportable Generate a fake report as if "--reportable" were set.
--[no]feedback Control whether builds use feedback directed optimization
--flagupdate Same as --update
--flagsupdate Same as --update
--flagsurl url Location (url or filespec) where to find your flags file
--getflags Same as --update
--graph_auto Let the tools pick minimum and maximum for the graph
--graph_min N Set the minimum for the graph
--graph_max N Set the maximum for the graph
-h Same as --help
--help Print usage message
--http_proxy Specify the proxy for internet access
--http_timeout Timeout when attempting http access
-I Same as --ignore_errors
-i Same as --size
--ignore_errors Continue with benchmark runs even if some fail
--ignoreerror Same as --ignore_errors
......
手动编译及跨平台移植方法(仅供参考)
Spec2006包含的测试套件基本上与平台无关,因此理论上是可以直接进行跨平台进行测试。 Spec2006为了实现测试结果的准确及降低对平台的依赖,制作了自己的工具包。其中包括: specdiff(examines results to see if the correct answer was obtained)、specinvoke (invokes benchmarks for CPU2006)、specmake(GNU make ,Calling it "specmake" avoids possible conflicts with versions of make that may already be on your system. SPEC requires that published results use the versions of the tools that it supplies, so that if SPEC applies patches or extensions from time to time, all users run with a consistent tool set. Similar considerations apply to other tools in this list.)、specxz (The xz compression program)、specmd5sum(md5sum from GNU coreutils, with enhancements)、spectar( GNU tar)、specperl(Perl)。Various Perl modules such as Algorithm::Diff, GD, HTML::Parser, PDF::API2, URI, XML::SAX, etc.。 编译工具:C99 编译器 C++编译器 如果是初始安装包,则需要解压源码包
# xz -dc install_archives/cpu2006.tar.xz | tar -xf - tools/src
建立工具包的命令如下:
AIX (32-bit):
CC=xlc CFLAGS=‘-O -qarch=ppc -D_LARGE_FILES -D_ILS_MACROS‘ PERLFLAGS="-Doptimize=‘-O‘ -Accflags=‘-D_LARGE_FILES‘" OBJECT_MODE=32 ./buildtools
AIX (64-bit):
CC=xlc CFLAGS=‘-O3 -qarch=ppc64 -q64 -D_ILS_MACROS‘ PERLFLAGS="-Doptimize=‘-O‘ -Aoptimize=‘-qarch=ppc64 -q64‘" OBJECT_MODE=64 ./buildtools
HPUX:
CC="/opt/ansic/bin/cc" CFLAGS="-Ae +O2 +z -D_FILE_OFFSET_BITS=64 -AC99" XZCFLAGS=-AC99 PERLFLAGS="-Doptimize=+O1 -Dlibpth=/usr/lib/hpux32 -Dldflags=-lm -Dcppstdin=cc -Acppstdin=-E -Acppstdin=-Aa -Acppstdin=-D__STDC_EXT__ -Acppstdin=-AC89" ./buildtools
IRIX:
ulimit -s 128000; CFLAGS="-c99 -D_FILE_OFFSET_BITS=64" MD5CFLAGS="-O2" PERLFLAGS="-Doptimize=-O3 -Uloclib -Dlibpth=/usr/lib32" XZFLAGS="--disable-assembler --disable-shared" XZCFLAGS="-O1" ./buildtools
建立完成之后,确认是否成功的方法:
cd $SPEC (Unix)
. shrc
或 runspec -V
或specmake -v
specxz -h
specperl -v
specdiff –h
runspec -h
specinvoke -h
工具编译完成之后,需要对工具进行打包
packagetools <archname>
如果自动化编译出现问题,可以手动编译每个测试工具。编译方法为进入对应的工具包,手动编译。
Top^
Comments