07.01 ‐ Jobs para aplicações conhecidas - arcarneiro/teste-doc-sdumont GitHub Wiki

Table of Contents

Introdução

Apresentamos abaixo alguns scripts de submissão para aplicações frequentemente solicitadas e utilizadas no SDumont, com uma versão compilada pela equipe do Helpdesk, assim como algumas alternativas para a execução através de containers via singularity. Os exemplos estão utilizando as filas gpu. Para utilizar as versões puramente CPU, basta fazer os ajustes necessários (ex: remover a configuração das gpus, ajustar a fila e o módulo a ser utilizado).

GROMACS

Para os exemplos abaixo será utilizado o benchmark "STMV".

Realizando o download dos arquivos:

 cd $SCRATCH
 wget https://zenodo.org/record/3893789/files/GROMACS_heterogeneous_parallelization_benchmark_info_and_systems_JCP.tar.gz 
 tar xf GROMACS_heterogeneous_parallelization_benchmark_info_and_systems_JCP.tar.gz 
 cd GROMACS_heterogeneous_parallelization_benchmark_info_and_systems_JCP/stmv

Compiladas

Exemplo utilizando 4 nós, 8 tarefas MPI (totalizando 32 tarefas MPI), 4 GPUs por nó, e 6 threads OpenMP por tarefa MPI.

Script sub_gromacs_compilado.srm

#!/bin/bash
#SBATCH --nodes=4 
#SBATCH --ntasks-per-node=8
#SBATCH --ntasks=32
#SBATCH --cpus-per-task=6
#SBATCH --gpus-per-node=4
#SBATCH -p sequana_gpu_dev
#SBATCH -J gromacs+stmv+compilado


#Exibe os nos alocados para o Job
echo $SLURM_JOB_NODELIST
nodeset -e $SLURM_JOB_NODELIST

cd $SLURM_SUBMIT_DIR

#Configura os compiladores utilizando o OpenMPI com GNU
module load gromacs/2020.5_openmpi_gnu+cuda_sequana

#Configura o executavel
EXEC=/scratch/app_sequana/gromacs/2020.5_openmpi_gnu+cuda/bin/gmx_mpi

which $EXEC

#exibe informacoes sobre o executavel
/usr/bin/ldd $EXEC


#configura o numero de threads, de acordo com o parametro definido no Slurm
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK

export GMX_ENABLE_DIRECT_GPU_COMM=1

srun $EXEC mdrun -ntomp $SLURM_CPUS_PER_TASK  -v -s topol.tpr -deffnm stmv  -nsteps 100000 -resetstep 90000 -noconfout -dlb no -nstlist 300

NVidia Container

Referência: https://catalog.ngc.nvidia.com/orgs/hpc/containers/gromacs

Lista de versões (tags) disponíveis em: https://catalog.ngc.nvidia.com/orgs/hpc/containers/gromacs/tags

Versão do exemplo: 2020.2

ATENÇÃO: O Container fornecido pela NVidia não suporta múltiplos nós! Ele só funcionará corretamente utilizando um único nó!

Exemplo utilizando 1 nó, 8 tarefas MPI, 4 GPUs por nó, e 6 threads OpenMP por tarefa MPI.

Primeiro é necessário baixar a imagem do container através de um nó de login (deverá estar dentro do diretório para a submissão do teste):

 singularity pull docker://nvcr.io/hpc/gromacs:2020.2

O comando acima irá gerar a imagem gromacs_2020.2.sif

Script sub_gromacs_container_nvidia.srm

#!/bin/bash
#SBATCH --nodes=1 
#SBATCH --ntasks-per-node=8
#SBATCH --ntasks=8
#SBATCH --cpus-per-task=6
#SBATCH --gpus-per-node=4
#SBATCH -p sequana_gpu_dev
#SBATCH -J gromacs+stmv+container_nvidia

#Exibe os nos alocados para o Job
echo $SLURM_JOB_NODELIST
nodeset -e $SLURM_JOB_NODELIST

cd $SLURM_SUBMIT_DIR

#configura o numero de threads, de acordo com o parametro definido no Slurm
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK

export GMX_ENABLE_DIRECT_GPU_COMM=1

export SINGULARITY="singularity run --nv -B ${PWD}:/host_pwd --pwd /host_pwd gromacs_2020.2.sif"
${SINGULARITY} gmx mdrun -ntmpi $SLURM_NTASKS -ntomp $SLURM_CPUS_PER_TASK  -v -s topol.tpr -deffnm stmv  -nsteps 100000 -resetstep 90000 -noconfout -dlb no -nstlist 300

