Cómo ejecutar trabajos usando Singularity

El software Singularity se utiliza para construir y usar imágenes de sistemas operativos personalizadas de acuerdo a las necesidades de software del usuario. De manera que éste pueda usar los recursos del clúster, independientemente del sistema operativo mediate las imágenes respectivas. Por el momento se han realizado pruebas usando imágenes de Ubuntu 14.04, Ubuntu 18.04, Debian 9.5 y Centos 7.5 con mpi instalado de la misma versión que el módulo en el clúster, es decir con openmpi versión 2.1.1. Estas imágenes prediseñadas se encuentran disponibles para los usuarios del sistema HPC-MODEMAT en la siguiente ubicación, que puede ser accedida desde el servidor de inicio de sesión: “/scratch/images”, de igual manera el usuario puede subir a este directorio las imágenes creadas, a fin de que éstas no sean borradas al encontrarse en los directorios temporales. A continuación se muestra el directorio: “/scratch/images”:

../_images/figura62.png

Directorio /scratch/images

Cada imagen singularity se encuentra dentro de su respectivo directorio, el mismo que contiene el (los) contenedor (es) por versión del sistema operativo y un archivo “readme” que los describe, como se muestra en la siguiente ilustración:

../_images/figura74.png

Directorio de imagen singularity

Las imágenes comprimidas en formato tar.gz pueden ser descargadas del directorio “/scratch/images/comprimidos” a su computador y modificarlas. Para realizar cambios en estos contenedores requiere permisos de superusuario o administrador. Finalmente, para usarlas en el sistema HPC-MODEMAT, el usuario debe subirlas al directorio “/scratch/tmp/”. Es importante recordar que todo el contenido del directorio “/scratch/tmp/” es vaciado los días viernes a la medianoche. A continuación se muestra el contenido del directorio: “/scratch/images/comprimidos”.

../_images/figura73.png

Directorio /scratch/images/comprimidos

Para mayor información sobre la construcción de imágenes, se puede consultar la página oficial de Singularity: Documentación sobre Singularity ;sin embargo la versión instalada y compatible con el administrador de trabajos que utiliza el clúster es la 2.4.5, cuya documentación se encuentra disponible en el siguiente enlace: Documentación sobre Singularity 2.4.5.

Nota

Dado que las imágenes creadas con singularity o los archivos resultantes de la ejecución de programas pueden ser de tamaño muy grande, recuerde que la cuota de almacenamiento por usuario se especifica en la Política de Uso del Sistema HPC-MODEMAT, actualmente es de 4 GB y se dispone del Acceso a Directorio Temporal para mayor almacenamiento en caso de ser requerido.

A continuación se muestran tres scripts modelo que ilustran el uso de las imágenes de los sistemas operativos anteriormente mencionados, donde el flag “-n” indica el número de cores a ser utilizados, que debe ser el mismo que “-np” en el comando mpirun:

1. Script slurm usando imagen singularity Centos 7 en partición predeterminada

#!/bin/bash

#SBATCH -J ring_mpi
#SBATCH -n 12

module load openmpi/2.1.1-intel
module load singularity/2.4.5-intel

#SBATCH --singularity-image=/scratch/images/Centos_mpi/centos-mpi.img

mpirun -np 12 singularity exec --writable /scratch/images/Centos_mpi/centos-mpi.img /usr/bin/ring

singularity exec --writable /scratch/images/Centos_mpi/centos-mpi.img cat /etc/os-release
../_images/figura63.png

Subida de job con imagen de Centos 7

../_images/figura64.png

Resultado de ejecución del script con imagen de Centos 7

2. Script slurm usando imagen singularity Centos 7 en partición no predeterminada

#!/bin/bash

#SBATCH -J ring_mpi
#SBATCH -n 480
#SBATCH --qos=qospersonalizada
#SBATCH -p quinde-G8-2695

module load openmpi/2.1.1-intel
module load singularity/2.4.5-intel

#SBATCH --singularity-image=/scratch/images/Centos_mpi/centos-mpi.img

mpirun -np 480 singularity exec --writable /scratch/images/Centos_mpi/centos-mpi.img /usr/bin/ring
../_images/figura64_1.png

Resultados de ejecución en toda la partición quinde-G8-2695

3. Script slurm usando imagen singularity Ubuntu 14.04 en partición predeterminada

#!/bin/bash

#SBATCH -J ring_mpi
#SBATCH -n 12

module purge

module load openmpi/2.1.1-intel
module load singularity/2.4.5-intel

#SBATCH --singularity-image=/scratch/images/Ubuntu_mpi/ubuntu-mpi.img

mpirun -np 12 singularity exec  --writable /scratch/images/Ubuntu_mpi/ubuntu-mpi.img /usr/bin/ring

