问题来源:为了验证GEM5执行banchmark需要的时间是否可以容忍,故摸索了下gem5下如何运行spec2006,分析可用性。
步骤一 (编译spec2006):
1. 购买或下载spec2006源码;
2. 验证压缩文件的完整性
$ md5sum spec2006v1_0.tar.bz2
61a69f45ee38d1030a1c217dde782253 spec2006v1_0.tar.bz2
3. 解压
$ tar -jxvf spec2006v1_0.tar.bz2
默认解压到CPU2006v1.0.1目录
4. 赋权限
CPU2006v1.0.1/目录下:
chmod a+x install.sh
CPU2006v1.0.1/bin/目录下:
chmod a+x relocate
CPU2006v1.0.1/tools/bin/linux-suse101-AMD64/目录下:
chmod a+x spec*
chmod a+x description
5. 安装
CPU2006v1.0.1/下执行: ./install.sh
6.编译(build)一个benchmark(bzip2为例)获得bzip2_base.amd64-m64-gcc41-nn
命令:cd config(首先进入路径)
命令:cp linux64-amd64-gcc41.cfg experiment5.cfg
7.安装g++, gfortran:
输入命令:sudo apt-get install g++
输入命令:sudo apt-get install gfortran
通过命令“gfortran -v”,可以查看gfortran是否安装成功。
注意:通过拷贝linux64-amd64-gcc41.cfg成为experiment5.cfg,进行bzip2的build,默认是动态编译,而在gem5运行build好的bzip2时应该是静态编译好的exe文件,所以在编译bzip2时,应该选择静态编译,那么如何修改呢?
修改experiment5.cfg文件中的:
修改编译器的路径:
#####################################################################
#
# Compiler selection
#
#####################################################################
CC = /usr/bin/gcc
CXX = /usr/bin/g++
FC = /usr/bin/gfortran
将编译选项改为静态:
#####################################################################
# Optimization
#####################################################################
## Base is low opt
default=base=default=default:
COPTIMIZE = -O2 -static
CXXOPTIMIZE = -O2 -static
FOPTIMIZE = -O2 -static
命令(build): runspec --config=experiment5.cfg --action=build --tune=base bzip2
如果输入runspec提示找不到命令时(即提示:runspec:command not found)错误是,需要退回spec的按装目录,即退回到CPU2006v1.0.1目录,输入命令:
.空格./shrc
编译过后进入目录:
命令:cd benchspec/
命令:cd CPU2006
命令: cd 401.bzip2/
可以看见 401.bzip2文件中多了两个文件夹 exe , build(ls命令查看)
7.运行:首先进入目录 cd /home/danny/spec2006/CPU2006v1.0.1/config
命令: runspec --config=experiment5.cfg --size=test --noreportable --tune=base --iterations=1 bzip2
含义:noreportable 保证只运行一个benchmark而不是所有的那31个benchmark(spec 2006有31个benchmark)
运行结果:
runspec v4662 - Copyright 1999-2006 Standard Performance Evaluation Corporation
Using 'linux-suse101-AMD64' tools
Reading MANIFEST... 17910 files
Loading runspec modules...............
Locating benchmarks...found 31 benchmarks in 12 benchsets.
Locating output formats: ASCII, config, CSV, flags, HTML, mail, PDF, PostScript, raw, Screen, Submission Check
Reading config file '/home/danny/spec2006/CPU2006v1.0.1/config/experiment5.cfg'
Benchmarks selected: 401.bzip2
Compiling Binaries
Up to date 401.bzip2 test base amd64-m64-gcc41-nn default
Parsing Flags
Looking at 401.bzip2 base amd64-m64-gcc41-nn default: done
Flag Parsing Complete
Setting Up Run Directories
Setting up 401.bzip2 test base amd64-m64-gcc41-nn default: created (run_base_test_amd64-m64-gcc41-nn.0000)
Running Benchmarks
Running 401.bzip2 test base amd64-m64-gcc41-nn default
/home/danny/spec2006/CPU2006v1.0.1/bin/specinvoke -d /home/danny/spec2006/CPU2006v1.0.1/benchspec/CPU2006/401.bzip2/run/run_base_test_amd64-m64-gcc41-nn.0000 -e speccmds.err -o speccmds.stdout -f speccmds.cmd -C
/home/danny/spec2006/CPU2006v1.0.1/bin/specinvoke -E -d /home/danny/spec2006/CPU2006v1.0.1/benchspec/CPU2006/401.bzip2/run/run_base_test_amd64-m64-gcc41-nn.0000 -c 1 -e compare.err -o compare.stdout -f compare.cmd
Success: 1x401.bzip2
Producing Reports
mach: default
ext: amd64-m64-gcc41-nn
size: test
set: int
format: raw -> /home/danny/spec2006/CPU2006v1.0.1/result/CINT2006.003.test.rsf
format: ASCII -> /home/danny/spec2006/CPU2006v1.0.1/result/CINT2006.003.test.txt
set: fp
The log for this run is in /home/danny/spec2006/CPU2006v1.0.1/result/CPU2006.003.log
runspec finished at Wed Feb 15 16:35:25 2017; 37 total seconds elapsed
./build/X86/gem5.opt ./configs/example/se.py -c /home/danny/spec2006/CPU2006v1.0.1/benchspec/CPU2006/401.bzip2/exe/bzip2_base.amd64-m64-gcc41-nn -o /home/danny/spec2006/CPU2006v1.0.1/benchspec/CPU2006/401.bzip2/data/test/input/control