NAMD sur Jean Zay

Présentation

NAMD est un logiciel de dynamique moléculaire traditionnellement utilisé pour simuler des systèmes de grande taille.

Liens utiles

Versions disponibles

Les versions 3.0-alphaY implémentent une version plus efficace du calcul sur GPU. Elles sont à utiliser avec précaution car elle ne sont pas validées pour la production par NAMD.

VersionVariantes
3.0-alpha3 namd/3.0-a3
3.0-alpha9 namd/3.0-a9
2.13 namd/2.13-mpi-charmpp-mpi
2.13 namd/2.13-mpi-charmpp-smp
2.13 CUDAnamd/2.13-mpi-cuda
2.13 CUDA pour Replica exchange namd/2.13-mpi-cuda-charmpp-mpi-smp
2.9 namd/2.9-mpi-charmpp-mpi-smp

Script de soumission sur la partition CPU par défaut

namd.slurm
#!/bin/bash
#SBATCH --nodes=10              # Number of Nodes
#SBATCH --ntasks-per-node=40    # Number of MPI tasks per node
#SBATCH --cpus-per-task=1       # Number of OpenMP threads
#SBATCH --hint=nomultithread    # Disable hyperthreading
#SBATCH --job-name=DnaJ         # Jobname
#SBATCH --output=%x.o%j         # Output file %x is the jobname, %j the jobid 
#SBATCH --error=%x.o%j          # Error file
#SBATCH --time=10:00:00         # Expected runtime HH:MM:SS (max 100h)
##
## Please, refer to comments below for
## more information about these 4 last options.
##SBATCH --account=<account>@cpu # To specify cpu accounting: <account> = echo $IDRPROJ
##SBATCH --partition=<partition> # To specify partition (see IDRIS web site for more info)
##SBATCH --qos=qos_cpu-dev       # Uncomment for job requiring less than 2 hours
##SBATCH --qos=qos_cpu-t4        # Uncomment for job requiring more than 20h (up to 4 nodes)
 
# Cleans out the modules loaded in interactive and inherited by default
module purge
 
# Load the module
module load namd/2.13-mpi-charmpp-mpi
 
# Execute command
srun namd2 DnaJ.namd

Script de soumission sur la partition GPU par défaut

Attention : la version GPU actuellement installée ne permet pas l'utilisation simultanée de plusieurs nœuds de calcul. Il ne faut donc pas utiliser srun ou charmrun.

Sur GPU, l'option +idlepoll est nécessaire pour obtenir de bonnes performances.

namd_gpu.slurm
#!/bin/bash
#SBATCH --nodes=1               # Number of Nodes
#SBATCH --ntasks-per-node=1     # Number of MPI tasks per node
#SBATCH --cpus-per-task=40      # Number of OpenMP threads
#SBATCH --hint=nomultithread    # Disable hyperthreading
#SBATCH --gres=gpu:4            # Allocate 4 GPUs per node
#SBATCH --job-name=DnaJ         # Job name
#SBATCH --output=%x.o%j         # Output file %x is the jobname, %j the jobid
#SBATCH --error=%x.o%j          # Error file
#SBATCH --time=10:00:00         # Expected runtime HH:MM:SS (max 100h for V100, 20h for A100)
##
## Please, refer to comments below for
## more information about these 3 last options.
##SBATCH --account=<account>@v100 # To specify gpu accounting: <account> = echo $IDRPROJ
##SBATCH --qos=qos_gpu-dev        # Uncomment for job requiring less than 2 hours
##SBATCH --qos=qos_gpu-t4         # Uncomment for job requiring more than 20h (up to 16 GPU, V100 only)
 
# Cleans out the modules loaded in interactive and inherited by default
module purge
 
# Load the module
module load namd/2.13-mpi-cuda
 
# Execute command
namd2 +p40 +idlepoll DnaJ.namd

Script de soumission pour Replica Exchange sur la partition GPU par défaut

Important : Une version de NAMD multi-nœud GPU a été installée mais nous conseillons de ne l'utiliser que pour des calculs de type Replica Exchange.

Elle a été compilée en ignorant une erreur de configuration de NAMD à propos des performances.

Nous conseillons de limiter le nombre de GPU par réplique à 1 avec l'option ' +devicesperreplica 1'.

namd_gpu_RE.slurm
#!/bin/bash                                                                                                                                                                                  
#SBATCH --nodes=4               # Number of Nodes
#SBATCH --ntasks-per-node=4     # Number of MPI tasks per node
#SBATCH --cpus-per-task=10      # Number of OpenMP threads
#SBATCH --hint=nomultithread    # Disable hyperthreading
#SBATCH --gres=gpu:4            # Allocate 4 GPUs per node
#SBATCH --job-name=test_RE      # Job name
#SBATCH --output=%x.o%j         # Output file %x is the jobname, %j the jobid
#SBATCH --error=%x.o%j          # Error file
#SBATCH --time=10:00:00         # Expected runtime HH:MM:SS (max 100h for V100, 20h for A100)
##
## Please, refer to comments below for
## more information about these 3 last options.
#SBATCH --account=<account>@v100  # To specify gpu accounting: <account> = echo $IDRPROJ
##SBATCH --qos=qos_gpu-dev        # Uncomment for job requiring less than 2 hours
##SBATCH --qos=qos_gpu-t4         # Uncomment for job requiring more than 20h (up to 16 GPU, V100 only)
 
# Cleans out the modules loaded in interactive and inherited by default
module purge
 
# Load the module
module load namd/2.13-mpi-cuda-charmpp-mpi-smp
 
export replicas=16
 
mkdir -p output/{0..$replicas}
 
set -x
srun $(which namd2) +idlepoll +devicesperreplica 1 \
     +replicas $replicas job0.conf +stdout output/%d/job0.%d.log

Remarques

  • Les jobs ont tous des ressources définies dans Slurm par une partition et une “Qualité de Service” QoS (Quality of Service) par défaut. Vous pouvez en modifier les limites en spécifiant une autre partition et/ou une QoS comme indiqué dans notre documentation détaillant les partitions et les Qos.
  • Pour les comptes multi-projets ainsi que ceux ayant des heures CPU et GPU, il est indispensable de spécifier l'attribution d'heures sur laquelle décompter les heures de calcul du job comme indiqué dans notre documentation détaillant la gestion des heures de calcul.