#!/bin/sh LOG=data_$(date +%F_%T).log PERF=./perforate.sh INFO=./build/info2 get_scop() { $PERF -e "$1" } get_info() { IFS=";" $INFO "$1"| \ while read a x y; do printf "%s %s\n" $x $y done } perforate() { 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() { gcc -s -O3 -I../polybench-c-4.2.1-beta/utilities -I. -DPOLYBENCH_TIME -o "$2" ../polybench-c-4.2.1-beta/utilities/polybench.c "$1" -lm "$3" } correlation() { target=codes/correlation/correlation # accurate baseline # FIXME: baseline is currently without pluto, we need also accurate+pluto baseline() { output="$(dirname ${target})/$(basename ${target})" 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}" "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() { code=jacobi-2d target="codes/${code}/${code}" baseline baseline --pluto permute } deriche() { code=deriche target="codes/${code}/${code}" baseline baseline --pluto permute } floyd_warshall() { code=floyd-warshall target="codes/${code}/${code}" baseline baseline --pluto permute } doitgen() { code=doitgen target="codes/${code}/${code}" baseline baseline --pluto permute } seidel_2d() { code=seidel-2d target="codes/${code}/${code}" baseline baseline --pluto permute } fdtd_2d() { code=fdtd-2d target="codes/${code}/${code}" baseline baseline --pluto permute } adi() { code=adi target="codes/${code}/${code}" baseline baseline --pluto permute } heat_3d() { code=heat-3d target="codes/${code}/${code}" baseline baseline --pluto permute } jacobi_1d() { code=jacobi-1d target="codes/${code}/${code}" baseline baseline --pluto permute } hotspot() { code=hotspot target=codes/hotspot/hotspot_openmp # accurate output="$(dirname ${target})/$(basename ${target})" g++ -fopenmp -o "${output}" "${target}.cpp" codes/hotspot/data.o printf "hotspot,,," >> ${LOG} ./${output} 1024 1024 100 1 ~/rodinia_3.1/data/hotspot/temp_1024 ~/rodinia_3.1/data/hotspot/power_1024 /dev/null >> ${LOG} get_scop "${target}.cpp" "${target}_perf.cpp" get_info "${target}.cpp.openscop" | \ while read x y; do output="$(dirname ${target})/${x}_${y}_$(basename ${target})" perforate "${target}.cpp" "${output}.cpp" "$x" "$y" g++ -fopenmp -o "${output}" "${output}.cpp" codes/hotspot/data.o printf "hotspot,%s,%s," "${x}" "${y}" >> ${LOG} ./${output} 1024 1024 100 1 ~/rodinia_3.1/data/hotspot/temp_1024 ~/rodinia_3.1/data/hotspot/power_1024 /dev/null >> ${LOG} done } correlation deriche floyd_warshall doitgen seidel_2d fdtd_2d adi heat_3d jacobi_2d jacobi_1d #hotspot