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运行命令
一共有两种方法
- 完全动手,彻底消除spec神秘感(我没使用这个方法)
先利用上述方法运行 bzip2,然后运行下面的命令:
可以看到真实的命令行和进程路径,提取出来,依样画葫芦即可。
对于 bzip2,提取到的命令行类似如下:
1
| run_base_test_cpu2006.0000/bzip2_base.cpu2006 input.combined 280
|
- 使用 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 ,然后写了另一个脚本打印运行命令
以下是部分脚本:
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
|
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 "*************************"
|