Calc testjobs linux.sh
From Biowerkzeug Wiki
This script allows running Hippo benchmarks.
#!/bin/bash
# Running Hippo tests (Linux)
# Copyright (c) 2008 Biowerkzeug
# Oliver Beckstein <orbeckst@gmail.com>
#set -x
prog=$(basename $0)
CURDIR=${PWD}
# defaults (: can be set in environment)
: ${HIPPO_DIR:="${CURDIR}/.."}
HIPPO_TESTS="hexane_NVT_dp_MD octane_NPT_sp_MC pentadecane_NPT_sp_MD tip3p_NPT_sp_MD trpzip2_GBSA_MC vpu_GBIM_MC walp_octane_NPT_sp_MD"
RUN_TESTS=${HIPPO_TESTS}
USE_MPI=0
usage="usage $prog [opts] [tests]
Run Hippo tests. By default it runs all of them:
${HIPPO_TESTS}
OPTIONS:
-h help
-n number of threads (not possible for all tests)
-D directory where we look for Hippo executables [${HIPPO_DIR}]
-M use mpi (replica exchange) binaries [${USE_MPI}]
Environment variables:
HIPPO_DIR overrides -D [${HIPPO_DIR}]
"
function die () {
local msg="$1" err=${2:-1}
echo 1>&2 "ERROR: failed in $PWD: ${msg}"
cd ${CURDIR}
exit $err
}
NSLOTS=1
# opt processing
while getopts hn:D:M: opt; do
case $opt in
h) echo "$usage"; exit 0;;
n) NSLOTS=${OPTARG};;
D) HIPPO_DIR=${OPTARG};;
M) USE_MPI=${OPTARG};;
*) die "Unknown option" 1;;
esac
done
#echo "OPTIND=$OPTIND OPTARG=$OPTARG argv=$*"
shift $((OPTIND - 1))
if [ -n "$*" ]; then
RUN_TESTS="$*"
fi
echo "Running the following tests using ${NSLOTS} threads: ${RUN_TESTS}"
# find working executable
# we'll use the first one that only complain about missing input file
#
if [ ${USE_MPI} = 0 ]; then
echo "Only trying single cpu binaries"
_HIPPO_BINARIES="hippo hippo_p3"
else
_HIPPO_BINARIES="hippo_mpi hippo hippo_p3_mpi hippo_p3"
fi
HIPPO="not_found"
rm -f hippo_input.txt # clean any input files
for h in ${_HIPPO_BINARIES}; do
exe="${HIPPO_DIR}/${h}"
if ${exe} 2>&1 | egrep "^Hippo.*Copyright.*Biowerkzeug" >/dev/null; then
HIPPO=${exe}
break
fi
done
if [ "${HIPPO}" = "not_found" ]; then
ARCH=$(uname -m);
OS=$(uname -s);
die "No usable hippo executable found; see if there is one at
http://www.biowerkzeug.com for your architecture ${ARCH} and operating
system ${OS}. "
fi
echo "Using executable ${HIPPO}"
TOPOLOGY=${HIPPO_DIR}/hippo_protein_database.dat
FF=${HIPPO_DIR}/oplsaa_forcefield.dat
echo "Setting up test directory"
rm -rf test
mkdir test
cd test
topdir="${CURDIR}/test"
function setup_hippo () {
local numthreads=${1:-1}
local input=hippo_input.txt
cp ${HIPPO} ./hippo || return $?
cp ${TOPOLOGY} . || return $?
cp ${FF} . || return $?
test -e $input || die "Missing run input file $input in $PWD"
if [ $NSLOTS -gt 1 ]; then
# adjusting for OpenMP run
sed -i.orig -e "s/[[:space:]]*openMP numthreads.*/openMP numthreads ${numthreads}/" $input
fi
return 0
}
function run_test () {
local testdir="$1" numthreads="${2:-1}"
echo "---------------------------------------------------------"
cd ${testdir} || die "Cannot 'cd ${testdir}'"
setup_hippo ${numthreads} || die "setup_hippo() failed"
echo "Set up all files for NSLOTS=${numthreads}"
echo "Running hippo test case ${testdir}..."
t_start=$(date +%s)
./hippo
t_stop=$(date +%s)
delta_t=$(( t_stop-t_start ))
echo "Completed hippo test case ${testdir} in ${delta_t} seconds, running ${numthreads} threads"
echo "BENCHMARK: ${testdir} ${numthreads} ${delta_t}"
cd ${topdir}
}
cp -r ../jobs/* .
for t in ${RUN_TESTS};
do run_test $t ${NSLOTS}
done
echo "Finished running hippo test suite"