|
| 1 | +#! /usr/bin/env bash |
| 2 | +set -eu |
| 3 | + |
| 4 | +# Autodetect this workflow directory |
| 5 | +export APP_HOME=$( cd $( dirname $0 ) ; /bin/pwd ) |
| 6 | + |
| 7 | +#### set this variable to add new benchmarks directory |
| 8 | +RUNNERS_DIR=$APP_HOME/../../../../Benchmarks/Pilot1/P1B1:$APP_HOME/../../../../Benchmarks/Pilot2/P2B1:$APP_HOME/../../../../Benchmarks/Pilot3/P3B1:$APP_HOME/../../../../Benchmarks/Pilot1/NT3:$APP_HOME/../../../../Benchmarks/Pilot1/P1B3 |
| 9 | +### |
| 10 | +# The number of MPI processes |
| 11 | +# Note that 2 processes are reserved for Swift/EMEMS |
| 12 | +# The default of 4 gives you 2 workers, i.e., 2 concurrent Keras runs |
| 13 | +export PROCS=${PROCS:-36} |
| 14 | +# MPI processes per node |
| 15 | +# Cori has 32 cores per node, 128GB per node |
| 16 | +export PPN=${PPN:-1} |
| 17 | +export QUEUE=${QUEUE:-default} |
| 18 | +export WALLTIME=${WALLTIME:-01:20:00} |
| 19 | + |
| 20 | + |
| 21 | +if [ "$#" -ne 4 ]; then |
| 22 | + script_name=$(basename $0) |
| 23 | + echo "Usage: ${script_name} EXPERIMENT_ID (run1_p1b1) BENCHMARKS_NAME (eg. p1b1) SEARCH_TYPE (eg. grid or random) INPUT_JSON" |
| 24 | + echo "Example: ./run p1b1_experiment1 p1b1 random p1b1_settings.json" |
| 25 | + echo "-This creates a p1b1_experiment1 directory in ../experiments" |
| 26 | + echo " uses random scheme for variables specified in ../data/p1b1_settings.json file" |
| 27 | + exit 1 |
| 28 | +fi |
| 29 | + |
| 30 | +# uncomment to turn on swift/t logging. Can also set TURBINE_LOG, |
| 31 | +# TURBINE_DEBUG, and ADLB_DEBUG to 0 to turn off logging |
| 32 | +export TURBINE_LOG=1 TURBINE_DEBUG=1 ADLB_DEBUG=1 |
| 33 | + |
| 34 | +export EXPID=$1 |
| 35 | +export B_NAME=$2 |
| 36 | +export S_NAME=$3 |
| 37 | +export JSON_F=$4 |
| 38 | + |
| 39 | +export TURBINE_OUTPUT=$APP_HOME/../experiments/$EXPID |
| 40 | +export PROJECT=Candle_ECP |
| 41 | +export TURBINE_JOBNAME="${EXPID}_job" |
| 42 | + |
| 43 | +TCL=/home/wozniak/Public/sfw/theta/tcl-8.6.1 |
| 44 | +export R=/home/wozniak/Public/sfw/theta/R-3.4.0/lib64/R |
| 45 | +export PY=/home/rjain/anaconda2 |
| 46 | +export LD_LIBRARY_PATH=$PY/lib:$R/lib:$LD_LIBRARY_PATH |
| 47 | +COMMON_DIR=$APP_HOME/../../common/python |
| 48 | +PYTHONPATH=$APP_HOME/../python:$RUNNERS_DIR:$COMMON_DIR |
| 49 | +PYTHONHOME=/home/rjain/anaconda2 |
| 50 | + |
| 51 | +export PATH=/home/rjain/install/stc/bin:$TCL/bin:$PATH |
| 52 | +#$PYTHONHOME/bin:$TCL/bin:$PATH |
| 53 | + |
| 54 | +# Resident task workers and ranks |
| 55 | +export TURBINE_RESIDENT_WORK_WORKERS=1 |
| 56 | +export RESIDENT_WORK_RANKS=$(( PROCS - 2 )) |
| 57 | + |
| 58 | + |
| 59 | +TURBINE_DIR=/home/rjain/install/turbine/lib |
| 60 | + |
| 61 | +# set machine to your scheduler type (e.g. pbs, slurm, cobalt etc.), |
| 62 | +# or empty for an immediate non-queued unscheduled run |
| 63 | +MACHINE="theta" |
| 64 | + |
| 65 | +if [ -n "$MACHINE" ]; then |
| 66 | + MACHINE="-m $MACHINE" |
| 67 | +fi |
| 68 | + |
| 69 | +set -x |
| 70 | +WORKFLOW_SWIFT=rnd_or_grid.swift |
| 71 | +swift-t -n $PROCS $MACHINE -r $TURBINE_DIR \ |
| 72 | + -e LD_LIBRARY_PATH=$LD_LIBRARY_PATH \ |
| 73 | + -e TURBINE_RESIDENT_WORK_WORKERS=$TURBINE_RESIDENT_WORK_WORKERS \ |
| 74 | + -e RESIDENT_WORK_RANKS=$RESIDENT_WORK_RANKS \ |
| 75 | + -e APP_HOME=$APP_HOME \ |
| 76 | + -e PYTHONPATH=$PYTHONPATH \ |
| 77 | + -e PYTHONHOME=$PYTHONHOME \ |
| 78 | + -e TURBINE_DEBUG=$TURBINE_DEBUG\ |
| 79 | + -e ADLB_DEBUG=$ADLB_DEBUG \ |
| 80 | + -e TURBINE_OUTPUT=$TURBINE_OUTPUT \ |
| 81 | + $APP_HOME/$WORKFLOW_SWIFT --benchmark_name=$B_NAME --search_type=$S_NAME --input_file=$JSON_F & |
0 commit comments