SPECCPU性能测试

工具介绍
SPEC CPU 2006 benchmark是一种行业标准化的CPU测试基准套件,重点测试系统的“CPU-内存”子系统以及编译器的优化程度。
SPEC CPU 2006包含测试工具和测试基准,基准中包含int和fp两种测试集,int测试集中有12个测试项目,fp测试集中有17个测试项目。运行SPEC CPU 2006测试时,是测试者运行测试工具,再由测试工具根据预先配置的编译器及编译参数去自动编译各个测试项目,编译完成后再自动运行测试集,由测试工具统计测试集中每个项目的运行时长,给出最后的评价分数。
整型测试组件:400.perlbench、401.bzip2、403.gcc、429.mcf、445.gobmk、456.hmmer、458.sjeng、462.libquantum、464.h264ref、471.omnetpp、473.astar、483.xalancbmk
浮点型测试组件: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

安装说明
将安装包放到opt目录下,解压。
在这里插入图片描述
解压后,进入目录speccpu/spec2006/,执行install.sh(执行前chmod添加权限)。
在这里插入图片描述

配置文件说明
测试工具执行之前需要预先配置编译器及编译参数,通过修改配置文件speccpu/spec2006/config/xxx.cfg来完成。
在这里插入图片描述
通过对配置文件里编译参数的修改,达到对性能指标的调优。编译参数的优化部分主要是在节标记里说明的,节标记是由4个说明符(benchmark/tunning/extension/machine)加冒号(:)组成。
在这里插入图片描述
这里主要关注benchmark和tunning说明符,一个代表测试基准,如上文中所提到的所要用到的测试组件,int(整型)或者fp(浮点型);一个代表测试策略,即base(基础模式),peak(极限模式)。
举例:
int=default=default=default: #代表后文将对int类型的测试组件进行设置
fp=default=default=default: #代表后文将对float point类型的测试组件进行设置
400.perlbench=default=default=default: #代表后文将对400.perlbench测试组件进行设置
400.perlbench=peak=default: #代表后文将对400.perlbench测试组件极限模式进行设置

有时候会看到default:这样的简写,是将句式后面的default省略了,实际是代表default=default=default=default:

配置文件主要分成5部分,文件头部、编译器选择、优化标签、可移植性标签、MD5校验值。

1.文件头部
如下举例配置文件头部的参数配置。
teeout = 1
ignore_errors = yes
tune = base
output_format = asc, pdf, Screen
reportable = 1
ext = ft2k
size = ref
参数说明:

参数参数说明赋值举例
teeout是否在屏幕上显示编译命令0为否,1为是;
ignore_errors遇到错误是否继续执行yes为继续执行;no为不继续执行;
tune测试策略base为基础模式;peak为极限模式;all为两种模式都有;
output_format输出格式text格式报告;pdf格式报告;
reportable自动生成测试报告
ext编译过程中所创建的可执行文件的扩展名自定义扩展名,如ft2k;
size测试集test为最小测试集;train为训练数据集(the workload with which to train binaries built using feedback-directed optimization.);ref为最大测试集;

部分参数可以在配置文件和runspec命令下设置,如果配置文件已经设置了,但是runspec命令执行的时候又指定了,这个时候以runspec为准。

2.编译器选择
执行时如果发现一些测试基准为NR(not run),在编译的时候有Command not found提示,则有可能是系统里面没有g++或者gfortran编译器,需要手动安装。
在这里插入图片描述
在这里插入图片描述
对编译器的路径进行设置,使用CC、CXX、FC这几个选项,分别代表怎样引用C、C++、Fortran语言的编译器。
int=default=default=default:
CC = /usr/bin/gcc -L/usr/lib64 -L/usr/lib -I/home/usr/include #指定C的编译器路径,lib库的路径,include文件的路径
CXX = /usr/bin/g++ -L/usr/lib64 -L/usr/lib -I/home/usr/include

fp=default=default=default:
CC = /usr/bin/gcc -L/usr/lib64 -L/usr/lib -I/home/usr/include
CXX = /usr/bin/g++ -L/usr/lib64 -L/usr/lib -I/home/usr/include
FC = /usr/bin/gfortran -L/usr/lib64 -L/usr/lib -I/home/usr/include
因为编译器、lib库和include文件的路径是相同的,可以定义变量,然后引用,如下。
default:
DEF_DIR=/usr/bin
DEF_LIB=-L/usr/lib64 -L/usr/lib -I/home/usr/include

