From 7dfcc480ba1e19bd3232349fc733caef94034292 Mon Sep 17 00:00:00 2001 From: stainer_t Date: Mon, 8 Sep 2025 13:48:49 +0200 Subject: Initial commit from Polytechnique Montreal --- Dragon/rdragon | 166 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 166 insertions(+) create mode 100755 Dragon/rdragon (limited to 'Dragon/rdragon') diff --git a/Dragon/rdragon b/Dragon/rdragon new file mode 100755 index 0000000..7f77638 --- /dev/null +++ b/Dragon/rdragon @@ -0,0 +1,166 @@ +#!/bin/sh +# +# author : A. Hebert +# use : rdragon [-c:|-q|-w|-p:|-i:] +# note : must be located on directory ./data/ +# If exists, it is executed. +# -c name of compiler +# -q quiet execution for regression testing +# -w to execute in console (for debug purpose) +# -p number of parallel threads (=1 by default) +# -i name of x2m dataset (by default, use the last argument) +# +if [ $# = 0 ] + then + echo "usage: rdragon [-c:|-q|-w|-p:|-i:] " 1>&2 + exit 1 +fi +System=`uname -s` +Sysx="`echo $System | cut -b -6`" +if [ $Sysx = "CYGWIN" ]; then + MACH=`uname -o` +elif [ $Sysx = "AIX" ]; then + MACH=`uname -s` +else + MACH=`uname -sm | sed 's/[ ]/_/'` +fi + +for last; do : ; done +mydata=${last} +typ='custom' +quiet=0 +term=0 +nomp=0 + +while getopts ":c:qwi:p:" opt; do + case $opt in + c) typ="$OPTARG" + ;; + q) quiet=1 + ;; + w) term=1 + ;; + p) nomp=$OPTARG + ;; + i) mydata=$OPTARG + ;; + \?) echo "Invalid option -$OPTARG" >&2 + exit 1 + ;; + esac + + case $OPTARG in + -*) echo "Option $opt needs a valid argument" + exit 1 + ;; + esac +done + +xxx=`basename $mydata .x2m` +Code=`basename "$PWD"` +if [ $quiet = 0 ]; then + echo 'execute' $xxx 'with' $Code 'on system' $MACH 'with' $typ 'compiler' +fi + +if [ -d "$MACH" ]; then + if [ $quiet = 0 ]; then + echo 'use the existing directory' $MACH + fi +else + echo 'creation of directory' $MACH + mkdir "$MACH" +fi +CodeDir=$PWD + +if [ $Sysx = "AIX" ]; then + Tmpdir=/usr/tmp +elif [ $Sysx = "SunOS" ]; then + Tmpdir=/var/tmp +else + Tmpdir=/tmp +fi +inum=1 +while [ -d $Tmpdir/rundir$inum ] + do + inum=`expr $inum + 1 ` +done +Rundir=$Tmpdir/rundir$inum +mkdir $Rundir +if [ $quiet = 0 ]; then + echo "RunDirectory:" $Rundir +fi +cd $Rundir + +if [ $typ = 'custom' ]; then + cp "$CodeDir"/bin/"$MACH"/$Code ./code +else + cp "$CodeDir"/bin/"$MACH"'_'$typ/$Code ./code +fi +cp "$CodeDir"/data/$mydata ./mydata + +export NO_STOP_MESSAGE=1 +if [ -d "$CodeDir"/data/`echo $xxx`_proc ]; then + cp "$CodeDir"/data/`echo $xxx`_proc/*.c2m . 2> /dev/null +fi +if [ -f "$CodeDir"/data/$xxx.access ]; then + if [ $quiet = 0 ]; then + "$CodeDir"/data/$xxx.access "$CodeDir" + else + "$CodeDir"/data/$xxx.access "$CodeDir" > /dev/null + fi +fi +if [ -f "$CodeDir"/data/assertS.c2m ]; then + cp "$CodeDir"/data/assertS.c2m . +fi +if [ -f "$CodeDir"/data/assertV.c2m ]; then + cp "$CodeDir"/data/assertV.c2m . +fi +before=$(date +%s) +if [ $nomp != 0 ]; then + echo 'number of OpenMP threads=' $nomp + export OMP_NUM_THREADS=$nomp + if command -v numactl >&2; then + numactl --cpunodebind=0 --membind=0 2>/dev/null + echo "use NUMA memory policy" + fi +else + export OMP_NUM_THREADS=1 +fi +if [ $term = 0 ]; then + ./code $xxx.result +elif [ $term = 1 ]; then + ./code /dev/null + fi +fi +mv $xxx.result "$CodeDir"/"$MACH" +if [ $quiet = 0 ]; then + echo 'the listing is located on ./'$MACH +fi + +cd "$CodeDir"/"$MACH" +if [ $quiet = 0 ] && [ $term = 0 ]; then + tail -15 $xxx.result +elif [ $term = 0 ]; then + RED='\033[0;31m' + GREEN='\033[0;32m' + NC='\033[0m' # No Color + if tail $xxx.result | grep -q "normal end" ; then + printf "${GREEN}[OK]${NC}\n" + else + printf "${RED}[FAILED]${NC}\n" + fi +fi +chmod -R 777 $Rundir +/bin/rm -r -f $Rundir +cd .. -- cgit v1.2.3