#!/bin/sh keep=no verbose=no for option; do case "$option" in --keep) keep=yes ;; --verbose) verbose=yes ;; esac done EXEEXT=@EXEEXT@ DIR=@POLYBENCH_DIR@ VERSION=@GIT_HEAD_VERSION@ SIZE=-DMINI_DATASET CC="@CC@" HAVE_OPENCL=@HAVE_OPENCL@ HAVE_OPENMP=@HAVE_OPENMP@ srcdir="@srcdir@" if [ $keep = "yes" ]; then OUTDIR="out.$VERSION" mkdir "$OUTDIR" || exit 1 else if test "x$TMPDIR" = "x"; then TMPDIR=/tmp fi OUTDIR=`mktemp -d $TMPDIR/ppcg.XXXXXXXXXX` || exit 1 fi CPPFLAGS="-DPOLYBENCH_USE_C99_PROTO -DPOLYBENCH_DUMP_ARRAYS" CPPFLAGS="$CPPFLAGS $SIZE -I $DIR/utilities" CFLAGS="-lm --std=gnu99" echo "Running tests in folder ${OUTDIR}" run_tests () { ext=$1 ppcg_options=$2 cc_options=$3 if [ "x$ppcg_options" = "x" ]; then ppcg_option_str="none" else ppcg_option_str=$ppcg_options fi if [ "x$cc_options" = "x" ]; then cc_option_str="none" else cc_option_str=$cc_options fi echo Test: $ext, ppcg options: $ppcg_option_str, CC options: $cc_option_str for i in `cat $DIR/utilities/benchmark_list`; do echo $i name=`basename $i` name=${name%.c} source_opt="${OUTDIR}/$name.$ext.c" prog_orig=${OUTDIR}/$name.orig${EXEEXT} prog_opt=${OUTDIR}/$name.$ext${EXEEXT} output_orig=${OUTDIR}/$name.orig.out output_opt=${OUTDIR}/$name.$ext.out dir=`dirname $i` if [ $verbose = "yes" ]; then echo ./ppcg$EXEEXT -I $DIR/$dir $DIR/$i \ $CPPFLAGS -o $source_opt $ppcg_options fi ./ppcg$EXEEXT -I $DIR/$dir $DIR/$i $CPPFLAGS \ -o $source_opt $ppcg_options || exit $CC -I $DIR/$dir $CPPFLAGS $DIR/$i -o $prog_orig \ $DIR/utilities/polybench.c $CFLAGS $prog_orig 2> $output_orig if [ $verbose = "yes" ]; then echo $CC -I $DIR/$dir $CPPFLAGS $source_opt \ -o $prog_opt $DIR/utilities/polybench.c \ $CFLAGS $cc_options fi $CC -I $DIR/$dir $CPPFLAGS $source_opt -o $prog_opt \ $DIR/utilities/polybench.c $CFLAGS $cc_options || exit $prog_opt 2> $output_opt cmp $output_orig $output_opt || exit done } run_tests ppcg "--target=c --tile" run_tests ppcg_live "--target=c --no-live-range-reordering --tile" # Test OpenMP code, if compiler supports openmp if [ $HAVE_OPENMP = "yes" ]; then run_tests ppcg_omp "--target=c --openmp" -fopenmp echo Introduced `grep -R 'omp parallel' "${OUTDIR}" | wc -l` '"pragma omp parallel for"' else echo Compiler does not support OpenMP. Skipping OpenMP tests. fi if [ $HAVE_OPENCL = "yes" ]; then run_tests ppcg_opencl "--target=opencl --opencl-no-use-gpu" \ "-I $srcdir $srcdir/ocl_utilities.c -lOpenCL" fi if [ $keep = "no" ]; then rm -r "${OUTDIR}" fi