int=default=default=default:
CC = ${DEF_DIR}gcc ${DEF_LIB}

3.优化标签
编译器优化标签,使用OPTIMIZE、COPTIMIZE、CXXOPTIMIZE、FOPTIMIZE,分别代表对所有的C、C++、Fortran语言的编译器进行优化,部分优化选项和选项值以及含义说明见附录,根据实际情况进行设置。
举例:
default:
BASEOPT= -O3 -ffast-math -funroll-loops -fomit-frame-pointer -fprefetch-loop-arrays -static

int=default=default=default:
COPTIMIZE = -std=gnu89 -flto ${BASEOPT}
CXXOPTIMIZE = -std=c++03 -flto ${BASEOPT}

fp=default=default=default:
COPTIMIZE = -std=gnu89 -flto ${BASEOPT}
CXXOPTIMIZE = -std=c++03 -flto ${BASEOPT}
FOPTIMIZE = ${BASEOPT}

4.可移植性标签
可移植性标签,使用PORTABILITY、CPORTABILITY、CXXPORTABILITY、FPORTABILITY,分别代表对所有的、C、C++、Fortran语言的编译器应用可移植性标签,这种标签主要是解决一些跨平台兼容性问题,部分可移植性标签的值和含义见附录,根据实际情况进行设置。
另外还有一些扩展标签,如EXTRA_CFLAGS、EXTRA_FFLAGS、EXTRA_OPTIMIZE、EXTRA_COPTIMIZE、EXTRA_LIBS。
举例:
default:
PORTABILITY = -DSPEC_CPU_LP64
400.perlbench=default=default=default:
CPORTABILITY = -DSPEC_CPU_LINUX_X64
EXTRA_CFLAGS = -fno-strict-aliasing
462.libquantum=default=default=default:
CPORTABILITY= -DSPEC_CPU_LINUX
EXTRA_COPTIMIZE= --param max-completely-peeled-insns=2000

5.MD5校验
配置文件在测试之前会对每个测试基准生成一个MD5校验值,如果该项测试基准有修改,则测试程序会在执行时重新编译该基准。
在这里插入图片描述

测试执行
每次执行都前需要输入. ./shrc和. ./prerun命令。
在这里插入图片描述
不然会报错:
在这里插入图片描述
使用runspec工具执行,如下:
在这里插入图片描述
参数说明:
-c 选择执行文件
-n 执行次数
-T 测试方案,base,peak
-r 核数
-i 数据集,test,train,ref
all 测试基准 int,fp,all

结果分析
结果展示类型1:只展示每一项测试基准的分数。
在这里插入图片描述
结果展示类型2:pdf版本测试报告,不仅展示每一项测试基准的分数,也会展示几何平均值分数。如下图就是指浮点型运算多核性能基础测试有444分。
注:执行3次(-n 3)后才会生成pdf版本报告。
在这里插入图片描述
在这里插入图片描述
如下为浮点型报告的名称及含义。

报告名称报告含义
SPECfp2006浮点型-单核-极限模式
SPECfp_base2006浮点型-单核-基础模式
SPECfp_rate2006浮点型-多核-极限模式
SPECfp_rate_base2006浮点型-多核-基础模式

如下为整型报告的名称及含义。

报告名称报告含义
SPECint2006整型-单核-极限模式
SPECint_base2006整型-单核-基础模式
SPECint_rate2006整型-多核-极限模式
SPECint_rate_base2006整型-多核-基础模式

性能调优实践
在测试过程中,发现测试结果较低,这主要是因为项目组做了一部分硬件和编译参数调优,调优后的可以更加完整发挥服务器的最大性能。
影响处理器性能的因素:
1.处理器核的设计水平
2.处理器主频
3.处理器的缓存大小
4.内存的访存速度
5.编译器和编译选项
6.操作系统内核
7.程序运行依赖的底层函数库

一般情况下对于待测的处理器,想要提高处理器的性能,可以提高处理器的主频和缓存,以及选择设计水平更高的处理器;对内存的访问,如果服务器的内存只有1根的话,可以再添加1根相同容量的内存组成双通道进行优化;
这里我们只在相同的处理器和操作系统下,通过对编译器和编译选项的调优,实现性能的优化。取单核-基础模式和极限模式下的测试分值。
如下为在无优化和不同编译优化(OPTIMIZE = -O1/O2/O3)下的的性能数据对比。
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值