Gromacs

MPI (puro)

Exemplo de arquivo de envio:

#!/bin/bash
#SBATCH -n 128
CASE=gromacs-mpi

module load ufabc
module load gromacs

export OMP_NUM_THREADS=1

go srun -n 128 mdrun_mpi -v -s ${CASE}.tpr -o ${CASE}.trr -e ${CASE}.edr -c after_${CASE}.gro -g ${CASE}.log

(Configurar o OMP_NUM_THREADS é importante no modo MPI puro pois o OpenMP no gromacs tenta alocar todos os cores (alocados para o usuário) para cada processo. No caso de 64 processos MPI no mesmo nó, sem essa opção, serão criadas 4096 threads, sobrecarregando o servidor. Veja o modo MPI+SMP abaixo.)

SMP

Exemplo de arquivo de envio:

#!/bin/bash
#SBATCH -c 64
CASE=gromacs-smp
CORES=64

module load ufabc
module load gromacs
go mdrun -v -nt $CORES -s ${CASE}.tpr -o ${CASE}.trr -e ${CASE}.edr -c after_${CASE}.gro -g ${CASE}.log

MPI + SMP

Exemplo de arquivo de envio:

#!/bin/bash
#SBATCH -n 2 -c 64
CASE=gromacs-mpi

module load ufabc
module load gromacs

go srun -n 2 mdrun_mpi -nt 64 -v -s ${CASE}.tpr -o ${CASE}.trr -e ${CASE}.edr -c after_${CASE}.gro -g ${CASE}.log

Nesse caso serão alocados 2 servidores, com 64 processos em cada. (O uso do OMP_NUM_THREADS é opcional)

GPU

Exemplo de arquivo de envio:

#!/bin/bash
#SBATCH --partition=gpu -c 8
CASE=gromacs-gpu
CORES=8

module load ufabc
module load gromacs/gpu
go mdrun -v -nt $CORES -s ${CASE}.tpr -o ${CASE}.trr -e ${CASE}.edr -c after_${CASE}.gro -g ${CASE}.log