资讯详情

SPEC2006详细参数和测试过程常见问题处理总结(附实例操作)

目录

    • 一、简介
    • 二、构建系统环境
    • 三、解压试验文件
    • 五、环境变量的初始化
    • 六、复制修改cfg文件
    • 7.根据测试需要带入参数并执行测试
      • 7.1 SPEC2006的测试范围
      • 7.2 参数详解
    • 八、测试子项目简介
    • 九、测试过程中的错误处理
    • 十、其他测试软件的链接

一、简介

本文主要用于使用SPEC2006在ARM测试平台,使用Linux系统为Debian,测试过程通过具体的操作实例讲述,SPEC2006是SPEC新一代行业标准化CPU测试基准套件。重点测试处理器、内存子系统和编译器。该基准测试套件包括SPECint基准和SPECfp基准。 其中SPECint2006基准包括12个不同的基准测试和SPECfp2006年基准包括19个不同的基准测试。SPEC该套件的设计提供了更标准的计算密集型和高性能的跨硬件CPU测试工具。在SPEC CPU 衡量计算机性能的方法有几种不同的方法。 一种方法是测量计算机完成单个任务的速度,另一种方法是测量吞吐量、容量或速率。

总过程概述:

二、构建系统环境

安装好linux操作系统和相应语言的编译器,如:gcc gcc-g gcc-gfortran;

[root@localhost /]# apt-get install gcc gcc-g   gcc-gfortran -y 

三、解压试验文件

将speccpu2006安装包上传到操作系统,减压进入试验目录

[root@localhost /]# tar -xvf speccpu2006-v1.0.1.tar -C . [root@localhost /speccpu2006-v1.0.1]# cd  speccpu2006-v1.0.1 

##四、执行安装脚本

[root@localhost /speccpu2006-v1.0.1]# ./install.sh //如果没有执行脚本的权限,请确保是否为root用户还将可执行权限添加到所有文件中 [root@localhost /speccpu2006-v1.0.1]# chmod   -R a x *   

五、环境变量的初始化

[root@localhost /speccpu2006-v1.0.1]# source shrc 

六、复制修改cfg文件

[root@localhost /speccpu2006-v1.0.1/config]# cd config/ [root@localhost /speccpu2006-v1.0.1/config]# cp arm64.cfg test.cfg ///根据架构选择不通的cfg文件 

//跟需要修改cfg配置,如硬件配置、编译参数和各子项的编译参数(由于我在测试过程中由于编译器版本的原因导致编译错误,因此需要修改子项的编译参数,以下章节将讨论)。具体图片如下: 在这里插入图片描述

7.根据测试需要带入参数并执行测试

7.1 SPEC2006的测试范围

1.单个项目测试

runspec -c  test.cfg  429.mcf --rate 4 -n 1  --noreportable 

2、int整型数测试

runspec -c test.cfg  int --rate 8 -n 1 -size=ref   --noreportable    --output_format all 

3、fp浮点数

runspec -c test.cfg  fp --rate 8 -n 1 -size=ref   --noreportable    --output_format all 

4.全项目测试

runspec -c test.cfg --rate 8  --noreportable --size=ref  --tune=base  -o text,screen,pdf -I --iterations=1 all 

7.2 参数详解

1)ref:测试规模(测试规模)test,ref,train其中test最小跑测试编译器的正确性,最小跑的时间最短。test但是当你想测试性能时,会使用规模ref) 2)iterations=三次:测试次数(编译器性能稳定时测试一次)也可以写成n 3; 如果想得到加权统计的结果,也就是常说的cpu的spec需要设置分数iterations大于等于3。 3) all 测试范围: 表示进行fp和int测试(将all替换成int 或 fp 测试定点和浮点;all用456/444等文件号替换,表示单独测试某个测试项) 对于CPU的SPEC测试,默认这一项是all,但是,如果您对其中一个测试分数不满意,您可以单独通过指定测试项的编号进行测试。测试还将得到一个分数,可以用于单项性能调整。 4)输出格式:-o text,screen,pdf 表示测试完成,生成报告格式,分别是txt,屏幕显示和pdf格式,保存目录spec解压目录result中。 5)noreportable && reportable : 是否修改了检测/未检测生成的二进制文件。 –reportable 如果修改了原生成的二进制文件,二进制文件将在运行过程中自动重新编译,以确保运行过程是原始程序。 6)测试核数:-r 设置测试的CPU核心数目; 7)测试模式:-tune = base 基准测试;-tune = peak 峰值测试;-tune默认是base 可以选择base, peak, or all ,Report 首先是base,其次是peak. 8)-I : 表示在测试过程中,如遇报错,略过错误继续测试;

