311 lines
8.0 KiB
Bash
Executable File
311 lines
8.0 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# Copyright © 2019-2023
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
show_usage()
|
|
{
|
|
echo "Vortex BlackBox Test Driver v1.0"
|
|
echo "Usage: $0 [[--clusters=#n] [--cores=#n] [--warps=#n] [--threads=#n] [--l2cache] [--l3cache] [[--driver=#name] [--app=#app] [--args=#args] [--debug=#level] [--scope] [--perf=#class] [--rebuild=#n] [--log=logfile] [--help]]"
|
|
}
|
|
|
|
show_help()
|
|
{
|
|
show_usage
|
|
echo " where"
|
|
echo "--driver: simx, rtlsim, oape, xrt"
|
|
echo "--app: any subfolder test under regression or opencl"
|
|
echo "--class: 0=disable, 1=pipeline, 2=memsys"
|
|
echo "--rebuild: 0=disable, 1=force, 2=auto, 3=temp"
|
|
}
|
|
|
|
SCRIPT_DIR=$(dirname "$0")
|
|
VORTEX_HOME=$SCRIPT_DIR/..
|
|
|
|
DRIVER=simx
|
|
APP=sgemm
|
|
CLUSTERS=1
|
|
CORES=1
|
|
WARPS=4
|
|
THREADS=4
|
|
L2=
|
|
L3=
|
|
DEBUG=0
|
|
DEBUG_LEVEL=0
|
|
SCOPE=0
|
|
HAS_ARGS=0
|
|
PERF_CLASS=0
|
|
REBUILD=2
|
|
TEMPBUILD=0
|
|
LOGFILE=run.log
|
|
|
|
for i in "$@"
|
|
do
|
|
case $i in
|
|
--driver=*)
|
|
DRIVER=${i#*=}
|
|
shift
|
|
;;
|
|
--app=*)
|
|
APP=${i#*=}
|
|
shift
|
|
;;
|
|
--clusters=*)
|
|
CLUSTERS=${i#*=}
|
|
shift
|
|
;;
|
|
--cores=*)
|
|
CORES=${i#*=}
|
|
shift
|
|
;;
|
|
--warps=*)
|
|
WARPS=${i#*=}
|
|
shift
|
|
;;
|
|
--threads=*)
|
|
THREADS=${i#*=}
|
|
shift
|
|
;;
|
|
--l2cache)
|
|
L2=-DL2_ENABLE
|
|
shift
|
|
;;
|
|
--l3cache)
|
|
L3=-DL3_ENABLE
|
|
shift
|
|
;;
|
|
--debug=*)
|
|
DEBUG_LEVEL=${i#*=}
|
|
DEBUG=1
|
|
shift
|
|
;;
|
|
--scope)
|
|
SCOPE=1
|
|
CORES=1
|
|
shift
|
|
;;
|
|
--perf=*)
|
|
PERF_FLAG=-DPERF_ENABLE
|
|
PERF_CLASS=${i#*=}
|
|
shift
|
|
;;
|
|
--args=*)
|
|
ARGS=${i#*=}
|
|
HAS_ARGS=1
|
|
shift
|
|
;;
|
|
--rebuild=*)
|
|
REBUILD=${i#*=}
|
|
shift
|
|
;;
|
|
--log=*)
|
|
LOGFILE=${i#*=}
|
|
shift
|
|
;;
|
|
--help)
|
|
show_help
|
|
exit 0
|
|
;;
|
|
*)
|
|
show_usage
|
|
exit -1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [ $REBUILD -eq 3 ];
|
|
then
|
|
REBUILD=1
|
|
TEMPBUILD=1
|
|
fi
|
|
|
|
case $DRIVER in
|
|
simx)
|
|
DRIVER_PATH=$VORTEX_HOME/runtime/simx
|
|
;;
|
|
rtlsim)
|
|
DRIVER_PATH=$VORTEX_HOME/runtime/rtlsim
|
|
;;
|
|
opae)
|
|
DRIVER_PATH=$VORTEX_HOME/runtime/opae
|
|
;;
|
|
xrt)
|
|
DRIVER_PATH=$VORTEX_HOME/runtime/xrt
|
|
;;
|
|
*)
|
|
echo "invalid driver: $DRIVER"
|
|
exit -1
|
|
;;
|
|
esac
|
|
|
|
if [ -d "$VORTEX_HOME/tests/opencl/$APP" ];
|
|
then
|
|
APP_PATH=$VORTEX_HOME/tests/opencl/$APP
|
|
elif [ -d "$VORTEX_HOME/tests/regression/$APP" ];
|
|
then
|
|
APP_PATH=$VORTEX_HOME/tests/regression/$APP
|
|
else
|
|
echo "Application folder not found: $APP"
|
|
exit -1
|
|
fi
|
|
|
|
CONFIGS="-DNUM_CLUSTERS=$CLUSTERS -DNUM_CORES=$CORES -DNUM_WARPS=$WARPS -DNUM_THREADS=$THREADS $L2 $L3 $PERF_FLAG $CONFIGS"
|
|
|
|
echo "CONFIGS=$CONFIGS"
|
|
|
|
if [ $REBUILD -ne 0 ]
|
|
then
|
|
BLACKBOX_CACHE=blackbox.$DRIVER.cache
|
|
if [ -f "$BLACKBOX_CACHE" ]
|
|
then
|
|
LAST_CONFIGS=`cat $BLACKBOX_CACHE`
|
|
fi
|
|
|
|
if [ $REBUILD -eq 1 ] || [ "$CONFIGS+$DEBUG+$SCOPE" != "$LAST_CONFIGS" ];
|
|
then
|
|
make -C $DRIVER_PATH clean > /dev/null
|
|
echo "$CONFIGS+$DEBUG+$SCOPE" > $BLACKBOX_CACHE
|
|
fi
|
|
fi
|
|
|
|
# export performance monitor class identifier
|
|
export PERF_CLASS=$PERF_CLASS
|
|
|
|
status=0
|
|
|
|
# ensure config update
|
|
make -C $VORTEX_HOME/hw config > /dev/null
|
|
|
|
# ensure the stub driver is present
|
|
make -C $VORTEX_HOME/runtime/stub > /dev/null
|
|
|
|
if [ $DEBUG -ne 0 ]
|
|
then
|
|
# running application
|
|
if [ $TEMPBUILD -eq 1 ]
|
|
then
|
|
# setup temp directory
|
|
TEMPDIR=$(mktemp -d)
|
|
mkdir -p "$TEMPDIR/$DRIVER"
|
|
|
|
# driver initialization
|
|
if [ $SCOPE -eq 1 ]
|
|
then
|
|
echo "running: DESTDIR=$TEMPDIR/$DRIVER DEBUG=$DEBUG_LEVEL SCOPE=1 CONFIGS=$CONFIGS make -C $DRIVER_PATH"
|
|
DESTDIR="$TEMPDIR/$DRIVER" DEBUG=$DEBUG_LEVEL SCOPE=1 CONFIGS="$CONFIGS" make -C $DRIVER_PATH > /dev/null
|
|
else
|
|
echo "running: DESTDIR=$TEMPDIR/$DRIVER DEBUG=$DEBUG_LEVEL CONFIGS=$CONFIGS make -C $DRIVER_PATH"
|
|
DESTDIR="$TEMPDIR/$DRIVER" DEBUG=$DEBUG_LEVEL CONFIGS="$CONFIGS" make -C $DRIVER_PATH > /dev/null
|
|
fi
|
|
|
|
# running application
|
|
if [ $HAS_ARGS -eq 1 ]
|
|
then
|
|
echo "running: VORTEX_RT_PATH=$TEMPDIR OPTS=$ARGS make -C $APP_PATH run-$DRIVER > $LOGFILE 2>&1"
|
|
VORTEX_RT_PATH=$TEMPDIR OPTS=$ARGS make -C $APP_PATH run-$DRIVER > $LOGFILE 2>&1
|
|
status=$?
|
|
else
|
|
echo "running: VORTEX_RT_PATH=$TEMPDIR make -C $APP_PATH run-$DRIVER > $LOGFILE 2>&1"
|
|
VORTEX_RT_PATH=$TEMPDIR make -C $APP_PATH run-$DRIVER > $LOGFILE 2>&1
|
|
status=$?
|
|
fi
|
|
|
|
# cleanup temp directory
|
|
trap "rm -rf $TEMPDIR" EXIT
|
|
else
|
|
# driver initialization
|
|
if [ $SCOPE -eq 1 ]
|
|
then
|
|
echo "running: DEBUG=$DEBUG_LEVEL SCOPE=1 CONFIGS=$CONFIGS make -C $DRIVER_PATH"
|
|
DEBUG=$DEBUG_LEVEL SCOPE=1 CONFIGS="$CONFIGS" make -C $DRIVER_PATH > /dev/null
|
|
else
|
|
echo "running: DEBUG=$DEBUG_LEVEL CONFIGS=$CONFIGS make -C $DRIVER_PATH"
|
|
DEBUG=$DEBUG_LEVEL CONFIGS="$CONFIGS" make -C $DRIVER_PATH > /dev/null
|
|
fi
|
|
|
|
# running application
|
|
if [ $HAS_ARGS -eq 1 ]
|
|
then
|
|
echo "running: OPTS=$ARGS make -C $APP_PATH run-$DRIVER > $LOGFILE 2>&1"
|
|
OPTS=$ARGS make -C $APP_PATH run-$DRIVER > $LOGFILE 2>&1
|
|
status=$?
|
|
else
|
|
echo "running: make -C $APP_PATH run-$DRIVER > $LOGFILE 2>&1"
|
|
make -C $APP_PATH run-$DRIVER > $LOGFILE 2>&1
|
|
status=$?
|
|
fi
|
|
fi
|
|
|
|
if [ -f "$APP_PATH/trace.vcd" ]
|
|
then
|
|
mv -f $APP_PATH/trace.vcd .
|
|
fi
|
|
else
|
|
if [ $TEMPBUILD -eq 1 ]
|
|
then
|
|
# setup temp directory
|
|
TEMPDIR=$(mktemp -d)
|
|
mkdir -p "$TEMPDIR/$DRIVER"
|
|
|
|
# driver initialization
|
|
if [ $SCOPE -eq 1 ]
|
|
then
|
|
echo "running: DESTDIR=$TEMPDIR/$DRIVER SCOPE=1 CONFIGS=$CONFIGS make -C $DRIVER_PATH"
|
|
DESTDIR="$TEMPDIR/$DRIVER" SCOPE=1 CONFIGS="$CONFIGS" make -C $DRIVER_PATH > /dev/null
|
|
else
|
|
echo "running: DESTDIR=$TEMPDIR/$DRIVER CONFIGS=$CONFIGS make -C $DRIVER_PATH"
|
|
DESTDIR="$TEMPDIR/$DRIVER" CONFIGS="$CONFIGS" make -C $DRIVER_PATH > /dev/null
|
|
fi
|
|
|
|
# running application
|
|
if [ $HAS_ARGS -eq 1 ]
|
|
then
|
|
echo "running: VORTEX_RT_PATH=$TEMPDIR OPTS=$ARGS make -C $APP_PATH run-$DRIVER"
|
|
VORTEX_RT_PATH=$TEMPDIR OPTS=$ARGS make -C $APP_PATH run-$DRIVER
|
|
status=$?
|
|
else
|
|
echo "running: VORTEX_RT_PATH=$TEMPDIR make -C $APP_PATH run-$DRIVER"
|
|
VORTEX_RT_PATH=$TEMPDIR make -C $APP_PATH run-$DRIVER
|
|
status=$?
|
|
fi
|
|
|
|
# cleanup temp directory
|
|
trap "rm -rf $TEMPDIR" EXIT
|
|
else
|
|
|
|
# driver initialization
|
|
if [ $SCOPE -eq 1 ]
|
|
then
|
|
echo "running: SCOPE=1 CONFIGS=$CONFIGS make -C $DRIVER_PATH"
|
|
SCOPE=1 CONFIGS="$CONFIGS" make -C $DRIVER_PATH > /dev/null
|
|
else
|
|
echo "running: CONFIGS=$CONFIGS make -C $DRIVER_PATH"
|
|
CONFIGS="$CONFIGS" make -C $DRIVER_PATH > /dev/null
|
|
fi
|
|
|
|
# running application
|
|
if [ $HAS_ARGS -eq 1 ]
|
|
then
|
|
echo "running: OPTS=$ARGS make -C $APP_PATH run-$DRIVER"
|
|
OPTS=$ARGS make -C $APP_PATH run-$DRIVER
|
|
status=$?
|
|
else
|
|
echo "running: make -C $APP_PATH run-$DRIVER"
|
|
make -C $APP_PATH run-$DRIVER
|
|
status=$?
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
exit $status
|