84 lines
2.1 KiB
Bash
84 lines
2.1 KiB
Bash
|
#!/usr/bin/env bash
|
||
|
##
|
||
|
## BSD 3-Clause License
|
||
|
##
|
||
|
## This file is part of the Basalt project.
|
||
|
## https://gitlab.com/VladyslavUsenko/basalt.git
|
||
|
##
|
||
|
## Copyright (c) 2019-2021, Vladyslav Usenko and Nikolaus Demmel.
|
||
|
## All rights reserved.
|
||
|
##
|
||
|
|
||
|
#
|
||
|
# This script runs on the slurm nodes to run rootba for one config.
|
||
|
|
||
|
set -e
|
||
|
set -o pipefail
|
||
|
set -x
|
||
|
|
||
|
error() {
|
||
|
local parent_lineno="$1"
|
||
|
local message="$2"
|
||
|
local code="${3:-1}"
|
||
|
if [[ -n "$message" ]] ; then
|
||
|
echo "Error on or near line ${parent_lineno}: ${message}; exiting with status ${code}"
|
||
|
else
|
||
|
echo "Error on or near line ${parent_lineno}; exiting with status ${code}"
|
||
|
fi
|
||
|
echo "Failed" >> status.log
|
||
|
exit "${code}"
|
||
|
}
|
||
|
trap 'error ${LINENO}' ERR
|
||
|
|
||
|
# number of logical cores on linux and macos
|
||
|
NUM_CORES=`(which nproc > /dev/null && nproc) || sysctl -n hw.logicalcpu || echo 1`
|
||
|
|
||
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
||
|
|
||
|
BASALT_BIN_DIR="${BASALT_BIN_DIR:-$SCRIPT_DIR/../../build}"
|
||
|
|
||
|
FOLDER="${1}"
|
||
|
|
||
|
cd "$FOLDER"
|
||
|
|
||
|
if ! which time 2> /dev/null; then
|
||
|
echo "Did not find 'time' executable. Not installed?"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||
|
TIMECMD="`which time` -lp"
|
||
|
else
|
||
|
TIMECMD="`which time` -v"
|
||
|
fi
|
||
|
|
||
|
echo "Started" >> status.log
|
||
|
|
||
|
# set environment variables according to config
|
||
|
while read l; do
|
||
|
if [ -n "$l" ]; then
|
||
|
eval "export $l"
|
||
|
fi
|
||
|
done <<< `"$SCRIPT_DIR"/query-config.py basalt_config.json batch_run.env --format-env`
|
||
|
|
||
|
# lookup executable to run
|
||
|
EXECUTABLE=`"$SCRIPT_DIR"/query-config.py basalt_config.json batch_run.executable basalt_vio`
|
||
|
|
||
|
# lookup args
|
||
|
ARGS=`"$SCRIPT_DIR"/query-config.py basalt_config.json batch_run.args --format-cli`
|
||
|
|
||
|
CMD="$BASALT_BIN_DIR/$EXECUTABLE"
|
||
|
|
||
|
echo "Running on '`hostname`', nproc: $NUM_CORES, bin: $CMD"
|
||
|
|
||
|
# run as many times as specified (for timing tests to make sure filecache is hot); default is once
|
||
|
rm -f output.log
|
||
|
NUM_RUNS=`"$SCRIPT_DIR"/query-config.py basalt_config.json batch_run.num_runs 1`
|
||
|
echo "Will run $NUM_RUNS times."
|
||
|
for i in $(seq $NUM_RUNS); do
|
||
|
echo ">>> Run $i" |& tee -a output.log
|
||
|
{ $TIMECMD "$CMD" $ARGS; } |& tee -a output.log
|
||
|
done
|
||
|
|
||
|
echo "Completed" >> status.log
|