MOLECULAR DYNAMICS PERFORMANCE GUIDE - COMPUTE CANADA

SOFTWARE DETAILS

ID=7, NAMD2.cuda

  • Module/Version: namd-multicore/2.14
  • Toolchain/Version: iimklc/2020a
  • CPU instruction set: avx2
  • Example job submission script:
    1. #!/bin/bash
    2. #SBATCH -c4 --mem-per-cpu=4000 --time=1:0:0 --gres=gpu:v100:1
    3. module --force purge
    4. module load StdEnv/2020 intel/2020.1.217 cuda/11.0 namd-multicore/2.14
    5. namd2 +p${SLURM_CPUS_PER_TASK } +idlepoll namd.in
  • Benchmark submission script:
    1. #!/bin/bash
    2. #SBATCH -c40 --gres=gpu:v100:2
    3. #SBATCH --mem-per-cpu=2000 --time=1:0:0
    4. # Usage: sbatch submit.cuda.sh [number_of_steps]
    5. INPFILE=namd.in
    6. # End of user input
    7. STEPS=$1
    8. TMPFILE=tf_${SLURM_CPUS_PER_TASK}
    9. cp $INPFILE run.in
    10. echo numsteps $1 >> run.in
    11. module --force purge
    12. module load StdEnv/2020 intel/2020.1.217 cuda/11.0 namd-multicore/2.14
    13. # Print resource info
    14. echo ${SLURM_NODELIST} running on ${SLURM_CPUS_PER_TASK} cores
    15. cat /proc/cpuinfo | grep "model name" | uniq
    16. # Run simulation three times
    17. namd2 +p${SLURM_CPUS_PER_TASK} +idlepoll run.in > $TMPFILE
    18. namd2 +p${SLURM_CPUS_PER_TASK} +idlepoll run.in >> $TMPFILE
    19. namd2 +p${SLURM_CPUS_PER_TASK} +idlepoll run.in >> $TMPFILE
    20. # Print average of three runs.
    21. echo -n "ns/day:"
    22. grep CPUTime $TMPFILE | cut -f5 -d " " | awk -v steps=${STEPS} \
    23. '{ total += $1; count++ } END { print count*3.6*2.4*steps*0.01/total}'
    24. rm -f tf_* *.restart.* *.old *.BAK run.in