spec 2006学习记录
1. 安装依赖包:
apt-get install gcc g++ gfortran libbz2-dev
2.解压缩speccpu2006测试工具包,并附执行权限:
tar xvf speccpu2006-v1.0.1-newest.tar
chmod -R a+x /home/speccpu2006-v1.0.1
3.编辑 tools/src/buildtools 文件,将311行注释,并添加一行export PERLFLAGS="-A libs=-lm -A libs=-ldl"
// export LD_LIBRARY_PATH DYLD_LIBRARY_PATH
export PERLFLAGS="-A libs=-lm -A libs=-ldl"
4.修改tools/src/make-3.8.0/glob/glob.c文件,
在209行“#if !defined __alloca && !defined GNU_LIBRARY”和230行“#endif”前添加“//”注释掉
//#if defined __alloca && !defined __GNU_LIBRARY__
# ifdef __GNUC__
# undef alloca
# define alloca(n) __builtin_alloca (n)
# else /* Not GCC. */
# ifdef HAVE_ALLOCA_H
# include <alloca.h>
# else /* Not HAVE_ALLOCA_H. */
# ifndef _AIX
# ifdef WINDOWS32
# include <malloc.h>
# else
extern char *alloca ();
# endif /* WINDOWS32 */
# endif /* Not _AIX. */
# endif /* sparc or HAVE_ALLOCA_H. */
# endif /* GCC. */
# define __alloca alloca
# ifdef __GNUC__
# undef alloca
# define alloca(n) __builtin_alloca (n)
# else /* Not GCC. */
# ifdef HAVE_ALLOCA_H
# include <alloca.h>
# else /* Not HAVE_ALLOCA_H. */
# ifndef _AIX
# ifdef WINDOWS32
# include <malloc.h>
# else
extern char *alloca ();
# endif /* WINDOWS32 */
# endif /* Not _AIX. */
# endif /* sparc or HAVE_ALLOCA_H. */
# endif /* GCC. */
# define __alloca alloca
//#endif
5.安装speccpu2006:
./install.sh //在弹出的提示信息中,选择yes,后回车
6.初始化环境变量:
[root@localhost /speccpu2006-v1.0.1]# source shrc
7.检查SPEC CPU2006是否安装成功
root@test-attft2000c8f4:~/speccpu2006-v1.0.1# . ./shrc
root@test-attft2000c8f4:~/speccpu2006-v1.0.1# runspec -V
runspec v4662 - Copyright 1999-2006 Standard Performance Evaluation Corporation
Using 'unknown' tools
This is the SPEC CPU2006 benchmark tools suite.
Version summary:
CPU2006 version: 1.0.1
Benchmarks version: 098a
Tools version: 098a
runspec version: 4662 ($Id: runspec 4662 2006-07-24 21:10:20Z cloyce $)
Tools information:
Tools package installed: unknown
File locking method: LockFileEx (network-safe)
Mode | UID | GID | Size | Modified Date | Name
0755 | 0 | 0 | 218536 | 31-Nov-2023 07:12:48 | specmake
0755 | 0 | 0 | 1330400 | 31-Nov-2023 07:12:48 | specperl
0755 | 0 | 0 | 26568 | 31-Nov-2023 07:12:48 | specinvoke
0755 | 0 | 0 | 30664 | 31-Nov-2023 07:12:48 | specinvoke_pm
0775 | 0 | 0 | 136344 | 31-Nov-2023 07:12:48 | specbzip2
0755 | 0 | 0 | 34808 | 31-Nov-2023 07:12:48 | specmd5sum
0755 | 0 | 0 | 7607 | 31-Nov-2023 07:13:19 | specdiff
0755 | 0 | 0 | 85740 | 31-Nov-2023 07:13:19 | specpp
0755 | 0 | 0 | 88872 | 31-Nov-2023 07:13:19 | runspec
0775 | 1000 | 1000 | 1143 | 16-Nov-2018 01:41:28 | runspec.bat
Version info for specinvoke (/root/speccpu2006-v1.0.1/bin/specinvoke): Version: 4205
Version info for specmake (/root/speccpu2006-v1.0.1/bin/specmake): GNU Make 3.80spec
Version info for specbzip2 (/root/speccpu2006-v1.0.1/bin/specbzip2): bzip2 v1.0.3, 15-Feb-2005
Version info for specpp (/root/speccpu2006-v1.0.1/bin/specperl): filepp version 1.7.1SPEC
Version info for specperl (/root/speccpu2006-v1.0.1/bin/specperl): This is specperl, v5.8.7 built for aarch64-linux
For more detail on specperl, say 'specperl -V'
root@test-attft2000c8f4:~/speccpu2006-v1.0.1#
8.选择相应配置文件进行测试:
[root@localhost /speccpu2006-v1.0.1/config]# cd config/
[root@localhost /speccpu2006-v1.0.1/config]# cp arm64.cfg test.cfg //根据架构选择不通的cfg文件
[root@localhost /speccpu2006-v1.0.1/config]# runspec -c arm64.cfg -n 1 -r 1 all //单线程
[root@localhost /speccpu2006-v1.0.1/config]# runspec -c arm64.cfg -n 1 -r N all //多线程
9. SPEC2006测试参数详解
单个项目测试
runspec -c test.cfg 429.mcf --rate 4 -n 1 --noreportable
int整数测试
runspec -c test.cfg int --rate 8 -n 1 -size=ref --noreportable --output_format all
fp浮点数测试
runspec -c test.cfg fp --rate 8 -n 1 -size=ref --noreportable --output_format all
全项目测试
runspec -c test.cfg --rate 8 --noreportable --size=ref --tune=base -o text,screen,pdf -I --iterations=1 all
1)ref:测试规模
测试规模有test,ref,train其中test最小跑的时间最短,如果测试编译器正确性的时候可以用test规模,但是想测试性能时候用ref
2)iterations=3次:测试次数
编译器性能稳定时候测一次就行,也可以写成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 : 表示测试中,如遇报错,略过错误继续测试;文章来源:https://www.toymoban.com/news/detail-736126.html
注意测试前清空缓存:
文章来源地址https://www.toymoban.com/news/detail-736126.html
echo 3 > /proc/sys/vm/drop_caches //清理缓存
到了这里,关于SPEC2006学习使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!