cc_staff
229
edits
(verbs-gpu example) |
|||
Line 158: | Line 158: | ||
namd2 +p8 +idlepoll apoa1.namd | namd2 +p8 +idlepoll apoa1.namd | ||
}} | }} | ||
==== Verbs-GPU Job ==== | |||
These provisional Instructions will be refined further once this configuration can be fully tested on the new clusters. | |||
This example uses 64 processes in total on 2 nodes, each node running 32 processes, thus fully utilizing its 32 cores. Each node uses 2 GPUs, so job uses 4 GPUs in total. This script assumes full nodes are used, thus ntasks/nodes should be 32 (on graham). For best performance, NAMD jobs should use full nodes. | |||
'''NOTE''': The verbs version will not run on cedar because of its different interconnect. Use the MPI version instead. | |||
{{File | |||
|name=verbsgpu_namd_job.sh | |||
|lang="sh" | |||
|contents= | |||
#!/bin/bash | |||
# | |||
#SBATCH --ntasks 64 # number of tasks | |||
#SBATCH --nodes=2 | |||
#SBATCH --mem 1024 # memory pool per process | |||
#SBATCH --gres=gpu:2 | |||
#SBATCH -o slurm.%N.%j.out # STDOUT | |||
#SBATCH -t 0:05:00 # time (D-HH:MM) | |||
#SBATCH --account=def-specifyaccount | |||
cat << EOF > nodefile.py | |||
#!/usr/bin/python | |||
import sys | |||
a=sys.argv[1] | |||
nodefile=open("nodefile.dat","w") | |||
cluster=a[0:3] | |||
for st in a.lstrip(cluster+"[").rstrip("]").split(","): | |||
d=st.split("-") | |||
start=int(d[0]) | |||
finish=start | |||
if(len(d)==2): | |||
finish=int(d[1]) | |||
for i in range(start,finish+1): | |||
nodefile.write("host "+cluster+str(i)+"\n") | |||
nodefile.close() | |||
EOF | |||
python nodefile.py $SLURM_NODELIST | |||
NODEFILE=nodefile.dat | |||
OMP_NUM_THREADS=32 | |||
P=$SLURM_NTASKS | |||
module load namd-verbs/2.12 | |||
CHARMRUN=`which charmrun` | |||
NAMD2=`which namd2` | |||
$CHARMRUN ++p $P ++ppn $OMP_NUM_THREADS ++nodelist $NODEFILE $NAMD2 +idlepoll apoa1.namd | |||
}} | |||
= Usage = | = Usage = |