DockerHub Container

Lista de versões (tags) disponíveis em: https://hub.docker.com/r/gromacs/gromacs/tags

Versão do exemplo: 2020.6

Exemplos utilizando 4 nós, 8 tarefas MPI, 4 GPUs por nó, e 6 threads OpenMP por tarefa MPI.

Primeiro é necessário baixar a imagem do container através de um nó de login (deverá estar dentro do diretório para a submissão do teste):

 singularity pull docker://gromacs/gromacs:2020.6

O comando acima irá gerar a imagem gromacs_2020.6.sif

Script sub_gromacs_container_dockerhub.srm

#!/bin/bash
#SBATCH --nodes=4
#SBATCH --ntasks-per-node=8
#SBATCH --ntasks=32
#SBATCH --cpus-per-task=6
#SBATCH --gpus-per-node=4
#SBATCH -p sequana_gpu_dev
#SBATCH -J gromacs+stmv+container_dockehub

#Exibe os nos alocados para o Job
echo $SLURM_JOB_NODELIST
nodeset -e $SLURM_JOB_NODELIST

module load  mathlibs/fftw/3.3.10_openmpi-4.1.4_gnu_sequana   cuda/11.2_sequana

cd $SLURM_SUBMIT_DIR

#configura o numero de threads, de acordo com o parametro definido no Slurm
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK

export GMX_ENABLE_DIRECT_GPU_COMM=1

export SINGULARITY="singularity run --nv gromacs_2020.6.sif"
mpirun ${SINGULARITY} gmx mdrun -ntomp $SLURM_CPUS_PER_TASK  -v -s topol.tpr -deffnm stmv  -nsteps 100000 -resetstep 90000 -noconfout -dlb no -nstlist 300

Início


LAMMPS

