diff --git a/RTCP/Cobalt/GPUProc/test/CMakeLists.txt b/RTCP/Cobalt/GPUProc/test/CMakeLists.txt index 426166e329fdc33753fcbf0ff8ec586b834ab4b7..e6e1966606332534c17d46afb710f91f51fabe90 100644 --- a/RTCP/Cobalt/GPUProc/test/CMakeLists.txt +++ b/RTCP/Cobalt/GPUProc/test/CMakeLists.txt @@ -8,6 +8,12 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR}) add_definitions("-DLOFARROOT=${CMAKE_CURRENT_SOURCE_DIR}/..") +configure_file( + "${CMAKE_CURRENT_SOURCE_DIR}/runrtcp.sh.in" + "${CMAKE_CURRENT_BINARY_DIR}/runrtcp.sh" # internal, no need to install +) + + lofar_add_test(tBestEffortQueue tBestEffortQueue.cc) lofar_add_test(tSSH tSSH.cc) diff --git a/RTCP/Cobalt/GPUProc/test/cmpfloat.py b/RTCP/Cobalt/GPUProc/test/cmpfloat.py index 4ba062326d4c660c91876d4f32eb48a19407bb52..70abb5da4e9172134d74986d8f080bb924d026b4 100755 --- a/RTCP/Cobalt/GPUProc/test/cmpfloat.py +++ b/RTCP/Cobalt/GPUProc/test/cmpfloat.py @@ -21,6 +21,7 @@ def cmpfloat(filename_a, filename_b, precision = PRECISION): fB = file(B) sizeof_float = calcsize("f") + offset = 0 while 1: bA = fA.read(sizeof_float) @@ -39,7 +40,9 @@ def cmpfloat(filename_a, filename_b, precision = PRECISION): xA, = unpack("f", bA) xB, = unpack("f", bB) - assert fabs(xA - xB) < PRECISION, "File %s and %s differ in content." % (A, B) + assert fabs(xA - xB) < PRECISION, "File %s and %s differ in content at byte offset %s: value is %.5f versus %.5f." % (A, B, offset, xA, xB) + + offset += sizeof_float if __name__ == "__main__": import sys diff --git a/RTCP/Cobalt/GPUProc/test/runrtcp.sh.in b/RTCP/Cobalt/GPUProc/test/runrtcp.sh.in new file mode 100644 index 0000000000000000000000000000000000000000..d213749f4d2d0263be1b3f28bccb8218f61aa6b7 --- /dev/null +++ b/RTCP/Cobalt/GPUProc/test/runrtcp.sh.in @@ -0,0 +1,29 @@ +#!/bin/bash -x + +if [ "$#" == "0" ] +then + echo Usage: '[NRPROCS=x]' $0 '[params]' + exit +fi + +EXECUTABLE="@CMAKE_CURRENT_BINARY_DIR@/../src/rtcp" + +HAVE_MPI="@HAVE_MPI@" + +echo EXECUTABLE: $EXECUTABLE +echo HAVE_MPI: $HAVE_MPI + +if [ "$HAVE_MPI" == "TRUE" ] # TODO: what to match here? I've seen TRUE and OFF +then + # OpenMPI + if [ "$NRPROCS" == "" ] + then + # A sane default for 1-3 stations + NRPROCS=4 + fi + + mpirun -H localhost -np $NRPROCS "$EXECUTABLE" "$@" +else + # No MPI + "$EXECUTABLE" "$@" +fi diff --git a/RTCP/Cobalt/GPUProc/test/tCorrelate_1sec_1st_5sb_noflagging.run b/RTCP/Cobalt/GPUProc/test/tCorrelate_1sec_1st_5sb_noflagging.run index 93942e47d2944bb66284ea8561eb752f68bfca84..aa411aa40a9beed87706dc7768786ad156f53d18 100755 --- a/RTCP/Cobalt/GPUProc/test/tCorrelate_1sec_1st_5sb_noflagging.run +++ b/RTCP/Cobalt/GPUProc/test/tCorrelate_1sec_1st_5sb_noflagging.run @@ -4,5 +4,5 @@ TESTNAME=`basename "${0%%.run}"` PARSET=$srcdir/$TESTNAME.parset OUTPUT=$srcdir/$TESTNAME.output -$srcdir/testParset.sh "$PARSET" -r "$OUTPUT" || exit $? +$srcdir/testParset.sh -r "$OUTPUT" "$PARSET" || exit $? diff --git a/RTCP/Cobalt/GPUProc/test/tCorrelate_3sec_1st_5sb.run b/RTCP/Cobalt/GPUProc/test/tCorrelate_3sec_1st_5sb.run index 93942e47d2944bb66284ea8561eb752f68bfca84..aa411aa40a9beed87706dc7768786ad156f53d18 100755 --- a/RTCP/Cobalt/GPUProc/test/tCorrelate_3sec_1st_5sb.run +++ b/RTCP/Cobalt/GPUProc/test/tCorrelate_3sec_1st_5sb.run @@ -4,5 +4,5 @@ TESTNAME=`basename "${0%%.run}"` PARSET=$srcdir/$TESTNAME.parset OUTPUT=$srcdir/$TESTNAME.output -$srcdir/testParset.sh "$PARSET" -r "$OUTPUT" || exit $? +$srcdir/testParset.sh -r "$OUTPUT" "$PARSET" || exit $? diff --git a/RTCP/Cobalt/GPUProc/test/tCorrelate_3sec_2st_5sb.run b/RTCP/Cobalt/GPUProc/test/tCorrelate_3sec_2st_5sb.run index 93942e47d2944bb66284ea8561eb752f68bfca84..aa411aa40a9beed87706dc7768786ad156f53d18 100755 --- a/RTCP/Cobalt/GPUProc/test/tCorrelate_3sec_2st_5sb.run +++ b/RTCP/Cobalt/GPUProc/test/tCorrelate_3sec_2st_5sb.run @@ -4,5 +4,5 @@ TESTNAME=`basename "${0%%.run}"` PARSET=$srcdir/$TESTNAME.parset OUTPUT=$srcdir/$TESTNAME.output -$srcdir/testParset.sh "$PARSET" -r "$OUTPUT" || exit $? +$srcdir/testParset.sh -r "$OUTPUT" "$PARSET" || exit $? diff --git a/RTCP/Cobalt/GPUProc/test/testParset.sh b/RTCP/Cobalt/GPUProc/test/testParset.sh index e047965591d3c7d89b944f14bbfcd74fa2057766..902ad753e77944663c3e9a9f24c8932dd2f7d9b3 100755 --- a/RTCP/Cobalt/GPUProc/test/testParset.sh +++ b/RTCP/Cobalt/GPUProc/test/testParset.sh @@ -8,6 +8,8 @@ REFDIR= GPUEFFICIENCY=0 +echo "Invoked as" "$0" "$@" + # Parse options while getopts "r:g:" opt do @@ -32,13 +34,13 @@ do esac done +shift $((OPTIND-1)) + PARSET=$1 # Include some useful shell functions . $srcdir/testFuncs.sh -BINDIR=`pwd`/../src - # Some host info echo "Running as `whoami`" echo "Running on `hostname`" @@ -57,7 +59,7 @@ fi echo "Testing $PARSET" RUNDIR=`pwd` -OUTDIR=`basename "${PARSET%.parset}.in_output"` +OUTDIR=`basename "${PARSET%.parset}.output"` function parse_logs { @@ -98,9 +100,9 @@ function parse_logs export LOFARROOT=$srcdir/.. && # run correlator -- without profiling - mpirun -H localhost -np 4 $BINDIR/rtcp $PARSET > performance_normal.txt 2>&1 && + $RUNDIR/runrtcp.sh $PARSET > performance_normal.txt 2>&1 && # run correlator -- with profiling - mpirun -H localhost -np 4 $BINDIR/rtcp -p $PARSET > performance_profiled.txt 2>&1 && + $RUNDIR/runrtcp.sh -p $PARSET > performance_profiled.txt 2>&1 && # compare output if [ "x" != "x$REFDIR" ] @@ -112,16 +114,14 @@ function parse_logs for f in *.MS do - ${srcdir}/cmpfloat.py $f $REFDIR/$f || exit 1 + ${srcdir}/cmpfloat.py `pwd`/$f $REFDIR/$f || exit 1 done fi && # check logs - parse_logs performance_normal.txt performance_profiled.txt -) || exit 1 - -cd $RUNDIR + parse_logs performance_normal.txt performance_profiled.txt && -# toss output -rm -rf $OUTDIR + # toss output if everything is ok + (cd $RUNDIR && rm -rf $OUTDIR) +) || exit 1