0%

提取 SPEC CPU2006 的执行命令

1.单独运行 SPEC CPU Int Float 测试程序

以 bzip2 为例说明

  • 编译
    首先进入 SPEC 的安装目录(下面即cpu2006)
1
2
3
4
5
$ cd /cpu2006/
$ . ./shrc
$ cd config
$ cp Example-linux64-amd64-gcc43.cfg mytest.cfg
$ runspec --config=mytest.cfg --action=build --tune=base bzip2
  • 运行
1
$ runspec --config=mytest.cfg --size=ref --noreportable --tune=base --iterations=1 bzip2

size 参数共有三个,分别是 test 、train 、ref

2.提取 SPEC CPU Int Float运行命令

一共有两种方法

  1. 完全动手,彻底消除spec神秘感(我没使用这个方法)

先利用上述方法运行 bzip2,然后运行下面的命令:

1
ps -ef | grep bzip

可以看到真实的命令行和进程路径,提取出来,依样画葫芦即可。

对于 bzip2,提取到的命令行类似如下:

1
run_base_test_cpu2006.0000/bzip2_base.cpu2006 input.combined 280
  1. 使用 SPEC 自带的命令
    以执行 gcc 例:
1
2
# cd YOUR_SPEC_ROOT/benchspec/CPU2006/403.gcc/run/run_base_ref_cpu2006.0000
#specinvoke -n

可以得到如下命令行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Starting run for copy #0
../run_base_ref_amd64-m64-gcc43-nn.0000/gcc_base.amd64-m64-gcc43-nn 166.i -o 166.s > 166.out 2>> 166.err
# Starting run for copy #0
../run_base_ref_amd64-m64-gcc43-nn.0000/gcc_base.amd64-m64-gcc43-nn 200.i -o 200.s > 200.out 2>> 200.err
# Starting run for copy #0
../run_base_ref_amd64-m64-gcc43-nn.0000/gcc_base.amd64-m64-gcc43-nn c-typeck.i -o c-typeck.s > c-typeck.out 2>> c-typeck.err
# Starting run for copy #0
../run_base_ref_amd64-m64-gcc43-nn.0000/gcc_base.amd64-m64-gcc43-nn cp-decl.i -o cp-decl.s > cp-decl.out 2>> cp-decl.err
# Starting run for copy #0
../run_base_ref_amd64-m64-gcc43-nn.0000/gcc_base.amd64-m64-gcc43-nn expr.i -o expr.s > expr.out 2>> expr.err
# Starting run for copy #0
../run_base_ref_amd64-m64-gcc43-nn.0000/gcc_base.amd64-m64-gcc43-nn expr2.i -o expr2.s > expr2.out 2>> expr2.err
# Starting run for copy #0
../run_base_ref_amd64-m64-gcc43-nn.0000/gcc_base.amd64-m64-gcc43-nn g23.i -o g23.s > g23.out 2>> g23.err
# Starting run for copy #0
../run_base_ref_amd64-m64-gcc43-nn.0000/gcc_base.amd64-m64-gcc43-nn s04.i -o s04.s > s04.out 2>> s04.err
# Starting run for copy #0
../run_base_ref_amd64-m64-gcc43-nn.0000/gcc_base.amd64-m64-gcc43-nn scilab.i -o scilab.s > scilab.out 2>> scilab.err

3. 我的做法

由于我也是新手,所以也是一个个执行玩然后用 2 中的方法2提取指令

当然也不是手动输入,写了一个简单的 bash 脚本实现了自动运行所有 benchmark ,然后写了另一个脚本打印运行命令

以下是部分脚本:

  • auto_run.sh
1
2
3
4
5
6
7
#!/bin/sh

runspec --config=mytest.cfg --size=ref --noreportable --tune=base --iterations=1 483
runspec --config=mytest.cfg --size=ref --noreportable --tune=base --iterations=1 998
runspec --config=mytest.cfg --size=ref --noreportable --tune=base --iterations=1 999

./auto_print.sh
  • auto_print.sh
1
2
3
4
5
6
7
#!/bin/sh

cd ../benchspec/CPU2006/999.specrand/run/run_base_ref_amd64-m64-gcc43-nn.0000/
specinvoke -n
pwd
cd $SPEC/config/
echo "*************************"

Welcome to my other publishing channels