八、测试子项目简介

子项目 语言 说明
400.perlbench PERL编程语言 ANSI C 负载由三个script组成:主负载是垃圾邮件检测软件SpamAssassin,一个是email到HTML的转换器MHonArc,最后一个是specdiff
401.bzip2 压缩 ANSI C 负载包括六个部分:两个小的JPEG图片,程序,程序,tar几个源程序文件,一个HTML文件和混合文件包括压缩的高压缩文件和不太可压缩的文件。测试分别使用三个不同的压缩等级进行压缩和解压
403.gcc C 编译器 C 编译9组C代码
429.mcf 组合优化 ANSI C w/libm MCF429.mcf运行在32/64位模型时,需要约860/1700MB的内存
445.gobmk 人工智能:围棋 C 围棋
456.hmmer 搜索基因序列 C 使用HMMS(Hidden Markov Models,隐马尔科夫模型) 基因识别方法进行基因序列搜索
458.sjeng 人工智能:国际象棋 ANSI C 国际象棋
462.libquantum 物理:量子计算 ISO/IEC 9899:1999(“C99”) libquantum是模拟量子计算机的库文件,用来进行量子计算机应用的研究
464.h264ref 视频压缩 C 使用两种配置对两个YUV格式源文件进行H.264编码
471.omnetpp 离散事件仿真 C++ 包括约8000台计算机和900个交换机/集线器,以及混合了各种从10Mb到1000Mb速率的大型CSMA/CD协议以太网络模拟
473.astar 寻路算法 C++ 实现了2D寻路算法A*的三种不同版本
483.xalancbmk XML处理 C++ XML文档/XSL表到HTML文档的转换
410.bwaves 流体力学 Fortran 77 对三维瞬跨音速粘性流中冲击波的模拟计算
416.gamess 量子化学 Fortran 三种SCF自洽场计算:胞嘧啶分子、水和Cu2+离子、三唑离子
433.milc 量子力学 C 四维SU(3)格点规范理论的模拟,用来研究QCD量子色动力学、夸克及胶子
434.zeusmp 物理:计算流体力学 Fortran 77/REAL*8 用来计算理想、非相对论条件下的流体力学和磁流体力学,434.zeusmp模拟计算了一个统一磁场中的3D冲击波
435.gromacs生物化学/分子力学 C & Fortran GROMACS是一个分子力学计算套件,然而也可以用于非生物系统,435.gromacs模拟了在一个水和离子溶液中的蛋白质溶菌酶结构在各种实验手段如核磁共振的X光照射下的变化
436.cactus ADM物理:广义相对论 Fortran 90, ANSI C 436.cactusADM对时空曲率由内部物质决定的爱因斯坦演化方程进行求解,爱因斯坦演化方程由10个标准ADM 3+1分解的二阶非线性偏微分方程组成。
437.leslie 3d流体力学 Fortran 90 LESlie3d是用来计算湍流的计算流体力学程序,437.leslie3d计算了一个如燃油注入燃烧室的时间分层混合流体。
444.namd 生物/分子 C++ NAMD是一个大型生物分子系统并行计算程序,444.namd模拟了了92224个原子组成的A-I载脂蛋白
447.dealII 有限元分析 C++ w/Boost lib deal.II是定位于自适应有限元及误差估计的C++库,447.dealII对非常系数的亥姆霍兹方程进行求解,它使用了基于二元加权误差估计生成最佳网格的自适应方法,该方程在3维得解
450.soplex 线形编程、优化 ANSI C++ SoPlex使用单纯形算法解线性方程
453.povray 影像光线追踪 ISO C++ POV-Ray是一个光线追踪渲染软件,453.povray渲染一幅1280x1024的反锯齿国际象棋棋盘图像
454.calculix 结构力学 Fortran 90 & C w/SPOOLES code CalculiX是一个用于线性及非线性三位结构力学的有限元分析软件,454.calculix计算了一个高速旋转的压缩盘片在离心力的作用下的应力和变形情况
459.Gems FDTD计算电磁学 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 481.wrf基于WRF(Weather Research and Forecastin)模型,对NCAR的数据进行了计算,数据包括了UTC 2001.06.11到UTC 2001.06.12以三小时为间隔的数据
482.sphinx3语音识别 C 语音识别

九、测试过程出错处理

解决方法:在配置文件cfg中的Portability Flags中设置416.gamess的编译参数

416.gamess=default=default=default: FPORTABILITY = -funconstrained-commons -std=legacy

解决方法:在配置文件cfg中的Portability Flags中设置447.dealII的编译参数 447.dealII=default=default=default: CXXPORTABILITY = -fpermissive

