| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 | #!/bin/bash# StarPU --- Runtime system for heterogeneous multicore architectures.# # Copyright (C) 2009, 2010  Université de Bordeaux 1# Copyright (C) 2010  Centre National de la Recherche Scientifique# # StarPU is free software; you can redistribute it and/or modify# it under the terms of the GNU Lesser General Public License as published by# the Free Software Foundation; either version 2.1 of the License, or (at# your option) any later version.# # StarPU is distributed in the hope that it will be useful, but# WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.# # See the GNU Lesser General Public License in COPYING.LGPL for more details.# for bcscale=8#nblockslist="2 4 8 16 16 16 16 16 16 16 16 16 16 16 16"nblockslist="4 8 16 16 16 16 16 16 16 16 16"niter=5#nblockslist="4 4"#niter=2rm -f logecho "#iter cpu0 (#tasks0) cpu1 (#tasks1) cpu2 (#tasks2) gpu0 (#tasksgpu0) #totaltask gflops" > gnuplot.datai=0for nblocks in $nblockslistdo	i=$(($i + 1))	sumcpu[$i]='0'	ntaskcpu[$i]='0'	sumcuda[$i]='0'	ntaskcuda[$i]='0'	cpu_ntasktotal[$i]='0'	gpu_ntasktotal[$i]='0'	sumgflops[$i]='0'donefor iter in `seq 1 $niter`docpu_taskcnt=0gpu_taskcnt=0i=0rm -f ../../.sampling/*for nblocks in $nblockslistdo	i=$(($i + 1))	ntheta=$(($((32 * $nblocks)) + 2))	echo "ITER $iter -> I $i NBLOCKS $nblocks"	STARPU_CALIBRATE=1 STARPU_SCHED="dm" ../../examples/heat/heat -nblocks $nblocks -nthick 34 -ntheta $ntheta -pin 2> output.log.err > output.log	gflops=`grep "Synthetic GFlops :" output.log.err| sed -e "s/Synthetic GFlops ://"`	sumgflops[$i]=$(echo "${sumgflops[$i]} + $gflops"|bc -l)	# retrieve ratio for cpu 0, 1 and 2	avgcpu0=`grep "MODEL ERROR: CPU 0" starpu.log | sed -e "s/^.*RATIO \(.*\) NTASKS\(.*\)$/\1/"`	avgcpu1=`grep "MODEL ERROR: CPU 1" starpu.log | sed -e "s/^.*RATIO \(.*\) NTASKS\(.*\)$/\1/"`	avgcpu2=`grep "MODEL ERROR: CPU 2" starpu.log | sed -e "s/^.*RATIO \(.*\) NTASKS\(.*\)$/\1/"`	avgcuda0=`grep "MODEL ERROR: CUDA 0" starpu.log | sed -e "s/^.*RATIO \(.*\) NTASKS\(.*\)$/\1/"`	ntaskcpu0=`grep "MODEL ERROR: CPU 0" starpu.log | sed -e "s/^.*RATIO \(.*\) NTASKS\(.*\)$/\2/"`	ntaskcpu1=`grep "MODEL ERROR: CPU 1" starpu.log | sed -e "s/^.*RATIO \(.*\) NTASKS\(.*\)$/\2/"`	ntaskcpu2=`grep "MODEL ERROR: CPU 2" starpu.log | sed -e "s/^.*RATIO \(.*\) NTASKS\(.*\)$/\2/"`	ntaskcuda0=`grep "MODEL ERROR: CUDA 0" starpu.log | sed -e "s/^.*RATIO \(.*\) NTASKS\(.*\)$/\2/"`	sumcpu[$i]=$(echo "${sumcpu[$i]} + ( $avgcpu0 * $ntaskcpu0 ) + ( $avgcpu1 * $ntaskcpu1 ) +  ( $avgcpu2 * $ntaskcpu2 )"| bc -l)	ntaskcpu[$i]=$(echo "${ntaskcpu[$i]} + $ntaskcpu0 + $ntaskcpu1 + $ntaskcpu2"|bc -l)	sumcuda[$i]=$(echo "${sumcuda[$i]} + ( $avgcuda0 * $ntaskcuda0 )"| bc -l)	ntaskcuda[$i]=$(echo "${ntaskcuda[$i]} + $ntaskcuda0"|bc -l)	cpu_taskcnt=$(($cpu_taskcnt + $ntaskcpu0 + $ntaskcpu1 + $ntaskcpu2 ))	gpu_taskcnt=$(($gpu_taskcnt + $ntaskcuda0))	cpu_ntasktotal[$i]=$( echo "$cpu_taskcnt + ${cpu_ntasktotal[$i]}" | bc -l) 	gpu_ntasktotal[$i]=$( echo "$gpu_taskcnt + ${gpu_ntasktotal[$i]}" | bc -l)donedonei=0echo "#ntaskscpu #avg. error cpu #ntaskgpu #avg. error gpu #avg. gflops" > gnuplot.datafor nblocks in $nblockslistdo	i=$(($i + 1))		avggflops=$(echo "${sumgflops[$i]}/$niter"|bc -l)	cpu_ntasks=$(echo "${cpu_ntasktotal[$i]}/$niter" | bc -l)	gpu_ntasks=$(echo "${gpu_ntasktotal[$i]}/$niter" | bc -l)	avgcpu=$(echo "${sumcpu[$i]}/${ntaskcpu[$i]}"|bc -l)	avgcuda=$(echo "${sumcuda[$i]}/${ntaskcuda[$i]}"|bc -l)	echo "$cpu_ntasks $avgcpu $gpu_ntasks $avgcuda $avggflops" >> gnuplot.datadone./error_model.gp
 |