singularity exec --writable /scratch/images/Ubuntu_mpi/ubuntu-mpi.img cat /etc/os-release
../_images/figura65.png

Subida de script

../_images/figura66.png

Resultado de ejecución del script

4. Script slurm usando imagen singularity Ubuntu 14.04 en partición no predeterminada

#!/bin/bash

#SBATCH -J ring_mpi
#SBATCH -n 480
#SBATCH --qos=qospersonalizada
#SBATCH -p quinde-G8-2695

module purge

module load openmpi/2.1.1-intel
module load singularity/2.4.5-intel

#SBATCH --singularity-image=/scratch/images/Ubuntu_mpi/ubuntu-mpi.img

mpirun -np 480 singularity exec  --writable /scratch/images/Ubuntu_mpi/ubuntu-mpi.img /usr/bin/ring

singularity exec --writable /scratch/images/Ubuntu_mpi/ubuntu-mpi.img cat /etc/os-release
../_images/figura67.png

Subida de job

../_images/figura68.png

Resultado de ejecución del job

5. Script slurm usando imagen singularity Debian 9 en partición predeterminada

#!/bin/bash

#SBATCH -J ring_mpi
#SBATCH -n 12

module purge

module load openmpi/2.1.1-intel
module load singularity/2.4.5-intel

#SBATCH --singularity-image=/scratch/images/Debian_mpi/debian-mpi.img

mpirun -np 12 singularity exec  --writable /scratch/images/Debian_mpi/debian-mpi.img /usr/bin/ring

singularity exec --writable /scratch/images/Debian_mpi/debian-mpi.img cat /etc/os-release
../_images/figura69.png

Subida del script

../_images/figura70.png

Resultado de ejecución del script

6. Script slurm usando imagen singularity Debian 9 en partición no predeterminada

#!/bin/bash

#SBATCH -J ring_mpi
#SBATCH -n 480
#SBATCH --qos=qospersonalizada
#SBATCH -p quinde-G8-2695

module purge

module load openmpi/2.1.1-intel
module load singularity/2.4.5-intel

#SBATCH --singularity-image=/scratch/images/Debian_mpi/debian-mpi.img

mpirun -np 480 singularity exec  --writable /scratch/images/Debian_mpi/debian-mpi.img /usr/bin/ring

singularity exec --writable /scratch/images/Debian_mpi/debian-mpi.img cat /etc/os-release
../_images/figura71.png

Subida del script

../_images/figura72.png

Resultado de ejecución de script

7. Script con imagen de Ubuntu 17.10 con liggghts y mpi en partición no predeterminada

Fase de Prueba previa a usar slurm

  1. Dentro de su home, diríjase al directorio donde se encuentra el archivo a usar con liggghts con el comando “cd”, por ejemplo:
cd /home/mar/examples/Tutorials_public/chute_wear
  1. Desde esta ruta ejecutar la imagen de Ubuntu con overlay (que contiene el programa liggghts compilado para acceso por cualquier usuario):
singularity shell --writable --overlay  /scratch/images/ubuntu_mpi_lights/ubuntu_17.10_mpi-liggghts_overlay.img  /scratch/images/ubuntu_mpi_lights/ubuntu_17.10_mpi-liggghts.img
  1. Revisar que efectivamente dentro del contenedor se puede acceder al archivo a ser usado con liggghts, usando el comando “ls”.
../_images/figura75.png

Revisión de contenido de directorio

  1. Revisar que el compilado de liggghts se encuentre disponible en el contenedor, dirigiéndose a la ruta “/” y ejecutar el compilado: “./liggghts”, como se muestra a continuación:
../_images/figura76.png

Prueba de ejecución de compilado «liggghts»

Fase de Uso de slurm

  1. Elaborar script de slurm con mpi y liggghts como se muestra a continuación:
#!/bin/bash

#SBATCH -J liggghts_test
#SBATCH -n 12

module purge

module load openmpi/2.1.1-intel
module load singularity/2.4.5-intel

#SBATCH --singularity-image=/scratch/images/ubuntu_mpi_lights/ubuntu_17.10_mpi-liggghts.img

####Directorio donde se encuentra el archivo a ser usado ####con liggghts

cd /home/mar/examples/Tutorials_public/chute_wear

mpirun -np 12 singularity exec --writable --overlay /scratch/images/ubuntu_mpi_lights/ubuntu_17.10_mpi-liggghts_overlay.img /scratch/images/ubuntu_mpi_lights/ubuntu_17.10_mpi-liggghts.img  /./liggghts < in.chute_wear
  1. Subir el job:
sbatch /home/mar/singularity/singmpiliggghts.slurm ; squeue -i 10
../_images/figura77.png

Subida y ejecución del job

  1. Revisar el .out de la ejecución del job:
../_images/figura78.png

Resultado de ejecución del job