Calc testjobs linux.sh: Difference between revisions
From Biowerkzeug Wiki
Jump to navigationJump to search
benchmarking and testing script |
mNo edit summary |
||
Line 1: | Line 1: | ||
This script allows running Hippo benchmarks. | This script allows running Hippo benchmarks without having to think too much about finding the correct binary and supplemental files. In addition it gives the total wall time required to run each test case; this can be used for crude benchmarks. | ||
<pre>#!/bin/bash | <pre>#!/bin/bash |
Revision as of 16:03, 7 December 2008
This script allows running Hippo benchmarks without having to think too much about finding the correct binary and supplemental files. In addition it gives the total wall time required to run each test case; this can be used for crude 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"