NAMD
NAMD is a parallel molecular dynamics code designed for high-performance simulation of large biomolecular systems.
- Version: 2.14
- Machines: Clusters with InfiniBand network
- Location: /uufs/chpc.utah.edu/sys/installdir/namd
Information:
To get details of the functionality of VMD visit the website: http://www.ks.uiuc.edu/Research/namd/
We have the smp cpu version (ml namd/2.14.verbs-smp) as well as a GPU build (ml namd/2.14.verbs-smp-CUDA). On the Lonepeak cluster, which does not have the InfiniBand network, use the namd/2.14.netlrts.
To Use:
The builds that we provide have support the InfiniBand network through the ibverbs interface. NAMD uses charm++ parallel objects for parallelization and as such the program launch uses the charmrun interface. One also has to create a specific host file that lists the nodes on which to run.
The SLURM script written in tcsh to run on notchpeak or kingspeak needs to include the following:
#load NAMD module
module load namd/2.14.verbs-smp
set NAMD2_FULLPATH = `which namd`
#set up hostfile
srun hostname | sort > nodefile
echo group main > hostfile
set NODES = `cat nodefile`
foreach node ( $NODES )
echo host $node >> hostfile
end
# run NAMD via charmrun, substituting in your input and output file names
charmrun $NAMD2_FULLPATH ++n $SLURM_NNODES ++ppn $SLURM_CPUS_ON_NODE ++nodelist hostfile ubq_ws.namd > ubq_ws.log
Note that in this case we run one process per node (++n), using $SLURM_CPUS_ON_NODE number of PEs (processing elements, +ppn). This seems to give higher performance than running one process per task:
charmrun $NAMD2_FULLPATH ++ppn $SLURM_NTASKS ++nodelist hostfile ubq_ws.namd > ubq_ws.log
However, we encourage to try a few combinations of processes per node and PEs per process (e.g. 2 processes per node, $SLURM_CPUS_ON_NODE/2 PEs, etc.) , to see what combination gives the best, as this combination may be CPU type specific.
For Lonepeak, we recommend to run only on a single node, since the Ethernet network is relatively slow. That is:
module load namd/2.14.verbs-smp
set NAMD2_FULLPATH = `which namd2`
# prepare hostfile for charmrun
srun hostname | sort > nodefile
echo group main > hostfile
set NODES = `cat nodefile`
foreach node ( $NODES )
echo host $node >> hostfile
end
# run NAMD via charmrun
charmrun $NAMD2_FULLPATH +p1 +ppn$SLURM_NTASKS ++nodelist hostfile +setcpuaffinity in.namd > in.log