Namd

Opis programu

NAMD to pakiet oprogramowania do symulacji zachowania cząsteczek i układów cząsteczek złożonych z ogromnej liczby atomów. Powstał na amerykańskim Uniwersytecie Illinois i jest używany głównie w biologii molekularnej. Pozwala badać strukturę oraz zachowanie genów i białek; za pomocą NAMD zbudowano na przykład model kapsydu wirusa HIV – białkowej otoczki chroniącej kod genetyczny wirusa. Takie modele mogą posłużyć do opracowania leków niszczących niepożądane białka dzięki swojemu kształtowi, dopasowanemu do zastosowania.

NAMD wykorzystuje model programowania Charm++, dzięki czemu skaluje się nawet w zastosowaniach superkomputerowych.

Wersje

Na maszynach obliczeniowych dostępnych jest kilka wersji oraz podwersji oprogramowania NAMD.

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)

Moduły

W celu skorzystania z oprogramowania NAMD należy załadować odpowiedni moduł. Wyświetlenie listy dostępnych modułów jest możliwe po wydaniu w konsoli poniższego polecenia.

module avail namd

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

Uruchamianie obliczeń

Linux-x86_64-ibverbs-smp

SLURM (eagle)

Skrypt zlecający:

#!/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
export TMPDIR=$HOME/$SLURM_JOB_ACCOUNT/scratch/$USER/$SLURM_JOB_ID
mkdir -p ${TMPDIR}

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}