diff --git a/benchmark/make.sh b/benchmark/make.sh index 909391a072ae24d5e4bd79f68cfa6c90a20e3ff2..b88874ff0a11348094b17e904dc3aec3b1ce3982 100755 --- a/benchmark/make.sh +++ b/benchmark/make.sh @@ -225,6 +225,21 @@ TWO_EXP_27=134217728 TWO_EXP_28=268435456 +# ------------------------------------------------------------------------------ +# Saving the rfile --- TODO: pbench should do this + +save_rfile () { + # TEMPORARY HACK + cp _results/chart-1.pdf $1 + #takes as argument the name of the pdf + rbase=`basename $1 .pdf` + rfile=${rbase}.r + cp _results/chart-all.r ${rfile} + sed -i -e "s#_results/chart-1#${rbase}#g" ${rfile} + echo "Produced ${rfile}" +} + + # ------------------------------------------------------------------------------ # Fixing the prog field in a result file. @@ -862,6 +877,7 @@ plot_alloc () { -series ${series}length \ -input $result \ -output $graphics + save_rfile $graphics } # --xlog @@ -899,6 +915,7 @@ plot_initm_map_iter_simple () { -series ${series}k \ -input $result \ -output $graphics + save_rfile $graphics } # ------------------ @@ -931,6 +948,7 @@ plot_initm_map_iter () { -series ${series}k \ -input $result \ -output $graphics + save_rfile $graphics } @@ -964,6 +982,7 @@ plot_pushm_iter_simple () { -series ${series}k \ -input $result \ -output $graphics + save_rfile $graphics } @@ -997,6 +1016,7 @@ plot_pushm_iter () { -series ${series}k \ -input $result \ -output $graphics + save_rfile $graphics } # ------------------ @@ -1029,6 +1049,7 @@ plot_pushm_popm () { -series ${series}k \ -input $result \ -output $graphics + save_rfile $graphics } @@ -1042,12 +1063,12 @@ run_get () { CMD="prun -prog $prog \ -n $TWO_EXP_15,$TWO_EXP_18,$TWO_EXP_20,$TWO_EXP_24,$TWO_EXP_26 \ -ops 100$K \ - -runs 3 \ -distance -1 \ -output $result" ${CMD} -seq BraunTree ${CMD} --append -seq ParrayNarytree -k 8,16,32 } +# -runs 3 \ # -quota 0.05 \ # Array,Vector, @@ -1069,6 +1090,7 @@ plot_get () { -series ${series}seq,k \ -input $result \ -output $graphics + save_rfile $graphics } # ------------------ @@ -1081,13 +1103,12 @@ run_set () { CMD="prun -prog $prog \ -n $TWO_EXP_15,$TWO_EXP_18,$TWO_EXP_20,$TWO_EXP_24,$TWO_EXP_26 \ -ops 100$K \ - -runs 3 \ -distance -1 \ -output $result" ${CMD} -seq BraunTree ${CMD} --append -seq ParrayNarytree -k 8,16,32 } - +# -runs 3 \ # -quota 0.05 \ # Array,Vector, # ESek_get,PSek_get,PSek_reach,FmlibRbtrees,NumeriChunk, @@ -1108,6 +1129,7 @@ plot_set () { -series ${series}seq,k \ -input $result \ -output $graphics + save_rfile $graphics } # ------------------ @@ -1116,22 +1138,26 @@ run_getk () { benchmark=get make src/$benchmark run_prologue - result="getk.out" + result="$1" CMD="prun -prog $prog \ -n $TWO_EXP_24 \ -ops 100$K \ - -quota 0.05 \ -distance -1 \ -output $result" - ${CMD} -seq ParrayNarytree,PdarrayNarytree -k 4,8,16,32,64,128,256,512,1024,2048 + ${CMD} -seq $2 -k 4,8,16,32,64,128,256,512,1024,2048 + # ,PdarrayNarytree + # -quota 0.05 \ } #ParrayNarytree, +run_getks () { + run_getk getk_pure.out ParrayNarytree + run_getk getk_effect.out PdarrayNarytree +} + plot_getk () { - #result="$1" - # graphics="$2" - result="getk.out" - graphics="getk.pdf" + result="$1" + graphics="$2" series="$3" echo $graphics > $home/.graphics pplot scatter \ @@ -1141,31 +1167,42 @@ plot_getk () { -input $result \ -output $graphics # -series ${series}seq \ + save_rfile $graphics +} +plot_getks () { + plot_getk getk_pure.out getk_pure.pdf "$3" + plot_getk getk_effect.out getk_effect.pdf "$3" } + # ------------------ run_setk () { benchmark=set make src/$benchmark run_prologue - result="setk.out" + result="$1" CMD="prun -prog $prog \ -n $TWO_EXP_24 \ -ops 100$K \ -quota 0.05 \ -distance -1 \ -output $result" - ${CMD} -seq ParrayNarytree,PdarrayNarytree -k 4,8,16,32,64,128,256,512,1024,2048 + ${CMD} -seq $2 -k 4,8,16,32,64,128,256,512,1024,2048 +} + +run_setks () { + run_setk setk_pure.out ParrayNarytree + run_setk setk_effect.out PdarrayNarytree } + +# #ParrayNarytree, plot_setk () { - #result="$1" - # graphics="$2" - result="setk.out" - graphics="setk.pdf" + result="$1" + graphics="$2" series="$3" echo $graphics > $home/.graphics pplot scatter \ @@ -1175,7 +1212,12 @@ plot_setk () { -input $result \ -output $graphics # -series ${series}seq \ + save_rfile $graphics +} +plot_setks () { + plot_setk setk_pure.out setk_pure.pdf "$3" + plot_setk setk_effect.out setk_effect.pdf "$3" } diff --git a/benchmark/src/get/Main.ml b/benchmark/src/get/Main.ml index 50ba15e2f3f5091c8c16f2617a4e2e0fd8295455..acb09404cf457eb3cf11fb5dcc8e6031fc5b9854 100644 --- a/benchmark/src/get/Main.ml +++ b/benchmark/src/get/Main.ml @@ -123,7 +123,7 @@ let benchmark = done; sink !r - end else if seq = "BraunTree" then begin (* warning: very slow *) + end else if seq = "BraunTree" then begin let s = (Flex_array.init n (fun i -> i)) in fun () -> diff --git a/benchmark/src/set/Main.ml b/benchmark/src/set/Main.ml index 67572d703606474aba323314324080d42a576695..fe4fbeae88792e5b5826b89a0251bc2d0a4626ea 100644 --- a/benchmark/src/set/Main.ml +++ b/benchmark/src/set/Main.ml @@ -105,6 +105,20 @@ let benchmark = (* TODO: do we need this sink to avoid all the loop being compiled away? *) sink (Array.get s 0) + end else if seq = "BraunTree" then begin + + let s = ref (Flex_array.init n (fun i -> i)) in + fun () -> + (* This is the timed section. *) + (* Calls to [set i] for each target index. *) + for index = 0 to ops - 1 do + let j = a.(index) in + let value = index in + s := Flex_array.set !s j value; + done; + (* TODO: do we need this sink to avoid all the loop being compiled away? *) + sink (Flex_array.get !s 0) + end else if seq = "Fmarray" then begin (* warning: very slow *) let s = ref (Array.init n (fun i -> i)) in