diff --git a/collect_data.sh b/collect_data.sh index 9444841e2a10ff2fa6a42cd9ca6078a487f78759..452e8b4072de714f990670ea4cb8b66b1bc2159d 100755 --- a/collect_data.sh +++ b/collect_data.sh @@ -17,7 +17,15 @@ get_info() { } perforate() { - $PERF -a -o "$2" -s "$3" -l "$4" "$1" + if [ "$1" = "--nopluto" ]; then + shift + $PERF -e -p -g -o "$2" -s "$3" -l "$4" "$1" + elif [ "$1" = "--noperf" ]; then + shift + $PERF -e -g -P -o "$2" "$1" + else + $PERF -a -o "$2" -s "$3" -l "$4" "$1" + fi } compile() { @@ -29,214 +37,143 @@ correlation() { # accurate baseline # FIXME: baseline is currently without pluto, we need also accurate+pluto +baseline() { output="$(dirname ${target})/$(basename ${target})" - compile "${output}.c" "${output}" "-O3" - printf "correlation,,," >> ${LOG} + type=baseline + if [ "$1" = "--pluto" ]; then + perforate --noperf "${target}.c" "${output}_baseline.c" + type=plutobaseline + else + cat "${target}.c" > "${output}_baseline.c" + fi + compile "${output}_baseline.c" "${output}" "codes/${code}/data.o" + printf "${code},${type},,," >> ${LOG} ./${output} >> ${LOG} +} +permute() { get_scop "${target}.c" "${target}_perf.c" get_info "${target}.c.openscop" | \ while read x y; do + # pluto output="$(dirname ${target})/${x}_${y}_$(basename ${target})" perforate "${target}.c" "${output}.c" "$x" "$y" echo compile "${output}.c" "${output}" - compile "${output}.c" "${output}" "-O3" - printf "correlation,%s,%s," "${x}" "${y}" >> ${LOG} + compile "${output}.c" "${output}" "codes/${code}/data.o" + printf "${code},perfpluto,%s,%s," "${x}" "${y}" >> ${LOG} + ./${output} >> ${LOG} + # no pluto + perforate --nopluto "${target}.c" "${output}.c" "$x" "$y" + echo compile "${output}.c" "${output}" + compile "${output}.c" "${output}" "codes/${code}/data.o" + printf "${code},perf,%s,%s," "${x}" "${y}" >> ${LOG} ./${output} >> ${LOG} done } +correlation() { + code=correlation + target="codes/${code}/${code}" + + baseline + baseline --pluto + + permute +} + jacobi_2d() { - target=codes/jacobi-2d/jacobi-2d + code=jacobi-2d + target="codes/${code}/${code}" - # accurate - output="$(dirname ${target})/$(basename ${target})" - compile "${output}.c" "${output}" "codes/jacobi-2d/data.o" - printf "jacobi-2d,,," >> ${LOG} - ./${output} >> ${LOG} + baseline + baseline --pluto - get_scop "${target}.c" "${target}_perf.c" - get_info "${target}.c.openscop" | \ - while read x y; do - output="$(dirname ${target})/${x}_${y}_$(basename ${target})" - perforate "${target}.c" "${output}.c" "$x" "$y" - echo compile "${output}.c" "${output}" - compile "${output}.c" "${output}" "codes/jacobi-2d/data.o" - printf "jacobi-2d,%s,%s," "${x}" "${y}" >> ${LOG} - ./${output} >> ${LOG} - done + permute } deriche() { - target=codes/deriche/deriche + code=deriche + target="codes/${code}/${code}" - # accurate - output="$(dirname ${target})/$(basename ${target})" - compile "${output}.c" "${output}" "codes/deriche/data.o" - printf "deriche,,," >> ${LOG} - ./${output} >> ${LOG} + baseline + baseline --pluto - get_scop "${target}.c" "${target}_perf.c" - get_info "${target}.c.openscop" | \ - while read x y; do - output="$(dirname ${target})/${x}_${y}_$(basename ${target})" - perforate "${target}.c" "${output}.c" "$x" "$y" - echo compile "${output}.c" "${output}" - compile "${output}.c" "${output}" "codes/deriche/data.o" - printf "deriche,%s,%s," "${x}" "${y}" >> ${LOG} - ./${output} >> ${LOG} - done + permute } floyd_warshall() { - target=codes/floyd-warshall/floyd-warshall + code=floyd-warshall + target="codes/${code}/${code}" - # accurate - output="$(dirname ${target})/$(basename ${target})" - compile "${output}.c" "${output}" "codes/floyd-warshall/data.o" - printf "floyd_warshall,,," >> ${LOG} - ./${output} >> ${LOG} + baseline + baseline --pluto - get_scop "${target}.c" "${target}_perf.c" - get_info "${target}.c.openscop" | \ - while read x y; do - output="$(dirname ${target})/${x}_${y}_$(basename ${target})" - perforate "${target}.c" "${output}.c" "$x" "$y" - echo compile "${output}.c" "${output}" - compile "${output}.c" "${output}" "codes/floyd-warshall/data.o" - printf "floyd_warshall,%s,%s," "${x}" "${y}" >> ${LOG} - ./${output} >> ${LOG} - done + permute } doitgen() { - target=codes/doitgen/doitgen + code=doitgen + target="codes/${code}/${code}" - # accurate - output="$(dirname ${target})/$(basename ${target})" - compile "${output}.c" "${output}" "codes/doitgen/data.o" - printf "doitgen,,," >> ${LOG} - ./${output} >> ${LOG} + baseline + baseline --pluto - get_scop "${target}.c" "${target}_perf.c" - get_info "${target}.c.openscop" | \ - while read x y; do - output="$(dirname ${target})/${x}_${y}_$(basename ${target})" - perforate "${target}.c" "${output}.c" "$x" "$y" - echo compile "${output}.c" "${output}" - compile "${output}.c" "${output}" "codes/doitgen/data.o" - printf "doitgen,%s,%s," "${x}" "${y}" >> ${LOG} - ./${output} >> ${LOG} - done + permute } seidel_2d() { - target=codes/seidel-2d/seidel-2d + code=seidel-2d + target="codes/${code}/${code}" - # accurate - output="$(dirname ${target})/$(basename ${target})" - compile "${output}.c" "${output}" "codes/seidel-2d/data.o" - printf "seidel-2d,,," >> ${LOG} - ./${output} >> ${LOG} + baseline + baseline --pluto - get_scop "${target}.c" "${target}_perf.c" - get_info "${target}.c.openscop" | \ - while read x y; do - output="$(dirname ${target})/${x}_${y}_$(basename ${target})" - perforate "${target}.c" "${output}.c" "$x" "$y" - echo compile "${output}.c" "${output}" - compile "${output}.c" "${output}" "codes/seidel-2d/data.o" - printf "seidel-2d,%s,%s," "${x}" "${y}" >> ${LOG} - ./${output} >> ${LOG} - done + permute } fdtd_2d() { - target=codes/fdtd-2d/fdtd-2d + code=fdtd-2d + target="codes/${code}/${code}" - # accurate - output="$(dirname ${target})/$(basename ${target})" - compile "${output}.c" "${output}" "codes/fdtd-2d/data.o" - printf "fdtd-2d,,," >> ${LOG} - ./${output} >> ${LOG} + baseline + baseline --pluto - get_scop "${target}.c" "${target}_perf.c" - get_info "${target}.c.openscop" | \ - while read x y; do - output="$(dirname ${target})/${x}_${y}_$(basename ${target})" - perforate "${target}.c" "${output}.c" "$x" "$y" - echo compile "${output}.c" "${output}" - compile "${output}.c" "${output}" "codes/fdtd-2d/data.o" - printf "fdtd-2d,%s,%s," "${x}" "${y}" >> ${LOG} - ./${output} >> ${LOG} - done + permute } adi() { - target=codes/adi/adi + code=adi + target="codes/${code}/${code}" - # accurate - output="$(dirname ${target})/$(basename ${target})" - compile "${output}.c" "${output}" "codes/adi/data.o" - printf "adi,,," >> ${LOG} - ./${output} >> ${LOG} + baseline + baseline --pluto - get_scop "${target}.c" "${target}_perf.c" - get_info "${target}.c.openscop" | \ - while read x y; do - output="$(dirname ${target})/${x}_${y}_$(basename ${target})" - perforate "${target}.c" "${output}.c" "$x" "$y" - echo compile "${output}.c" "${output}" - compile "${output}.c" "${output}" "codes/adi/data.o" - printf "adi,%s,%s," "${x}" "${y}" >> ${LOG} - ./${output} >> ${LOG} - done + permute } heat_3d() { - target=codes/heat-3d/heat-3d + code=heat-3d + target="codes/${code}/${code}" - # accurate - output="$(dirname ${target})/$(basename ${target})" - compile "${output}.c" "${output}" "codes/heat-3d/data.o" - printf "heat-3d,,," >> ${LOG} - ./${output} >> ${LOG} + baseline + baseline --pluto - get_scop "${target}.c" "${target}_perf.c" - get_info "${target}.c.openscop" | \ - while read x y; do - output="$(dirname ${target})/${x}_${y}_$(basename ${target})" - perforate "${target}.c" "${output}.c" "$x" "$y" - echo compile "${output}.c" "${output}" - compile "${output}.c" "${output}" "codes/heat-3d/data.o" - printf "heat-3d,%s,%s," "${x}" "${y}" >> ${LOG} - ./${output} >> ${LOG} - done + permute } jacobi_1d() { - target=codes/jacobi-1d/jacobi-1d + code=jacobi-1d + target="codes/${code}/${code}" - # accurate - output="$(dirname ${target})/$(basename ${target})" - compile "${output}.c" "${output}" "codes/jacobi-1d/data.o" - printf "jacobi-1d,,," >> ${LOG} - ./${output} >> ${LOG} + baseline + baseline --pluto - get_scop "${target}.c" "${target}_perf.c" - get_info "${target}.c.openscop" | \ - while read x y; do - output="$(dirname ${target})/${x}_${y}_$(basename ${target})" - perforate "${target}.c" "${output}.c" "$x" "$y" - echo compile "${output}.c" "${output}" - compile "${output}.c" "${output}" "codes/jacobi-1d/data.o" - printf "jacobi-1d,%s,%s," "${x}" "${y}" >> ${LOG} - ./${output} >> ${LOG} - done + permute } hotspot() { + code=hotspot target=codes/hotspot/hotspot_openmp # accurate @@ -259,7 +196,6 @@ hotspot() { correlation deriche floyd_warshall -hotspot doitgen seidel_2d fdtd_2d @@ -267,3 +203,4 @@ adi heat_3d jacobi_2d jacobi_1d +#hotspot