#!/bin/bash

if [ -x "$1" ]
then
	EXECS="$1"
else
	EXECS="cannonAsync_write cannonSync_write cannonAsyncTestPadding_write"
fi

SIZES="1 4 9 16 25 36 49 64 81 100 121 144"

for exe in $EXECS
do
	echo
	echo "Checking: $exe"
	echo "------------------------"
	rm -f C.dtxt
	mpirun -n 1 ./$exe >/dev/null 2>&1
	if [ ! -r C.dtxt ]
	then
		echo "Error: The executable does no generate an ouput matrix: Recompile with  $ make write"
		echo
		exit -1
	fi

	for size in $SIZES
	do
		rm -f C.dtxt
		mpirun -n $size ./$exe >/dev/null 2>&1

		if diff C.dtxt CorrectResults/result10x20.CORRECT >/dev/null
		then
			echo "[$size] Ok"
		else
			echo "[$size] WRONG !!!"
		fi
	done
done

exe=cannonAsyncInt_write
echo
echo "Checking: $exe"
echo "------------------------"
rm -f C.dtxt
mpirun -n 1 ./$exe >/dev/null 2>&1
if [ ! -r C.dtxt ]
then
	echo "Error: The executable does no generate an ouput matrix: Recompile with  $ make write"
	echo
	exit -1
fi
for size in $SIZES
do
	rm -f C.dtxt
	mpirun -n $size ./$exe >/dev/null 2>&1

	if diff C.dtxt CorrectResults/intResult10x20.CORRECT >/dev/null
	then
		echo "[$size] Ok"
	else
		echo "[$size] WRONG !!!"
	fi
done

