GROMACS é um pacote versátil para executar dinâmica molecular, ou seja, simular as equações de movimento newtonianas para sistemas com centenas a milhões de partículas.
Este exemplo é apropriado para a execução em várias CPUs (máximo 12) de um único nó. Dessa forma, é recomendado que o arquivo .srm tenha os seguintes parâmetros para a submissão do job, substituindo:
entrada.tpr
pelo nome do seu arquivo de entrada;saida.log
pelo nome do seu arquivo de saída;--cpus-per-task=12
pela quantidade de cores utilizado.
#!/bin/bash
#SBATCH --job-name=GMX-MULTICORE # Nome do job
#SBATCH --partition=medium # Fila (medium/long/gpu)
#SBATCH --nodes=1 # Número de nós utilizados
#SBATCH --ntasks-per-node=1 # Número de processos em cada nó
#SBATCH --cpus-per-task=12 # Número de CPUs (cores) utilizada por cada processo
# Arquivo de entrada
ARQINP="entrada.tpr"
# Arquivo de saída
ARQOUT="saida.log"
# Nó de execução
echo "Nó de Execução ${SLURM_JOB_NODELIST}"
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK
ulimit -s unlimited
# Diretório de execução
cd $SLURM_SUBMIT_DIR
echo "Diretório de Execução: $SLURM_SUBMIT_DIR"
echo "Entrada: $ARQINP"
echo "Iniciando Gromacs - " `date`
gmx mdrun -nt ${SLURM_CPUS_PER_TASK} -s ${ARQINP} -g ${ARQOUT}
echo "Job Concluído - " `date`
Este exemplo é apropriado para a execução em vários nós do cluster. Dessa forma, é recomendado que o arquivo .srm tenha os seguintes parâmetros para a submissão do job, substituindo:
Obs.: (ntasks-per-node
) * (cpus-per-task
) ≤ 12
entrada.tpr
pelo nome do seu arquivo de entrada;saida.log
pelo nome do seu arquivo de saída;--nodes=2
pela quantidade de nós utilizados (no mínimo 2 nós);--ntasks-per-node=2
pela quantidade de processos em cada nó;--cpus-per-task=6
pela quantidade de cores utilizado em cada processo.
#!/bin/bash
#SBATCH --job-name=GMX-MULTINODE # Nome do job
#SBATCH --partition=medium # Fila (medium/long/gpu)
#SBATCH --nodes=2 # Número de nós utilizados
#SBATCH --ntasks-per-node=2 # Número de processos em cada nó
#SBATCH --cpus-per-task=6 # Número de CPUs (cores) utilizada por cada processo
# Arquivo de entrada
ARQINP="entrada.tpr"
# Arquivo de saída
ARQOUT="saida.log"
# Nó de execução
echo "Nó de Execução ${SLURM_JOB_NODELIST}"
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK
ulimit -s unlimited
# Diretório de execução
cd $SLURM_SUBMIT_DIR
echo "Diretório de Execução: $SLURM_SUBMIT_DIR"
echo "Entrada: $ARQINP"
echo "Iniciando Gromacs - " `date`
mpirun `which mdrun_mpi` -ntomp ${SLURM_CPUS_PER_TASK} -s ${ARQINP} -g ${ARQOUT}
echo "Job Concluído - " `date`
Leia a seção “Getting good performance from mdrun” da documentação do Gromacs para obter mais informações sobre melhoria dos tempos de execução de seus jobs.
Embora se presuma que adicionar mais processadores a um determinado job aumentará automaticamente o desempenho, vários tamanhos de modelos atingirão o desempenho máximo com diferentes contagens de processadores.