[svn] / ecrypt / trunk / scripts / run  

svn: ecrypt/trunk/scripts/run

Diff for /ecrypt/trunk/scripts/run between version 100 and 135

version 100, Fri Sep 2 13:48:02 2005 UTC version 135, Wed Dec 21 14:20:37 2005 UTC
Line 16 
Line 16 
 dstdir=.;  dstdir=.;
   
 [ -n "$srcdir" ] || srcdir=$root;  [ -n "$srcdir" ] || srcdir=$root;
   [ -d "$srcdir" ] || srcdir=$root/submissions/$1;
   [ -d "$srcdir" ] || srcdir=$root/benchmarks/$1;
   [ -d "$srcdir" ] || srcdir=$root;
   
   srcdir=$(relative "$srcdir" "$PWD");
   
   vectors=verified.test-vectors;
   
   if [ -z "$(find "$srcdir" -name "*$vectors")" ]; then
       error 0 "no test vectors found in $srcdir";
       exit;
   fi
   
   if [ -z "$(find "$srcdir" -name "Makefile")" ]; then
       error 0 "no Makefile found in $srcdir";
       exit;
   fi
   
 vectors=unverified.test-vectors;  
 cpu_speed=$(tail -n 1 "$reports/cpuinfo");  cpu_speed=$(tail -n 1 "$reports/cpuinfo");
   
 if [ -r "/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq" ]; then  if [ -r "/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq" ]; then
Line 34 
Line 50 
     status 1;      status 1;
 fi  fi
   
   [ -r "$reports/.skip-slow" ] && skip=$(<"$reports/.skip-slow");
   
 # -----------------------------------------------------------------------------  # -----------------------------------------------------------------------------
   
 run ()  run ()
 {  {
     srcdir=$1;      srcdir=$1;
     var=$2;      vecdir=$2;
     conf=$3;      var=$3;
       conf=$4;
   
     ext=${var}_${conf};      ext=${var}_${conf};
     make="make var=$var conf=$conf";      make="make var=$var conf=$conf";
Line 48 
Line 67 
     name=$($make name);      name=$($make name);
     [ "$var" = "1" ] || name="$name (variant $var)";      [ "$var" = "1" ] || name="$name (variant $var)";
   
       report=$(ls *_$ext 2> /dev/null | head -1);
   
       if [ -n "$report" ]; then
           touch timestamp -r $report;
   
           if $make -q timestamp; then
               warning 1 "nothing to be done. $report is up to date.";
               rm -f timestamp;
               return;
           fi
   
           rm -f timestamp *_$ext;
       fi
   
       if [ -n "$skip" -a -r "$vecdir/fastest" ]; then
           slow=$(awk '{ if ($1 > '$skip') print "true"; }' "$vecdir/fastest");
   
           if [ "$slow" = "true" ]; then
               warning 1 "skipping slow implementation.";
               return;
           fi
       fi
   
     status 1 "compiling $name under $conf";      status 1 "compiling $name under $conf";
   
     $make clean &> /dev/null;      $make clean &> /dev/null;
Line 106 
Line 148 
   
     run=$($make run);      run=$($make run);
   
     status 1 "generating test vectors";  
   
     error=$($run -v -q &> vectors_$ext; echo "$?");  
   
     status 1;  
   
     if [ "$error" -gt "1" ]; then  
         mv vectors_$ext errors_$ext;  
         mv info_current info_$ext;  
         error 0 "execution failed.";  
   
         $make clean &> /dev/null;  
         return;  
     fi  
   
     status 1 "verifying test vectors";  
   
     if diff -waq vectors_$ext "$srcdir/$vectors" > /dev/null; then  
         status 1;  
         rm -f vectors_$ext;  
     else  
         if diff -wad vectors_$ext "$srcdir/$vectors" \  
             | grep '<' > /dev/null; then  
             status 1;  
             mv info_current info_$ext;  
             error 0 "vectors do not match. check vectors_$ext.";  
   
             $make clean &> /dev/null;  
             return;  
         else  
             status 1;  
             warning 1 "vectors are incomplete but match.";  
             rm -f vectors_$ext;  
         fi  
     fi  
   
     detailed=false;      detailed=false;
   
     for flags in "-s -k -p" "-s"; do      for flags in "-pak -s 128 64 64" "-s 128 64 64 -s 256 128 128"; do
         status 1 "running speed measurements on $cpu_speed MHz CPU";          status 1 "running speed measurements on $cpu_speed MHz CPU";
   
         error=$($run -q -c $cpu_speed $flags &> speed_$ext; echo "$?");          error=$($run -qc $cpu_speed $flags \
               2> /dev/null > speed_current; echo "$?");
   
         cat >> speed_$ext <<EOF          cat >> speed_current <<EOF
   
 *******************************************************************************  *******************************************************************************
   
Line 159 
Line 166 
         status 1;          status 1;
   
         cycles=$(awk '{ sub(/\r/, ""); } /cycles\/byte/ { print $4; exit; }' \          cycles=$(awk '{ sub(/\r/, ""); } /cycles\/byte/ { print $4; exit; }' \
             speed_$ext);              speed_current);
   
         if [ -z "$cycles" -o "$error" -gt "0" ]; then          if [ -z "$cycles" -o "$error" -gt "0" ]; then
             mv speed_$ext errors_$ext;              mv speed_current errors_$ext;
             rm -f info_current              rm -f info_current
             error 0 "execution failed. check errors_$ext.";              error 0 "execution failed. check errors_$ext.";
   
Line 170 
Line 177 
             return;              return;
         fi          fi
   
         if [ -r fastest ]; then          if [ -r "$vecdir/fastest" ]; then
             comparison=$(awk '{ \              comparison=$(awk '{ \
               if ('$cycles' < $1) \                if ('$cycles' < $1) \
                 print "better"; \                  print "better"; \
               else if ('$cycles' / $1 < 1.01) \                else if ('$cycles' / $1 < 1.01) \
                 print "similar"; \                  print "similar"; \
               else \                else \
                 print "worse"; }' fastest);                  print "worse"; }' "$vecdir/fastest");
         else          else
             comparison="better";              comparison="better";
         fi          fi
   
         [ "$comparison" = "worse" ] && break;          [ "$comparison" = "worse" ] && break;
         [ "$detailed" = "true" ] && [ "$comparison" = "better" ] \  
             && echo "$cycles" > fastest;          if [ "$detailed" = "false" ]; then
               status 1 "generating test vectors";
   
               error=$($run -qv > vectors_current 2> /dev/null; echo "$?");
               mv vectors_current vectors_$ext;
   
               status 1;
   
               if [ "$error" -gt "1" ]; then
                   mv vectors_$ext errors_$ext;
                   mv speed_current info_$ext;
                   error 0 "execution failed.";
   
                   $make clean &> /dev/null;
                   return;
               fi
   
               status 1 "verifying test vectors";
   
               if diff -waq vectors_$ext "$srcdir/$vecdir/"*"$vectors" \
                   > /dev/null; then
                   status 1;
                   rm -f vectors_$ext;
               else
                   if diff -wad vectors_$ext "$srcdir/$vecdir/"*"$vectors" \
                       | grep '<' > /dev/null; then
                       status 1;
                       mv speed_current info_$ext;
                       error 0 "vectors do not match. check vectors_$ext.";
   
                       $make clean &> /dev/null;
                       return;
                   else
                       status 1;
                       warning 1 "vectors are incomplete but match.";
                       rm -f vectors_$ext;
                   fi
               fi
   
         detailed=true;          detailed=true;
           elif [ "$comparison" = "better" ]; then
               echo "$cycles" > "$vecdir/fastest";
           fi
     done      done
   
     $make clean &> /dev/null;      $make clean &> /dev/null;
     rm -f info_current  
       rm -f info_current;
       mv speed_current speed_$ext;
   
     info 1 "Current implementation of $name encrypts at $cycles cycles/byte."      info 1 "Current implementation of $name encrypts at $cycles cycles/byte."
     info 1 "Previous implementations reached $(<fastest) cycles/byte."      info 1 "Previous implementations reached $(<$vecdir/fastest) cycles/byte."
 }  }
   
 # -----------------------------------------------------------------------------  # -----------------------------------------------------------------------------
