Skip to content

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

 

Last Updated: 7/5/23