#!/bin/bash # Size of Grid declare -a size=(1024 10240 102400 1024000 10240000 102400000) # Size of WorkGroup declare -a sizeWorkGroup=(16 32 64 128 256) # Iteration index declare -i i=0 declare -i j=0 declare -i k=1 # Number of trials for each case declare -i numTrials=50; # Remove old peformances file rm -f performances.txt # Main loop on array size while [ "${size[$i]}" != "" ] do # Loop over work-group size while [ "${sizeWorkGroup[$j]}" != "" ] do # Reset trials index and summation k=0; sumSeq=0 sumGPU=0 # Loop over work-group size while [ $k -le $numTrials ] do # Output of execution output=$(./sumReductionGPU "${size[$i]}" "${sizeWorkGroup[$j]}") # Check Summation value for CPU and GPU sum_seq_value=$(echo $output | awk '{print $9}') sum_gpu_value=$(echo $output | awk '{print $14}') if [ $sum_seq_value != $sum_gpu_value ] then echo -e "Error with computing Sum for : Size = ${size[$i]} ; WorkGroup size = ${sizeWorkGroup[$j]}" exit else echo -e "Valid pass : Trial = $k ; Array size = ${size[$i]} ; WorkGroup size = ${sizeWorkGroup[$j]}" # Runtime for sequential time_final_seq_second=$(echo $output | awk '{print $61}') time_final_seq_micro=$(echo $output | awk '{print $63}') time_final_seq_micro=$(echo "scale=6;$time_final_seq_micro*10^-6" | bc) # Sequential runtime for k-nth index time_final_seq=$time_final_seq_second$time_final_seq_micro # Sum for Sequantial runtime sumSeq=$(echo "scale=6;$sumSeq+$time_final_seq" | bc) # Runtime for gpu time_final_gpu_second=$(echo $output | awk '{print $48}') time_final_gpu_micro=$(echo $output | awk '{print $50}') time_final_gpu_micro=$(echo "scale=6;$time_final_gpu_micro*10^-6" | bc) # GPU runtime for k-nth index time_final_gpu=$time_final_gpu_second$time_final_gpu_micro # Sum for GPU runtime sumGPU=$(echo "scale=6;$sumGPU+$time_final_gpu" | bc) # Increment k index k=$k+1 fi done # Compute Average rutimes sumSeq_Average=$(echo "scale=6;$sumSeq/$numTrials" | bc | awk '{printf("%13.12f\n",$1)}') sumGPU_Average=$(echo "scale=6;$sumGPU/$numTrials" | bc | awk '{printf("%13.12f\n",$1)}') # Printf performances echo -e "${size[$i]} ${sizeWorkGroup[$j]} $sumSeq_Average $sumGPU_Average" >> performances.txt # Increment work-group index j=$j+1 done # Blank line for separating blocks echo " " >> performances.txt j=0 i=$i+1 done