Line 202 
Line 251 
 {  {
     srcdir=$1;      srcdir=$1;
     dstdir=$2;      dstdir=$2;
     conf=$3;      vecdir=$3;
       conf=$4;
   
     if ! mkdir -p "$dstdir"; then      if ! mkdir -p "$dstdir"; then
         error 0 "Cannot create directory $dstdir.";          error 0 "Cannot create directory $dstdir.";
         return;          return;
     fi      fi
   
     info 1 "Entering directory ${srcdir##*../}";  
   
     cd "$dstdir";      cd "$dstdir";
       info 1 "Entering directory $(relative "$srcdir" "$root")";
   
       if [ -n "$vecdir" ]; then
           vecdir="../$vecdir";
       elif [ -r "$srcdir/"*"$vectors" ]; then
           vecdir=".";
       fi
   
     for subdir in "$srcdir"/*; do      for subdir in "$srcdir"/*; do
         if [ -d "$subdir" ] \          if [ -d "$subdir" ]; then
             && [ -n "$(find "$subdir" -name "$vectors")" ]; then              [ -n "$(find "$subdir" -name "Makefile")" ] || break;
             (process_dir "../$subdir" "$(basename $subdir)" "$conf");              [ -n "$vecdir" ] || [ -n "$(find "$subdir" -name "*$vectors")" ] \
                   || break;
   
               (process_dir "../$subdir" "$(basename $subdir)" "$vecdir" "$conf");
         fi          fi
     done      done
   
     [ -r "$srcdir/$vectors" -a -r "$srcdir/Makefile" ] || return;      [ -n "$vecdir" -a -r "$srcdir/Makefile" ] || return;
   
     sed 's/srcdir = ./srcdir = '${srcdir//\//\\\/}'/' "$srcdir/Makefile" \      sed 's/srcdir = ./srcdir = '${srcdir//\//\\\/}'/' "$srcdir/Makefile" \
         > Makefile;          > Makefile;
Line 236 
Line 294 
     make variants &> /dev/null;      make variants &> /dev/null;
   
     for var in $(<variants); do      for var in $(<variants); do
         ls *_${var}_${conf} &> /dev/null || run $srcdir $var $conf;          run $srcdir $vecdir $var $conf;
     done      done
 }  }
   
Line 248 
Line 306 
   
     echo $((score + 0)) ${conf%.mk};      echo $((score + 0)) ${conf%.mk};
 done | sort -rn | while read score conf; do  done | sort -rn | while read score conf; do
     info 1 "Testing $conf configuration (score: $score).";      [ "$score" = "0" ] && [ -e "$reports/.shortlist-only" ] && break;
   
     process_dir "$srcdir" "$dstdir" $conf < /dev/null;      info 1 "Testing $conf configuration (score: $score).";
       process_dir "$srcdir" "$dstdir" "" $conf < /dev/null;
 done  done
   
 # -----------------------------------------------------------------------------  # -----------------------------------------------------------------------------


Generate output suitable for use with a patch program
Legend:
Removed from v.100  
changed lines
  Added in v.135

eSTREAM Project

Powered by ViewCVS 1.0-dev
(Powered by Apache)

ViewCVS and CVS Help