|
67 | 67 | TIME=$(echo "$TIME" | awk '{ printf "%g", $1 * 60 }') |
68 | 68 |
|
69 | 69 | # Adapted from: https://github.com/tdulcet/Linux-System-Information/blob/master/info.sh |
70 | | -. /etc/os-release |
| 70 | +echo |
71 | 71 |
|
72 | | -echo -e "\nLinux Distribution:\t\t${PRETTY_NAME:-$NAME-$VERSION}" |
| 72 | +if [[ -r /etc/os-release ]]; then |
| 73 | + . /etc/os-release |
| 74 | +elif [[ -r /usr/lib/os-release ]]; then |
| 75 | + . /usr/lib/os-release |
| 76 | +fi |
| 77 | +echo -e "Linux Distribution:\t\t${PRETTY_NAME:-$NAME-$VERSION}" |
73 | 78 |
|
74 | 79 | KERNEL=$(</proc/sys/kernel/osrelease) # uname -r |
75 | 80 | echo -e "Linux Kernel:\t\t\t$KERNEL" |
@@ -415,8 +420,8 @@ for i in "${!ITERS[@]}"; do |
415 | 420 | done |
416 | 421 | RUNS=(${ARGS[MAX]}) |
417 | 422 | threads=(${THREADS[MAX]}) |
418 | | -echo -e "\nBenchmark Summary\n" |
419 | 423 | { |
| 424 | + echo -e "\nBenchmark Summary\n" |
420 | 425 | echo -e "\tAdjusted msec/iter times (ms/iter) vs Actual iters/sec total throughput (iter/s) for each combination\n" |
421 | 426 | { |
422 | 427 | printf 'FFT\t' |
@@ -454,37 +459,37 @@ echo -e "\nBenchmark Summary\n" |
454 | 459 | done |
455 | 460 | } | column -t -s $'\t' |
456 | 461 | echo |
457 | | -} | tee -a bench.txt |
458 | | -echo "Fastest combination" |
459 | | -{ |
460 | | - echo -e "#\tWorkers/Runs\tThreads\tFirst -core argument" |
461 | | - printf "%'d\t%'d\t%s\t%s\n" $((MAX + 1)) ${#RUNS[*]} "${THREADS[MAX]// /, }" "${RUNS[0]}$(if [[ ${#threads[*]} -gt 1 ]]; then echo " ${RUNS[-1]}"; fi)" |
462 | | -} | column -t -s $'\t' |
463 | | -echo |
464 | | -if [[ ${#ARGS[*]} -gt 1 ]]; then |
| 462 | + echo "Fastest combination" |
465 | 463 | { |
466 | | - echo -e "Mean ± σ std dev faster\t#\tWorkers/Runs\tThreads\tFirst -core argument" |
467 | | - for i in "${!ARGS[@]}"; do |
468 | | - if [[ $i -ne $MAX ]]; then |
469 | | - args=(${ARGS[i]}) |
470 | | - threads=(${THREADS[i]}) |
471 | | - mapfile -t ffts <<<"${FFTS[i]}" |
472 | | - iters=(${ITERS[i]}) |
473 | | - if [[ -n $ffts ]]; then |
474 | | - # join -o 1.2,2.2 <(paste <(echo "${FFTS[MAX]}") <(echo "${ITERS[MAX]}")) <(paste <(echo "${FFTS[i]}") <(echo "${ITERS[i]}")) |
475 | | - array=($(for k in "${!affts[@]}"; do for j in "${!ffts[@]}"; do if [[ ${affts[k]} -eq ${ffts[j]} ]]; then |
476 | | - printf '%s\t%s\n' "${aiters[k]}" "${iters[j]}" |
477 | | - break |
478 | | - fi; done; done | awk '{ sum+=$1/$2; sumsq+=($1/$2)^2 } END { mean=sum/NR; variance=sumsq/NR-mean^2; printf "%.15g\t%.15g\t%.15g\n", mean, sqrt(variance<0 ? 0 : variance), (mean * 100) - 100 }')) |
479 | | - printf "%'.3f ± %'.3f (%'.1f%%)\t%'d\t%'d\t%s\t%s\n" "${array[0]/./$decimal_point}" "${array[1]/./$decimal_point}" "${array[2]/./$decimal_point}" $((i + 1)) ${#args[*]} "${THREADS[i]// /, }" "${args[0]}$(if [[ ${#threads[*]} -gt 1 ]]; then echo " ${args[-1]}"; fi)" |
480 | | - else |
481 | | - printf -- "-\t%'d\t%'d\t%s\t%s\n" $((i + 1)) ${#args[*]} "${THREADS[i]// /, }" "${args[0]}$(if [[ ${#threads[*]} -gt 1 ]]; then echo " ${args[-1]}"; fi)" |
482 | | - fi |
483 | | - fi |
484 | | - done |
| 464 | + echo -e "#\tWorkers/Runs\tThreads\tFirst -core argument" |
| 465 | + printf "%'d\t%'d\t%s\t%s\n" $((MAX + 1)) ${#RUNS[*]} "${THREADS[MAX]// /, }" "${RUNS[0]}$(if [[ ${#threads[*]} -gt 1 ]]; then echo " ${RUNS[-1]}"; fi)" |
485 | 466 | } | column -t -s $'\t' |
486 | | -fi |
487 | | -echo |
| 467 | + echo |
| 468 | + if [[ ${#ARGS[*]} -gt 1 ]]; then |
| 469 | + { |
| 470 | + echo -e "Mean ± σ std dev faster\t#\tWorkers/Runs\tThreads\tFirst -core argument" |
| 471 | + for i in "${!ARGS[@]}"; do |
| 472 | + if [[ $i -ne $MAX ]]; then |
| 473 | + args=(${ARGS[i]}) |
| 474 | + threads=(${THREADS[i]}) |
| 475 | + mapfile -t ffts <<<"${FFTS[i]}" |
| 476 | + iters=(${ITERS[i]}) |
| 477 | + if [[ -n $ffts ]]; then |
| 478 | + # join -o 1.2,2.2 <(paste <(echo "${FFTS[MAX]}") <(echo "${ITERS[MAX]}")) <(paste <(echo "${FFTS[i]}") <(echo "${ITERS[i]}")) |
| 479 | + array=($(for k in "${!affts[@]}"; do for j in "${!ffts[@]}"; do if [[ ${affts[k]} -eq ${ffts[j]} ]]; then |
| 480 | + printf '%s\t%s\n' "${aiters[k]}" "${iters[j]}" |
| 481 | + break |
| 482 | + fi; done; done | awk '{ sum+=$1/$2; sumsq+=($1/$2)^2 } END { mean=sum/NR; variance=sumsq/NR-mean^2; printf "%.15g\t%.15g\t%.15g\n", mean, sqrt(variance<0 ? 0 : variance), (mean * 100) - 100 }')) |
| 483 | + printf "%'.3f ± %'.3f (%'.1f%%)\t%'d\t%'d\t%s\t%s\n" "${array[0]/./$decimal_point}" "${array[1]/./$decimal_point}" "${array[2]/./$decimal_point}" $((i + 1)) ${#args[*]} "${THREADS[i]// /, }" "${args[0]}$(if [[ ${#threads[*]} -gt 1 ]]; then echo " ${args[-1]}"; fi)" |
| 484 | + else |
| 485 | + printf -- "-\t%'d\t%'d\t%s\t%s\n" $((i + 1)) ${#args[*]} "${THREADS[i]// /, }" "${args[0]}$(if [[ ${#threads[*]} -gt 1 ]]; then echo " ${args[-1]}"; fi)" |
| 486 | + fi |
| 487 | + fi |
| 488 | + done |
| 489 | + } | column -t -s $'\t' |
| 490 | + fi |
| 491 | + echo |
| 492 | +} | tee -a bench.txt |
488 | 493 | echo "The benchmark data was written to the 'bench.txt' file" |
489 | 494 | if [[ -n $COMBO ]]; then |
490 | 495 | printf "\nUsing combination: %'d\n" $((COMBO + 1)) |
|
0 commit comments