ag_gen/build/run.sh
2022-07-15 17:59:43 -05:00

150 lines
4.7 KiB
Bash
Executable File

#!/usr/bin/env bash
#Optional Arguments for running batches of tests.
# These are meant to be specified by command line, but the :-{VAL} specifies the default to use.
# Can change the default here as desired. Ex: Changing to 2 Services would be: NUM_SERV=${1:-2}
NUM_SERV=${1:-1}
TYPE=${2:-sync} # sync or non-sync. Use sync unless you are specifically testing non-sync.
CARS=${3:-2} # used for network model scripting. Can ignore.
DBNAME=${4:-ag} # name of database table. can leave as default or change to whatever you prefer
NUM_THREADS=${5:-1} # number of OMP threads to use
NODES=${6:-1} # number of MPI nodes to use (for tasking or subgraphing)
MPI_TYPE=${7-serial} # tasking or subgraphing. Put serial or OMP if you do not wish to use MPI.
ESIZE=${8:-6} # exploit file scripting. Can ignore.
# Avoid multiple users fighting over same database if default name is used (hacky solution)
DBNAME="$DBNAME$USER"
### AG Gen Network Model and Exploit File settings - adjust as desired.
NM="../test_files/examples/WannaStripped.nm"
XP="../test_files/examples/WannaStripped.xp"
SYNC_XP="../test_files/examples/WannaStripped.xp"
### MPI Parameters - adjust as desired.
MPI_PARAMS="mpiexec --mca btl_openib_allow_ib 1 --mca opal_warn_on_missing_libcuda 0 -np ${NODES} --timeout 129600"
# Common Hammer parameters
MPI_HAMMER_PARAMS="mpiexec --mca btl_openib_allow_ib 1 --mca btl openib,self,vader --mca opal_warn_on_missing_libcuda 0 --bind-to numa --map-by numa -np ${NODES} --timeout 129600"
### AG Gen Parameters. Please run the AG generator with the '-h' parameter to see all options. Adjust as desired.
AG_PARAMS="-t ${NUM_THREADS} -q 1 -p -a 0.6 -z ${DBNAME}"
AG_SUBG_PARAMS="-t ${NUM_THREADS} -q 1 -p -a 0.6 -z ${DBNAME} -l 200 -s"
AG_TASK_PARAMS="-t ${NUM_THREADS} -q 1 -p -a 0.6 -z ${DBNAME} -e"
# Do you want to create an SVG from the DOTFILE? Uncomment/comment to select
CREATE_SVG="true"
#CREATE_SVG="false"
# If using MPI Subgraphing, do you want to use a DHT? Uncomment to select, and please adjust the BCL Hash Size
#DHT="true"
DHT="false"
BCLHASH=2300
### Running
# Var concats
if [ "$DHT" == "true" ]; then
AG_SUBG_PARAMS+=" -uf "
AG_SUBG_PARAMS+=${BCLHASH}
fi
if [ "$CREATE_SVG" == "true" ]; then
AG_PARAMS+=" -g DOTFILE.dot"
AG_SUBG_PARAMS+=" -g DOTFILE.dot"
AG_TASK_PARAMS+=" -g DOTFILE.dot"
fi
if [ "$TYPE" == "sync" ]; then
XP="$SYNC_XP"
fi
## Database Work
#Hammer
if [ "$(dnsdomainname)" = "hammer.esg.utulsa.edu" ]; then
#Database stored on node with port
if psql -p 5240 -h compute03 ${DBNAME} -c '\q' 2>&1; then
echo "Database ${DBNAME} exists. Dropping and recreating from dump."
psql -p 5240 -h compute03 postgres -c "DROP DATABASE "$DBNAME""
psql -p 5240 -h compute03 postgres -c "CREATE DATABASE "$DBNAME" WITH OWNER = ag_gen"
psql -q -p 5240 -h compute03 "$DBNAME" < schema.sql
else
echo "Database ${DBNAME} does not exist. Creating and importing from dump."
psql -p 5240 -h compute03 postgres -c "CREATE DATABASE "$DBNAME" WITH OWNER = ag_gen"
psql -q -p 5240 -h compute03 "$DBNAME" < schema.sql
fi
#Local
else
if psql ${DBNAME} -c '\q' 2>&1; then
echo "Database ${DBNAME} exists. Dropping and recreating from dump."
psql postgres -c "DROP DATABASE "$DBNAME""
psql postgres -c "CREATE DATABASE "$DBNAME" WITH OWNER = ag_gen"
psql -q "$DBNAME" < schema.sql
else
echo "Database ${DBNAME} does not exist. Creating and importing from dump."
psql postgres -c "CREATE DATABASE "$DBNAME" WITH OWNER = ag_gen"
psql -q "$DBNAME" < schema.sql
fi
fi
## Running the scripts
# NOTE: Do not use 'bash -c' or 'eval' unless you fully understand shell parsing. We are building an array
# of arguments dynamically to avoid wordsplitting and wildcard expansions
CMD=()
if [ "$(dnsdomainname)" = "hammer.esg.utulsa.edu" ]; then
CMD+=$MPI_HAMMER_PARAMS
CMD+=" ./ag_gen -n "
CMD+=${NM}
CMD+=" -x "
CMD+=${XP}
CMD+=" "
if [ "$MPI_TYPE" == subgraphing ]; then
CMD+=${AG_SUBG_PARAMS}
${CMD}
elif [ "$MPI_TYPE" == tasking ]; then
CMD+=${AG_TASK_PARAMS}
${CMD}
elif [ "$MPI_TYPE" == testing ]; then
CMD+=${AG_PARAMS}
${CMD}
else
CMD+=${AG_PARAMS}
${CMD}
#Serial/OMP
fi #Subg/Task/Serial/OMP
#Local
else
CMD+=${MPI_PARAMS}
CMD+=" ./ag_gen -n "
CMD+=${NM}
CMD+=" -x "
CMD+=${XP}
CMD+=" "
if [ "$MPI_TYPE" == subgraphing ]; then
CMD+=${AG_SUBG_PARAMS}
${CMD}
elif [ "$MPI_TYPE" == tasking ]; then
CMD+=${AG_TASK_PARAMS}
${CMD}
elif [ "$MPI_TYPE" == testing ]; then
CMD+=${AG_PARAMS}
${CMD}
else
#Serial/OMP
CMD+=${AG_PARAMS}
${CMD}
fi
fi #END Hammer/Non-Hammer
#Graphviz Strict graphing to avoid duplicate nodes and edges
if [ "$CREATE_SVG" = "true" ]; then
echo -n 'strict ' | cat - DOTFILE.dot > temp && mv temp DOTFILE.dot
#dot -Tsvg new.dot > ag.svg
dot -Tsvg DOTFILE.dot > ag.svg
fi