Speckleは、SPEC CPU2006ベンチマークのコンパイルと実行を簡素化するためのツールセットである。前回 は、基本的なコンパイルの方法を調査した。
実際に実行してみる
Speckleを実際にシミュレーションしてみる。Spike はシミュレーションも遅いし、コマンドラインオプションも古くなっている気がするので少し改造してQEMUで動かしてみることにした。
以下のように、 gen_binaries.sh を少し変更した。
diff --git a/gen_binaries.sh b/gen_binaries.sh index d53550d..8aff41d 100755 --- a/gen_binaries.sh +++ b/gen_binaries.sh @@ -13,7 +13,7 @@ fi CONFIG=riscv CONFIGFILE=${CONFIG}.cfg -RUN="spike pk -c " +RUN="qemu-riscv64 " CMD_FILE=commands.txt INPUT_TYPE=test @@ -135,9 +135,11 @@ if [ "$runFlag" = true ]; then for input in "${commands[@]}"; do if [[ ${input:0:1} != '#' ]]; then # allow us to comment out lines in the cmd files + log=$(echo "${b}_${input}" | sed -e 's/\./_/g' -e 's/ /_/g' -e 's/-/_/g' -e 's|/|_|g').log echo "~~~Running ${b}" echo " ${RUN} ${SHORT_EXE}_base.${CONFIG} ${input}" - eval ${RUN} ${SHORT_EXE}_base.${CONFIG} ${input} + echo " Log: ${log}" + ${RUN} ${SHORT_EXE}_base.${CONFIG} ${input} >> ${log} 2>&1 fi done
この時、 ./gen_binaries.sh --compile --copy として、copyも実行しておかないと正しく実行できない。
それぞれのベンチマークの入力に対してログを取りたかったので、ログファイルを指定した。${input} には余計な文字がたくさん入っているので、とりあえず全部置換する。
この状態で実行すると、個々のベンチマークでログを取ることができた(CPU2006側にログが残る仕様になっている)
find . -name "*.log" | grep run_base_test | xargs ls -lt -rw-r--r-- 1 msyksphinz personal 34699 10月 26 01:52 ./483.xalancbmk/run/run_base_test_riscv.0000/483_xalancbmk__v_test_xml_xalanc_xsl.log -rw-r--r-- 1 msyksphinz personal 779 10月 26 01:52 ./473.astar/run/run_base_test_riscv.0000/473_astar_lake_cfg.log -rw-r--r-- 1 msyksphinz personal 1472 10月 26 01:52 ./471.omnetpp/run/run_base_test_riscv.0000/471_omnetpp_omnetpp_ini.log -rw-r--r-- 1 msyksphinz personal 4619 10月 26 01:52 ./464.h264ref/run/run_base_test_riscv.0000/464_h264ref__d_foreman_test_encoder_baseline_cfg.log -rw-r--r-- 1 msyksphinz personal 175 10月 26 01:51 ./462.libquantum/run/run_base_test_riscv.0000/462_libquantum_33_5.log -rw-r--r-- 1 msyksphinz personal 3839 10月 26 01:51 ./458.sjeng/run/run_base_test_riscv.0000/458_sjeng_test_txt.log -rw-r--r-- 1 msyksphinz personal 622 10月 26 01:51 ./456.hmmer/run/run_base_test_riscv.0000/456_hmmer___fixed_0___mean_325___num_45000___sd_200___seed_0_bombesin_hmm.log -rw-r--r-- 1 msyksphinz personal 12 10月 26 01:50 './445.gobmk/run/run_base_test_riscv.0000/445_gobmk___quiet___mode_gtp_<_dniwog_tst.log' -rw-r--r-- 1 msyksphinz personal 12 10月 26 01:50 './445.gobmk/run/run_base_test_riscv.0000/445_gobmk___quiet___mode_gtp_<_cutstone_tst.log' -rw-r--r-- 1 msyksphinz personal 12 10月 26 01:50 './445.gobmk/run/run_base_test_riscv.0000/445_gobmk___quiet___mode_gtp_<_connection_rot_tst.log' -rw-r--r-- 1 msyksphinz personal 12 10月 26 01:50 './445.gobmk/run/run_base_test_riscv.0000/445_gobmk___quiet___mode_gtp_<_connection_tst.log' -rw-r--r-- 1 msyksphinz personal 12 10月 26 01:50 './445.gobmk/run/run_base_test_riscv.0000/445_gobmk___quiet___mode_gtp_<_connect_rot_tst.log' -rw-r--r-- 1 msyksphinz personal 12 10月 26 01:50 './445.gobmk/run/run_base_test_riscv.0000/445_gobmk___quiet___mode_gtp_<_connect_tst.log' -rw-r--r-- 1 msyksphinz personal 12 10月 26 01:50 './445.gobmk/run/run_base_test_riscv.0000/445_gobmk___quiet___mode_gtp_<_capture_tst.log' -rw-r--r-- 1 msyksphinz personal 541 10月 26 01:50 ./429.mcf/run/run_base_test_riscv.0000/429_mcf_inp_in.log -rw-r--r-- 1 msyksphinz personal 51 10月 26 01:50 ./403.gcc/run/run_base_test_riscv.0000/403_gcc_cccp_in__o_cccp_s.log -rw-r--r-- 1 msyksphinz personal 672 10月 26 01:50 ./401.bzip2/run/run_base_test_riscv.0000/401_bzip2_dryer_jpg_2.log -rw-r--r-- 1 msyksphinz personal 597 10月 26 01:50 ./401.bzip2/run/run_base_test_riscv.0000/401_bzip2_input_program_5.log -rw-r--r-- 1 msyksphinz personal 13825 10月 26 01:50 ./400.perlbench/run/run_base_test_riscv.0000/400_perlbench__I___I__lib_test_pl.log -rw-r--r-- 1 msyksphinz personal 201 10月 26 01:50 ./400.perlbench/run/run_base_test_riscv.0000/400_perlbench__I___I__lib_regmesg_pl.log -rw-r--r-- 1 msyksphinz personal 568 10月 26 01:50 ./400.perlbench/run/run_base_test_riscv.0000/400_perlbench__I___I__lib_ref_pl.log -rw-r--r-- 1 msyksphinz personal 117 10月 26 01:50 ./400.perlbench/run/run_base_test_riscv.0000/400_perlbench__I___I__lib_redef_pl.log -rw-r--r-- 1 msyksphinz personal 66927 10月 26 01:50 ./400.perlbench/run/run_base_test_riscv.0000/400_perlbench__I___I__lib_pack_pl.log -rw-r--r-- 1 msyksphinz personal 4346 10月 26 01:50 ./400.perlbench/run/run_base_test_riscv.0000/400_perlbench__I___I__lib_makerand_pl.log -rw-r--r-- 1 msyksphinz personal 279 10月 26 01:50 ./400.perlbench/run/run_base_test_riscv.0000/400_perlbench__I___I__lib_gv_pl.log -rw-r--r-- 1 msyksphinz personal 171 10月 26 01:50 ./400.perlbench/run/run_base_test_riscv.0000/400_perlbench__I___I__lib_attrs_pl.log
例えば1つを抽出すると以下のようになっており、正しく実行できていそうだ。
cat ./400.perlbench/run/run_base_test_riscv.0000/400_perlbench__I___I__lib_attrs_pl.log 1..29 ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 ok 11 ok 12 ok 13 ok 14 ok 15 ok 16 ok 17 ok 18 ok 19 ok 20 ok 21 ok 22 ok 23 ok 24 ok 25 ok 26 ok 27 ok 28 ok 29