hosts.sh 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. ##########################################
  2. ## HOSTNAMES ##
  3. ##########################################
  4. function run_cheaha() {
  5. echo "#!/usr/bin/env bash" > temp_sbatch
  6. echo "#SBATCH --ntasks=${ntasks}" >> temp_sbatch
  7. echo "#SBATCH --partition=${partition}" >> temp_sbatch
  8. echo "#SBATCH --time=${time}" >> temp_sbatch
  9. echo "#SBATCH --mem-per-cpu=${mem_per_cpu}" >> temp_sbatch
  10. echo "#SBATCH --nodes=${nodes}" >> temp_sbatch
  11. echo "#SBATCH --job-name=${job}_${this_step}_${final_step_num}" >> temp_sbatch
  12. echo '# Load module(s)' >> temp_sbatch
  13. echo 'module load rc/NAMD/2.12' >> temp_sbatch
  14. # generate temp NAMD nodelist
  15. echo 'for n in `echo ${SLURM_NODELIST} | scontrol show hostnames`; do' >> temp_sbatch
  16. echo ' echo "host $n ++cpus 24" >> ${TMPDIR}/nodelist.${SLURM_JOBID}' >> temp_sbatch
  17. echo 'done' >> temp_sbatch
  18. # calculate ppn
  19. echo 'PPN=$(expr $SLURM_NTASKS / $SLURM_NNODES - 1)' >> temp_sbatch
  20. echo 'P="$(($PPN * $SLURM_NNODES))"' >> temp_sbatch
  21. # find namd location
  22. echo 'namd_bin="$(which namd2)"' >> temp_sbatch
  23. echo "$(echo "${namd_param}") ${conf} > ${out}" >> temp_sbatch
  24. # cleanup temp NAMD nodelist
  25. echo 'rm ${TMPDIR}/nodelist.${SLURM_JOBID}' >> temp_sbatch
  26. # submit using sbatch
  27. sbatch temp_sbatch
  28. rm temp_sbatch
  29. }
  30. function run_workstation() {
  31. $(echo "${namd_param}") ${conf} > ${out}
  32. }
  33. function run_asc() {
  34. job_name_pref=${job##*.}_${this_step}_${final_step_num}
  35. /apps/scripts/check_ssh
  36. /apps/scripts/qquery program=namd input=$conf
  37. # create ~/.asc_queue
  38. echo 'start_time_pref=SOONEST' > ${HOME}/.asc_queue
  39. echo "job_name_pref=${job_name_pref}" >> ${HOME}/.asc_queue
  40. echo "queue_name_pref=${queue_name_pref}" >> ${HOME}/.asc_queue
  41. echo "num_cpus_pref=${num_cpus_pref}" >> ${HOME}/.asc_queue
  42. echo "cpu_time_pref=${cpu_time_pref}" >> ${HOME}/.asc_queue
  43. echo "memory_pref=${memory_pref}" >> ${HOME}/.asc_queue
  44. echo "cluster_pref=${cluster_pref}" >> ${HOME}/.asc_queue
  45. if [ -f qfile ]
  46. then
  47. read queue time memory sttime num_cpus < qfile
  48. rm qfile
  49. else
  50. echo "ERROR: qfile not found"
  51. echo " Make sure you have write permissions in this directory"
  52. exit
  53. fi
  54. # get limits
  55. limits=`/apps/scripts/set_limits $time $num_cpus NA $memory NA NA`
  56. # get qos
  57. qos=`/apps/scripts/set_qos $queue`
  58. # get constraints
  59. constraints="--constraint=dmc|uv" # both clusters, not KNL
  60. echo '#!/usr/bin/env bash' > temp_sbatch
  61. echo 'pwd="$(pwd)"' >> temp_sbatch
  62. echo 'echo "pwd: $pwd"' >> temp_sbatch
  63. echo '# set the workdir variable' >> temp_sbatch
  64. echo "export workdir=/scratch/${LOGNAME}/${job##*./}" >> temp_sbatch
  65. echo 'echo "workdir: $workdir"' >> temp_sbatch
  66. echo '# load modules' >> temp_sbatch
  67. echo 'source /opt/asn/etc/asn-bash-profiles-special/modules.sh' >> temp_sbatch
  68. echo 'module purge' >> temp_sbatch
  69. echo 'if [ ! -d $workdir ]' >> temp_sbatch
  70. echo 'then' >> temp_sbatch
  71. echo ' mkdir -p $workdir' >> temp_sbatch
  72. echo 'fi' >> temp_sbatch
  73. echo 'export TEMPDIR=$workdir' >> temp_sbatch
  74. echo 'export TMPDIR=$workdir' >> temp_sbatch
  75. echo 'export CONV_RSH=ssh' >> temp_sbatch
  76. echo '# run from the current directory' >> temp_sbatch
  77. echo "./cp_wild_r $job \$workdir" >> temp_sbatch
  78. echo 'sleep 15' >> temp_sbatch
  79. echo 'cd $workdir' >> temp_sbatch
  80. echo 'export uv_test=`hostname | grep uv | wc -l`' >> temp_sbatch
  81. echo 'export dmc_test=`hostname | grep dmc | wc -l`' >> temp_sbatch
  82. echo '# code for the DMC' >> temp_sbatch
  83. echo 'if [ $dmc_test == "1" ]' >> temp_sbatch
  84. echo 'then' >> temp_sbatch
  85. echo ' module purge' >> temp_sbatch
  86. echo ' module load namd/2.12_ibverbs' >> temp_sbatch
  87. echo ' namd_bin="$(which namd2)"' >> temp_sbatch
  88. echo ' # run NAMD' >> temp_sbatch
  89. echo ' alias mpiexec="srun"' >> temp_sbatch
  90. echo " charmrun +p $num_cpus_pref ++mpiexec \${namd_bin} ${conf##*/} > ${out##*/}" >> temp_sbatch
  91. echo 'fi' >> temp_sbatch
  92. echo '# code for the UV' >> temp_sbatch
  93. echo 'if [ "$uv_test" == "1" ]' >> temp_sbatch
  94. echo 'then' >> temp_sbatch
  95. echo ' module purge' >> temp_sbatch
  96. echo ' module load namd/2.12' >> temp_sbatch
  97. echo ' namd_bin="$(which namd2)"' >> temp_sbatch
  98. echo ' # run NAMD' >> temp_sbatch
  99. echo " charmrun +p $num_cpus_pref \${namd_bin} ${conf##*/} > ${out##*/}" >> temp_sbatch
  100. echo 'fi' >> temp_sbatch
  101. echo 'sleep 10' >> temp_sbatch
  102. echo 'cd ${pwd}' >> temp_sbatch
  103. echo "./cp_wild_r \$workdir $job" >> temp_sbatch
  104. echo 'sleep 15' >> temp_sbatch
  105. echo 'rm -r $workdir' >> temp_sbatch
  106. echo 'exit 0' >> temp_sbatch
  107. sbatch $qos -J $job_name_pref --begin=$sttime --requeue $limits $constraints temp_sbatch
  108. rm temp_sbatch
  109. }