Namd

Program description

NAMD is a software package for simulating the behavior of molecules and systems of molecules composed of a huge number of atoms. It was developed at the University of Illinois and is used mainly in molecular biology. It allows the structure and behavior of genes and proteins to be studied; for example, NAMD was used to build a model of the HIV virus capsid - the protein envelope that protects the genetic code of the virus. Such models can be used to develop drugs that destroy unwanted proteins thanks to their shape, tailored to the application.

NAMD uses the Charm++ programming model, so it scales even for supercomputing applications.

Versions

On the computing machines, several versions and sub-versions of the NAMD software are available.

2.12

  • Linux-x86_64-multicore (64-bit Intel/AMD single node)
  • Linux-x86_64 (64-bit Intel/AMD with ethernet)
  • Linux-x86_64-TCP (TCP may be better on gigabit)
  • Linux-x86_64-ibverbs (InfiniBand via OpenFabrics OFED, not for Omni-Path, no MPI needed)
  • Linux-x86_64-ibverbs-smp (InfiniBand plus shared memory, no MPI needed)
  • Linux-x86_64-multicore-CUDA (NVIDIA CUDA acceleration)
  • Linux-x86_64-ibverbs-smp-CUDA (NVIDIA CUDA with InfiniBand)
  • Linux-x86_64-netlrts (Multi-copy algorithms)
  • Linux-x86_64-verbs (Multi-copy algorithms on InfiniBand)
  • Linux-x86_64-verbs-smp (Multi-copy algorithms on InfiniBand)
  • Linux-x86_64-verbs-smp-CUDA (Multi-copy algorithms on InfiniBand)
  • Linux-KNL-multicore (Intel Xeon Phi KNL processor single node)

Modules

In order to use the NAMD software, the appropriate module must be loaded. The list of available modules can be displayed by issuing the following command in the console.

module avail namd

Więcej informacji na temat modułów znajduję się na stronie Ładowanie modułów.

Running the calculations

Linux-x86_64-ibverbs-smp

SLURM (eagle)

Script:

#!/bin/bash
#SBATCH --nodes 8
#SBATCH --tasks-per-node=28
#SBATCH --partition=fast
#SBATCH --job-name=stmv-benchmark
#SBATCH --mem-per-cpu=1GB
#SBATCH --time=01:00:00
#SBATCH --error=job-%A-%a.err
#SBATCH --output=job-%A-%a.out
#SBATCH --exclusive

# Load module
module load namd/2.12-ibverbs-smp
module load openmpi

# Set personal variables
#export INPUT_DIR="/home/admins/pbrona/benchmarks/namd/STMV_virus_benchmark/stmv"
export INPUT_DIR="/home/admins/pbrona/benchmarks/namd/STMV_virus_benchmark"

# Set ${TMPDIR} - shared storage
mkdir -p /tmp/lustre_shared/${USER}/${SLURM_JOB_ID}
export TMPDIR=/tmp/lustre_shared/${USER}/${SLURM_JOB_ID}

NODELIST="${TMPDIR}/nodelist"

## Create nodelist
echo "group main" >> ${TMPDIR}/nodelist
for NODE in $(scontrol show hostname ${SLURM_JOB_NODELIST}); do
  echo "host ${NODE}" >> ${TMPDIR}/nodelist
  # ib
  #echo "host ${NODE}-ib" >> ${TMPDIR}/nodelist
done

# Copy data files
#cp ${INPUT_DIR}/{stmv.*,*.inp} ${TMPDIR}
#cd ${TMPDIR}

cp -r ${INPUT_DIR}/stmv.tar.gz ${TMPDIR}
cd ${TMPDIR}
tar -zxvf stmv.tar.gz
cd stmv

# Run namd
${namd_root}/charmrun ++ppn ${SLURM_NTASKS_PER_NODE} ++verbose ++usehostname ++scalable-start ${namd_root}/namd2 +p ${SLURM_NTASKS} ++nodelist ${NODELIST} stmv.namd > stmv.out

# Copy the results of calculations
cp -r ${TMPDIR} ${SLURM_SUBMIT_DIR}
rm -rf ${TMPDIR}