07.01 ‐ Jobs para aplicações conhecidas - arcarneiro/teste-doc-sdumont GitHub Wiki
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).
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
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
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
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
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
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
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
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ó.
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
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
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