#!/bin/csh

set PPN = 16

if ( $# < 3 ) then
  echo "This script requires three arguments:"
  echo "  NAMD input file"
  echo "  NAMD log file"
  echo "  number of nodes (number of cores / $PPN)"
  echo '  queue (defaults to "normal-mic", other option is "test")'
  exit -1
endif

set CONFFILE = $1
shift
set LOGFILE = $1
shift
set NUMNODES = $1
shift
@ NUMPROCS = $NUMNODES * $PPN

set QUEUE = normal-mic

if ( $# ) set QUEUE = $1

if ( $QUEUE == test ) then
  set TIME = 00:30:00
  set QUEUE = normal-mic
  if ( $NUMNODES < 17 ) set QUEUE = development
else if ( $QUEUE == short ) then
  set TIME = 00:30:00
  set QUEUE = normal-mic
else
  set TIME = 24:00:00
endif

if ( ! -f $CONFFILE) then
  echo "NAMD input file $CONFFILE does not exist!"
  exit -1
endif

if ( -f $LOGFILE) then
  echo "NAMD input file $LOGFILE already exists!"
  exit -1
endif

set RUNDIR = `pwd`

set MEMOPT = ""
if ( $0:t =~ *memopt* ) set MEMOPT = "-memopt"

#NAMD_2.9_Linux-x86_64-ibverbs-smp-Stampede              NAMD_2.9_Linux-x86_64-ibverbs-smp-Stampede-memopt      NAMD_2.9_Linux-x86_64-ibverbs-Stampede         NAMD_2.9_Linux-x86_64-verbs-smp-Stampede
#NAMD_2.9_Linux-x86_64-ibverbs-smp-Stampede-CUDA         NAMD_2.9_Linux-x86_64-ibverbs-smp-Stampede-MIC         NAMD_2.9_Linux-x86_64-ibverbs-Stampede-memopt  NAMD_2.9_Linux-x86_64-verbs-smp-Stampede-MIC
#NAMD_2.9_Linux-x86_64-ibverbs-smp-Stampede-CUDA-memopt  NAMD_2.9_Linux-x86_64-ibverbs-smp-Stampede-MIC-memopt  NAMD_2.9_Linux-x86_64-MVAPICH-Intel-Stampede   NAMD_2.9_Linux-x86_64-verbs-Stampede

set BINDIRS = /work/00288/tg455591/NAMD_LATEST_Linux-x86_64-ibverbs-smp-Stampede-memopt
set BINDIRM = /work/00288/tg455591/NAMD_LATEST_Linux-x86_64-ibverbs-smp-Stampede-MIC-memopt

set SCRIPTDIR = /home1/00288/tg455591/NAMD_scripts

@ REALNUMPROCS16 = $NUMNODES * 16
@ REALNUMPROCS15 = $NUMNODES * 15
@ REALNUMPROCS14 = $NUMNODES * 14
@ NUMTASKS = $NUMNODES

echo "Submitting NAMD run to queue $QUEUE for $TIME..."
echo ""
sbatch --job-name=NAMD --nodes=$NUMNODES --ntasks=$NUMTASKS --time=$TIME --partition=$QUEUE << ENDINPUT
#!/bin/bash

module load fftw3

$BINDIRM/charmrun +p$REALNUMPROCS15 ++ppn 15 ++mpiexec ++remote-shell $SCRIPTDIR/mpiexec $BINDIRM/namd2 +commap 0 +pemap 1-15 +devices 0 $CONFFILE >& $LOGFILE.m15
$BINDIRS/charmrun +p$REALNUMPROCS15 ++ppn 15 ++mpiexec ++remote-shell $SCRIPTDIR/mpiexec $BINDIRS/namd2 +commap 0 +pemap 1-15 $CONFFILE >& $LOGFILE.s15
$BINDIRM/charmrun +p$REALNUMPROCS14 ++ppn 14 ++mpiexec ++remote-shell $SCRIPTDIR/mpiexec $BINDIRM/namd2 +commap 0 +pemap 1-14 +devices 0 $CONFFILE >& $LOGFILE.m14
$BINDIRS/charmrun +p$REALNUMPROCS14 ++ppn 14 ++mpiexec ++remote-shell $SCRIPTDIR/mpiexec $BINDIRS/namd2 +commap 0 +pemap 1-14 $CONFFILE >& $LOGFILE.s14

ENDINPUT

