#!/bin/bash write_result() { N=$1 P=$2 NPN=$3 NODES=$(($P / $NPN)) FILENAME=$(printf 'study_n%05d/n%03dppn%d/diag_time.dat' $N $NODES $NPN) if [ $P -ne 1 ] ; then printf '& ' fi if [ -f $FILENAME ] ; then RESULT=$(gawk -F' ' '{ print $1 }' $FILENAME 2>/dev/null) printf '%8s ' $RESULT else # If the file does not exist, write out a '---' printf '%8s ' '---' fi } write_header() { for i in $@ { printf ' %7s ' $i } printf '\n' } echo 'Results for npn = 1' write_header 'N' 'p=1' 'p=2' 'p=4' 'p=8' 'p=16' 'p=32' 'p=64' 'p=128' 'p=256' for N in 1024 2048 4096 do printf '%9d & ' $N NPERNODE=1 for P in 1 2 4 8 16 32 64 do write_result $N $P $NPERNODE done NPERNODE=2 P=128 write_result $N $P $NPERNODE NPERNODE=4 P=256 write_result $N $P $NPERNODE printf '\\\\ \n' done #---------------------------------------------- echo echo 'Results for npn = 2' write_header 'N' 'p=1' 'p=2' 'p=4' 'p=8' 'p=16' 'p=32' 'p=64' 'p=128' 'p=256' for N in 1024 2048 4096 do printf '%9d & ' $N NPERNODE=1 P=1 write_result $N $P $NPERNODE NPERNODE=2 for P in 2 4 8 16 32 64 128 do write_result $N $P $NPERNODE done NPERNODE=4 P=256 write_result $N $P $NPERNODE printf '\\\\ \n' done #---------------------------------------------- echo echo 'Results for npn = 4' write_header 'N' 'p=1' 'p=2' 'p=4' 'p=8' 'p=16' 'p=32' 'p=64' 'p=128' 'p=256' for N in 1024 2048 4096 do printf '%9d & ' $N NPERNODE=1 P=1 write_result $N $P $NPERNODE NPERNODE=2 P=2 write_result $N $P $NPERNODE NPERNODE=4 for P in 4 8 16 32 64 128 256 do write_result $N $P $NPERNODE done printf '\\\\ \n' done #---------------------------------------------- echo echo 'Results for npn = 8' write_header 'N' 'p=1' 'p=2' 'p=4' 'p=8' 'p=16' 'p=32' 'p=64' 'p=128' 'p=256' for N in 1024 2048 4096 do printf '%9d & ' $N NPERNODE=1 P=1 write_result $N $P $NPERNODE NPERNODE=2 P=2 write_result $N $P $NPERNODE NPERNODE=4 P=4 write_result $N $P $NPERNODE NPERNODE=8 for P in 8 16 32 64 128 256 do write_result $N $P $NPERNODE done printf '\\\\ \n' done