commtechs bench: Ready to bench

* Add a script to launch all binaries
* add a logclean target to Makefile
* git ignore logs
This commit is contained in:
Thomas Preud'homme 2009-06-18 22:16:29 +02:00 committed by Thomas Preud'homme
parent dc6cd83ac1
commit 037895a73b
3 changed files with 116 additions and 0 deletions

View File

@ -1 +1,2 @@
include/specific_comm.h
logs/*

View File

@ -4,6 +4,7 @@ BINDIR=bin
SRCDIR=src
INCDIR=include
LIBDIR=lib
LOGDIR=logs
LOCALDIR=$(HOME)/local
PAPIHIGHLEVELLIBDIR=lib
PAPIHIGHLEVELINCDIR=include
@ -66,6 +67,9 @@ clean:
rm -f $(INCDIR)/specific_comm.h
rm -rf $(OBJDIR)
logclean:
rm -rf $(LOGDIR)
distclean: clean
rm -rf $(BINDIR) $(LIBDIR)

View File

@ -0,0 +1,111 @@
#! /bin/bash
set -u
# Files and directories
binDir="bin"
thisScript="$0"
# Param
binList="asm_cache_comm c_cache_comm pipe_comm shared_mem_comm shared_mem_opt_comm jikes_barrier_comm" # Type de communication
nbProdList="1" # Nombre de cores producteurs
typeProdList="none matrice" # Methode pour produire les valeurs
typeCacheList="L2 mem" # Niveau de cache partage
# Const
nbIter="5000000" # Nb de lignes produites
sizeBuf="1" # En nombre de lignes de cache
# Nom generique des fichiers de log
logFileName="\$perfDirName/cache_\$typeCache-nbProd_\$nbProd-typeProd_\$typeProd-nbIter_\$nbIter-\$bin"
expDirName="logs"
perfDirName="$expDirName/perfCommMulti-`date +'%F-%Hh%Mm%S'`"
if [ -n $LD_LIBRARY_PATH ]
then
LD_LIBRARY_PATH_LEFT="${LD_LIBRARY_PATH}"
while [ -n "${LD_LIBRARY_PATH_LEFT}" ]
do
aLibDir="${LD_LIBRARY_PATH_LEFT%%:*}"
if [ -x ${aLibDir}/libpapi.so ]
then
papiLibPresent="1";
fi
if [ -x ${aLibDir}/libpapihighlevel.so ]
then
papiHighLevelLibPresent="1";
fi
if [ -n "${papiLibPresent}" -a -n "${papiHighLevelLibPresent}" ]
then
break
fi
LD_LIBRARY_PATH_LEFT="${LD_LIBRARY_PATH#*:}"
done
if [ -z "${papiLibPresent}" -o -z "${papiHighLevelLibPresent}" ]
then
echo "Libraries needed for this bench not accessible by \$LD_LIBRARY_PATH" > /dev/stderr # Is there a better way to display something on stderr ?
exit 1
fi
else
echo "Libraries needed for this bench not accessible by \$LD_LIBRARY_PATH" > /dev/stderr # Is there a better way to display something on stderr ?
exit 1
fi
unset papiLibPresent
unset papiHighLevelLibPresent
unset LD_LIBRARY_PATH_LEFT
[ -d "$expDirName" ] || mkdir "$expDirName"
[ -d "$perfDirName" ] || mkdir "$perfDirName"
function_run () {
case $typeProd in
"none" ) optTypeProd="" ;;
"matrice" ) optTypeProd="-c $thisScript" ;;
* ) exit 1 ;;
esac
case $typeCache in
"mem" ) optTypeCache="-s 0" ;;
"L2" ) optTypeCache="-s 2" ;;
* ) exit 1 ;;
esac
make $binDir/$bin
echo "On lance : \"${bin##*/} $optTypeCache $optTypeProd -p $nbProd -n $nbIter\""
beginingDate=`date +%s`
( $binDir/$bin $optTypeCache $optTypeProd -p $nbProd -n $nbIter || echo "echec experience" ) | eval tee $logFileName
endDate=`date +%s`
duration_sec=`expr \( $endDate - $beginingDate \) % 60`
duration_min=`expr \( $endDate - $beginingDate \) / 60`
duration_hrs=`expr $duration_min / 60`
duration_min=`expr $duration_min % 60`
echo "Fin de l'experience : `date +'%H:%M:%S (%d/%m/%y)'`"
echo "La duree est de : ${duration_hrs}hrs ${duration_min}min ${duration_sec}sec"
echo ""
}
echo -e "On commence les perfs\n"
globalBeginingDate=`date +%s`
for nbProd in $nbProdList ; do
for typeProd in $typeProdList; do
for typeCache in $typeCacheList ; do
for bin in $binList ; do
function_run
done
done
done
done
globalEndDate=`date +%s`
globalDuration_sec=`expr \( $globalEndDate - $globalBeginingDate \) % 60`
globalDuration_min=`expr \( $globalEndDate - $globalBeginingDate \) / 60`
globalDuration_hrs=`expr $globalDuration_min / 60`
globalDuration_min=`expr $globalDuration_min % 60`
echo "Fin de la serie d'experience : `date +'%H:%M:%S (%d/%m/%y)'`"
echo "La duree totale est de : ${globalDuration_hrs}hrs ${globalDuration_min}min ${globalDuration_sec}sec"