MOLECULAR DYNAMICS PERFORMANCE GUIDE - Digital Research Alliance of CANADA

SOFTWARE DETAILS

ID=16, PMEMD.cuda.MPI

  • Module/Version: amber/20.12-20.15
  • Toolchain/Version: gofbc/2020.1.403.114
  • CPU instruction set: avx512
  • Example job submission script:

    #SBATCH --nodes=1 --ntasks=2 --gpus-per-node=a100:2
    #SBATCH --mem-per-cpu=2000 --time=1:0:0

    module --force purge
    ml StdEnv/2020 gcc/9.3.0 cuda/11.4 openmpi/4.0.3 amber/20.12-20.15

    srun pmemd.cuda_SPFP.MPI -O -i $INPFILE -o $LOGFILE -p prmtop.parm7 -c restart.rst7

  • Benchmark submission script:
      

    #!/bin/bash
    #SBATCH --nodes=1 --ntasks=2 --gpus-per-node=a100:2
    #SBATCH --mem-per-cpu=2000 --time=1:0:0
    # Usage: sbatch submit.cuda.sh]
    INPFILE=pmemd_prod.in
    STEPS=20000
    # End of user input
    TMPFILE=tf_${SLURM_NTASKS}
    LOGFILE=production_${SLURM_NTASKS}.log
    module --force purge
    ml StdEnv/2020 gcc/9.3.0 cuda/11.4 openmpi/4.0.3 amber/20.12-20.15
    # Print resource info
    echo ${SLURM_NODELIST} running on ${SLURM_NTASKS} tasks
    cat /proc/cpuinfo | grep "model name" | uniq
    # Run simulation three times
    srun pmemd.cuda_SPFP.MPI -O -i $INPFILE -o $LOGFILE -p prmtop.parm7 -c restart.rst7
    grep "NonSetup CPU time" $LOGFILE > $TMPFILE
    srun pmemd.cuda_SPFP.MPI -O -i $INPFILE -o $LOGFILE -p prmtop.parm7 -c restart.rst7
    grep "NonSetup CPU time" $LOGFILE >> $TMPFILE
    srun pmemd.cuda_SPFP.MPI -O -i $INPFILE -o $LOGFILE -p prmtop.parm7 -c restart.rst7
    grep "NonSetup CPU time" $LOGFILE >> $TMPFILE
    # Print average of three runs.
    echo -n "ns/day:"
    awk -v steps=$STEPS '{total += $6; count++ } END { print count*3.6*2.4*steps*0.01/total}' $TMPFILE
    rm $TMPFILE $LOGFILE mdinfo mdcrd restrt