Teste utilizando o exemplo "HEAT - compute thermal conductivity for LJ and water via fix ehex" (https://docs.lammps.org/Examples.html#uppercase-directories), disponível dentro do pacote do próprio LAMMPS.

cd $SCRATCH cp -r /scratch/app/lammps/examples/HEAT . cd HEAT

Compilada

Exemplos utilizando 4 nós, 48 tarefas MPI (totalizando 192 tarefas MPI) e 4 GPUs por nó.

Script sub_lammps_compilado.srm


#!/bin/bash
#SBATCH --nodes=4
#SBATCH --ntasks-per-node=48
#SBATCH --ntasks=192
#SBATCH --gpus-per-node=4
#SBATCH -p sequana_gpu_dev
#SBATCH -J lammps+HEAT+compilado

#Exibe os nos alocados para o Job
echo $SLURM_JOB_NODELIST
nodeset -e $SLURM_JOB_NODELIST

cd $SLURM_SUBMIT_DIR

#Carrega o modulo do lammps
module load lammps/3Nov22_openmpi_cuda_gnu_sequana

#Configura o executavel
EXEC=/scratch/app/lammps/3Nov22_openmpi_cuda_gnu/bin/lmp

srun -n $SLURM_NTASKS $EXEC -sf gpu  -in in.spce.ehex

NVidia Container

Referência: https://catalog.ngc.nvidia.com/orgs/hpc/containers/lammps

Lista de versões (tags) disponíveis em: https://catalog.ngc.nvidia.com/orgs/hpc/containers/lammps/tags

Versão do exemplo: patch_3Nov2022

Primeiro é necessário baixar a imagem do container através de um nó de login (deverá estar dentro do diretório para a submissão do teste):

 singularity pull docker://nvcr.io/hpc/lammps:patch_3Nov2022

O comando acima irá gerar a imagem lammps_patch_3Nov2022.sif.

Exemplo utilizando 4 nós, 48 tarefas MPI (totalizando 192 tarefas MPI) e 4 GPUs por nó.

Script sub_lammps_container_nvidia.srm:

#!/bin/bash
#SBATCH --nodes=4
#SBATCH --ntasks-per-node=48
#SBATCH --ntasks=192
#SBATCH --gpus-per-node=4
#SBATCH -p sequana_gpu_dev
#SBATCH -J lammps+HEAT+container-nvidia

#Exibe os nos alocados para o Job
echo $SLURM_JOB_NODELIST
nodeset -e $SLURM_JOB_NODELIST

cd $SLURM_SUBMIT_DIR

export SINGULARITY="singularity run --nv -B ${PWD}:/host_pwd --pwd /host_pwd lammps_patch_3Nov2022.sif"
srun --mpi=pmi2 $SINGULARITY lmp -k on g 4 -sf kk -pk kokkos cuda/aware on neigh full comm device binsize 2.8 -in  in.spce.ehex

Início


NAMD

Compilada


NVidia Container

Início


CP2K

Teste utilizando como exemplo o benchmark QS_DM_LS. Para mais informações.

Baixar o arquivo de entrada:

 cd $SCRATCH 
 wget https://raw.githubusercontent.com/cp2k/cp2k/refs/heads/master/benchmarks/QS_DM_LS/H2O-dft-ls.NREP2.inp

Todos os exemplos abaixo usam 4 nós, 48 tarefas MPI (totalizando 192 tarefas MPI) e 4 GPUs por nó.

Compilada

Script sub_cp2k_compilado.srm

#!/bin/bash
#SBATCH --nodes=4
#SBATCH --ntasks-per-node=48
#SBATCH --ntasks=192
#SBATCH --gpus-per-node=4
#SBATCH -p sequana_gpu_dev
#SBATCH -J cp2k+H2O-dft-ls+compilada

#Exibe os nos alocados para o Job
echo $SLURM_JOB_NODELIST
nodeset -e $SLURM_JOB_NODELIST

cd $SLURM_SUBMIT_DIR

#carrega o modulo do CP2K
module load cp2k/9.1_openmpi_gnu_sequana

#Configura o executavel
EXEC=/scratch/app_sequana/cp2k/9.1_openmpi_gnu/bin/cp2k.popt_cuda

srun $EXEC -i H2O-dft-ls.NREP2.inp

NVidia Container

Referência: https://catalog.ngc.nvidia.com/orgs/hpc/containers/cp2k

Lista de versões (tags) disponíveis em: https://catalog.ngc.nvidia.com/orgs/hpc/containers/cp2k/tags

Versão do exemplo: v9.1.0

Primeiro é necessário baixar a imagem do container através de um nó de login (deverá estar dentro do diretório para a submissão do teste):

 singularity pull docker://nvcr.io/hpc/cp2k:v9.1.0

O comando acima irá gerar a imagem cp2k_v9.1.0.sif

Script sub_cp2k_container_nvidia.srm:

#!/bin/bash
#SBATCH --nodes=4
#SBATCH --ntasks-per-node=48
#SBATCH --ntasks=192
#SBATCH --gpus-per-node=4
#SBATCH -p sequana_gpu_dev
#SBATCH -J cp2k+H2O-dft-ls+container-nvidia

#Exibe os nos alocados para o Job
echo $SLURM_JOB_NODELIST
nodeset -e $SLURM_JOB_NODELIST

cd $SLURM_SUBMIT_DIR

export SINGULARITY="singularity run --nv -B ${PWD}:/host_pwd --pwd /host_pwd cp2k_v9.1.0.sif"
srun --mpi=pmi2  $SINGULARITY cp2k.psmp -i H2O-dft-ls.NREP2.inp

DockerHub Container

Referência: https://hub.docker.com/r/cp2k/cp2k/

Lista de versões (tags) disponíveis em: https://hub.docker.com/r/cp2k/cp2k/tags

Versão do exemplo: v2022.1

Primeiro é necessário baixar a imagem do container através de um nó de login (deverá estar dentro do diretório para a submissão do teste)

 singularity pull docker://cp2k/cp2k:2022.1

O comando acima irá gerar a imagem cp2k_2022.1.sif

Script sub_cp2k_container_dockerhub.srm:

#!/bin/bash
#SBATCH --nodes=4
#SBATCH --ntasks-per-node=48
#SBATCH --ntasks=192
#SBATCH --gpus-per-node=4
#SBATCH -p sequana_gpu_dev
#SBATCH -J cp2k+H2O-dft-ls+container-dockerhub

#Exibe os nos alocados para o Job
echo $SLURM_JOB_NODELIST
nodeset -e $SLURM_JOB_NODELIST

cd $SLURM_SUBMIT_DIR

export SINGULARITY="singularity run --nv -B ${PWD}:/host_pwd --pwd /host_pwd cp2k_2022.1.sif"
srun --mpi=pmi2  $SINGULARITY cp2k.psmp -i H2O-dft-ls.NREP2.inp

Início


⚠️ **GitHub.com Fallback** ⚠️