解决方法:在配置文件cfg中的Portability Flags中设置450.soplex的编译参数

450.soplex=default=default=default: CXXPORTABILITY = -std=c++03

解决方法:在配置文件cfg中的Portability Flags中设置481.wrf的编译参数 481.wrf=default=default=default: CPORTABILITY = -DSPEC_CPU_CASE_FLAG -DSPEC_CPU_LINUX FPORTABILITY = -std=legacy

specmake build 2> make.err | tee make.out /usr/bin/gcc -c -o av.o -DSPEC_CPU -DNDEBUG -DPERL_CORE -O2 -fno-strict-aliasing -DSPEC_CPU_LP64 -DSPEC_CPU_LINUX_X64 av.c In file included from /usr/include/stdio.h:936:0, from perlio.h:65, from iperlsys.h:51, from perl.h:2585, from av.c:22: /usr/include/x86_64-linux-gnu/bits/stdio2.h: In function ‘sprintf’: /usr/include/x86_64-linux-gnu/bits/stdio2.h:33:10: error: invalid use of ‘__builtin_va_arg_pack ()’ return __builtin___sprintf_chk (__s, __USE_FORTIFY_LEVEL - 1, ^ /usr/include/x86_64-linux-gnu/bits/stdio2.h: In function ‘snprintf’: /usr/include/x86_64-linux-gnu/bits/stdio2.h:64:10: error: invalid use of ‘__builtin_va_arg_pack ()’ return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1, ^ /usr/include/x86_64-linux-gnu/bits/stdio2.h: In function ‘fprintf’: /usr/include/x86_64-linux-gnu/bits/stdio2.h:97:10: error: invalid use of ‘__builtin_va_arg_pack ()’ return __fprintf_chk (__stream, __USE_FORTIFY_LEVEL - 1, __fmt, ^ /usr/include/x86_64-linux-gnu/bits/stdio2.h: In function ‘printf’: /usr/include/x86_64-linux-gnu/bits/stdio2.h:104:10: error: invalid use of ‘__builtin_va_arg_pack ()’ return __printf_chk (__USE_FORTIFY_LEVEL - 1, __fmt, __va_arg_pack ()); ^ /usr/include/x86_64-linux-gnu/bits/stdio2.h: In function ‘dprintf’: 原因是spec与gcc 版本不对应 ,gcc 相对于spec2006 来说gcc 版本过高,所以gcc降级

*** Error during benchmark setup for 429.mcf Setting up 445.gobmk ref base gcc43-64bit default: ERROR: Cannot create run directory for 445.gobmk: mkdir /home/nfs/zhaoan/spec/cpu2006/benchspec/CPU2006/445.gobmk/run/run_base_ref_gcc43-64bit.0005: Permission denied at /home/nfs/zhaoan/spec/cpu2006/bin/benchmark.pm line 2073

*** Error during benchmark setup for 445.gobmk Setting up 456.hmmer ref base gcc43-64bit default: ERROR: Cannot create run directory for 456.hmmer: mkdir /home/nfs/zhaoan/spec/cpu2006/benchspec/CPU2006/456.hmmer/run/run_base_ref_gcc43-64bit.0005: Permission denied at /home/nfs/zhaoan/spec/cpu2006/bin/benchmark.pm line 2073

*** Error during benchmark setup for 456.hmmer Setting up 458.sjeng ref base gcc43-64bit default: ERROR: Cannot create run directory for 458.sjeng: mkdir /home/nfs/zhaoan/spec/cpu2006/benchspec/CPU2006/458.sjeng/run/run_base_ref_gcc43-64bit.0005: Permission denied at /home/nfs/zhaoan/spec/cpu2006/bin/benchmark.pm line 2073 原因:由于在docker容器中是使用root权限编译的,在138上面再执行时用户是:wxsc ,所以权限有问题 修改:sudo chown -R wxsc:wxsc ./*

Running (#2) 445.gobmk ref base gcc43-64bit default /home/nfs/zhaoan/spec/cpu2006/bin/specinvoke -d /home/nfs/zhaoan/spec/cpu2006/benchspec/CPU2006/445.gobmk/run/run_base_ref_gcc43-64bit.0006 -e speccmds.err -o speccmds.stdout -f speccmds.cmd -C -q

Socket error Event: 32 Error: 10053. Connection closing…Socket close.

Connection closed by foreign host.

Disconnected from remote host(192.167.253.138) at 08:50:57. 解决方法:改为后台执行即可

1548641594.38: Contents of nph3.err 1548641594.38: **************************************** 1548641594.38: …/run_base_ref_gcc43-64bit.0009/hmmer_base.gcc43-64bit: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.27’ not found (required by …/run_base_ref_gcc43-64bit.0009/hmmer_base.gcc43-64bit) 解决方法:编译时改为静态链接 使用的config 是 mytest.cfg ,则修改mytest.cfg文件将 COPTIMIZE = -O2 -fno-strict-aliasing CXXOPTIMIZE = -O2 -fno-strict-aliasing FOPTIMIZE = -O2 -fno-strict-aliasing 改为: COPTIMIZE = -O2 -fno-strict-aliasing -static CXXOPTIMIZE = -O2 -fno-strict-aliasing -static FOPTIMIZE = -O2 -fno-strict-aliasing -static

1548726106.29: **************************************** 1548726106.29: Contents of exam29.err 1548726106.29: **************************************** 1548726106.29: STOP IN ABRT

1548726106.29: ****************************************

1548726106.29: *** Miscompare of exam29.out; for details see 1548726106.29: /cpu2006/benchspec/CPU2006/416.gamess/run/run_base_test_gcc43-64bit.0000/exam29.out.mis 1548726106.29: 0423: 1 0 0 -228.438026762 -228.438026762 0.585016182 0.000000000 1548726106.29: 1 0 0 -228.438026762 -228.438026762 2.057216987 0.000000000 1548726106.29: ^ 1548726106.29: 0424: ---------------START SECOND ORDER SCF--------------- 1548726106.29: 2 1 0 -13.398272306 215.039754456 0.019611730 2.138165837 1548726106.29: ^ 1548726106.29: 0425: 2 1 0 -228.975183270 -0.537156507 0.141897260 0.111481465 1548726106.29: ---------------START SECOND ORDER SCF--------------- 1548726106.29: ^ 1548726106.29: 0426: 3 2 0 -229.014081256 -0.038897986 0.064028396 0.079634004 1548726106.29: 3 2 0 -13.404086244 -0.005813938 0.000644098 0.008801378 1548726106.29: ^ 1548726106.29: 0427: 4 3 0 -229.036210679 -0.022129423 0.025840433 0.007697238 1548726106.29: 4 3 0 -13.404093666 -0.000007422 0.000028154 0.000448854 1548726106.30: ^ 1548726106.30: 0428: 5 4 0 -229.036777024 -0.000566345 0.008639408 0.001874192 1548726106.30: 5 4 0 -13.404093683 -0.000000017 0.000000370 0.000004470 1548726106.30: ^ 1548726106.30: 0429: 6 5 0 -229.036824895 -0.000047871 0.001734717 0.000979860 1548726106.30: 6 5 0 -13.404093683 -0.000000000 0.000000008 0.000000051 1548726106.30: ^ 1548726106.30: 0431: 7 6 0 -229.036831711 -0.000006816 0.000315932 0.000297576 1548726106.30: ----------------- 1548726106.30: ^ 1548726106.30: 0432: 8 7 0 -229.036832335 -0.000000624 0.000112760 0.000083271 1548726106.30: DENSITY CONVERGED 1548726106.30: ^ 1548726106.30: 0433: 9 8 0 -229.036832426 -0.000000092 0.000074046 0.000042607 1548726106.30: ----------------- 1548726106.30: ^ 1548726106.30: Benchmark Times: 1548726106.30: Start: Tue Jan 29 09:41:45 2019 (1548726105) 1548726106.30: Stop: Tue Jan 29 09:41:45 2019 (1548726105) 1548726106.30: Elapsed: 00:00:00 (0) 1548726106.30: Reported: 0 39727000 0.039727 1548726106.30: Error 416.gamess base test ratio=-0.00, runtime=0.039727, power=0.00w, temp=0.00 deg, humidity=0.00% 1548726106.30: Invalid run; unable to continue. 解决方法: 这个问题通过修改相应的config 中编译优化选项 将 COPTIMIZE = -O2 -fno-strict-aliasing -static CXXOPTIMIZE = -O2 -fno-strict-aliasing -static FOPTIMIZE = -O2 -fno-strict-aliasing -static 改为: COPTIMIZE = -O0 -fno-strict-aliasing -static CXXOPTIMIZE = -O0 -fno-strict-aliasing -static FOPTIMIZE = -O0 -fno-strict-aliasing -static

cd /speccpu2006-v1.0.1/benchspec/CPU2006/416.gamess/run/build_base_x86_64_linux.0000 specinvoke -n -f speccmds.cmd echo 3 > /proc/sys/vm/drop_caches #清理缓存 遇到测试项目编译不过,可以通过修改测试源码或者更改gcc、c++等编译器的版本进行测试

十、其他测试软件相关链接

标签: lb32lbm船舱液位传感器utc9012晶体管900晶体管

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台