Diferencia entre revisiones de «Singularity»
Línea 116: | Línea 116: | ||
Revisión de finalización de trabajo mediante correo: | Revisión de finalización de trabajo mediante correo: | ||
[[Archivo:Finalización Trabajo 19051335.jpg| | [[Archivo:Finalización Trabajo 19051335.jpg|no]] | ||
Revisión del 15:15 6 sep 2022
¿Qué es?
Singularity es un programa informático gratuito , multiplataforma y de código abierto que realiza la virtualización a nivel del sistema operativo, también conocida como containers.
Uno de los principales usos de Singularity es llevar contenedores y reproducibilidad a la informática científica y al mundo de la informática de alto rendimiento (HPC).
Los contenedores de Singularity se pueden usar para empaquetar flujos de trabajo científicos completos, software y bibliotecas, e incluso datos. Esto significa que no tiene que pedirle al administrador del clúster que instale nada por usted; puede ponerlo en un contenedor de Singularity y ejecutarlo.
El software Singularity puede importar sus imágenes de Docker sin tener Docker instalado o ser un superusuario.
¿Necesitas compartir tu código? Póngalo en un contenedor de Singularity y su colaborador no tendrá que pasar por la molestia de instalar dependencias faltantes. ¿Necesita ejecutar un sistema operativo completamente diferente? Puede "cambiar" el sistema operativo de su host por otro diferente dentro de un contenedor de Singularity
Modulos
Para el uso de Singularity debe cargar los módulos:
- ml purge
- ml intel/2022.00
- ml singularityCE
Ejemplos de Lanzador
Importar imagen de Singularity
Para este ejemplo utilizaremos la imagen de Singularity hello-world (shub://singularityhub/hello-world), crearemos un directorio llamado Ejemplo y nos posicionaremos en el directorio creado:
prueba@leftraru1:~$ mkdir Ejemplo prueba@leftraru1:~$ cd Ejemplo/
Cargar módulo de Singularity:
prueba@leftraru1:~$ ml purge prueba@leftraru1:~$ ml intel/2022.00 prueba@leftraru1:~$ ml singularityCE
Crear carpeta temporal:
prueba@leftraru1:~$ mkdir -p /tmp/singularityce/singularity/mnt/session
Importar imagen de Singularity:
prueba@leftraru1:~/Ejemplo$ singularity pull shub://singularityhub/hello-world INFO: Downloading shub image 59.75 MiB / 59.75 MiB [=====================================================================================================================================================] 100.00% 12.41 MiB/s 4s prueba@leftraru1:~/Ejemplo$ ll total 57344 -rwxr-xr-x 1 prueba nlhpc 62652447 Jul 30 10:46 hello-world_latest.sif
Ejecutando imagen:
prueba@leftraru1:~/Ejemplo$ singularity run hello-world_latest.sif INFO: Convert SIF file to sandbox... Tacotacotaco INFO: Cleaning up image...
Como se puede observar el resultado de ejecutar el contenedor es la palabra: Tacotacotaco
Generando Script
Ejemplo de script para lanzar en la partición general.
Utilizamos 1 nodos, 44 simulaciones por nodo y utilizamos los 187 Gb de Ram declarados en el script:
prueba@leftraru1:~/Ejemplo$ vim script_44cores.sh
Ejemplo de Script Slurm:
#!/bin/bash # ----------------SLURM Parameters---------------- #SBATCH -J Hello-world #SBATCH -p general #SBATCH -n 44 #SBATCH --ntasks-per-node=44 #SBATCH --mem-per-cpu=4250 #SBATCH --mail-user=prueba@nlhpc.cl #SBATCH --mail-type=ALL #SBATCH -o hello-world_%j.out #SBATCH -e hello-world_%j.err #Modulos Necesarios ml purge ml intel/2022.00 ml singularityCE #Creación de carpeta mkdir -p /tmp/singularityce/singularity/mnt/session #Comandos srun singularity run hello-world_latest.sif
Lanzar script:
prueba@leftraru1:~/Ejemplo$ sbatch script_44cores.sh Submitted batch job 19051335
Revisar estado del trabajo:
prueba@leftraru1:~/Ejemplo$ squeue JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) 19051335 general Hello-wo prueba R 0:12 1 sn045
Revisar estado de simulación: (trabajo finalizado correctamente)
prueba@leftraru1:~/Ejemplo$ squeue JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
Revisión de inicio del trabajo mediante correo:
Revisión de finalización de trabajo mediante correo:
La tarea fue ejecutada en 3 minutos con 04 segundos.
Resultados de la tarea (se generan 2 archivos, 1 archivo error y un 1 archivo de salida):
prueba@leftraru1:~/Ejemplo$ ll total 61204 -rw-r--r-- 1 prueba nlhpc 3872 Jul 30 11:31 hello-world_19051335.err -rw-r--r-- 1 prueba nlhpc 572 Jul 30 11:31 hello-world_19051335.out -rwxr-xr-x 1 prueba nlhpc 62652447 Jul 30 11:16 hello-world_latest.sif -rwxr-xr-x 1 prueba nlhpc 405 Jul 30 11:30 script_44cores.sh
Resumen de archivo hello-world_19051335.out:
Aquí podemos ver que la ejecución nos entregó como resultado 44 veces la ejecución del contenedor (la simulación fue ejecutada de forma correcta).
prueba@leftraru1:~/Ejemplo$ wc -l hello-world_19051335.out 44 hello-world_19051335.out prueba@leftraru1:~/Ejemplo$ cat hello-world_19051335.out Tacotacotaco Tacotacotaco Tacotacotaco Tacotacotaco Tacotacotaco Tacotacotaco Tacotacotaco Tacotacotaco Tacotacotaco Tacotacotaco Tacotacotaco Tacotacotaco Tacotacotaco Tacotacotaco Tacotacotaco Tacotacotaco Tacotacotaco Tacotacotaco Tacotacotaco Tacotacotaco Tacotacotaco Tacotacotaco Tacotacotaco ...
Resumen de archivo hello-world_19051335.err:
Aquí podemos ver que Singularity convirtió la imagen 44 veces y limpio la imagen 44 veces.
prueba@leftraru1:~/Ejemplo$ wc -l hello-world_19051335.err 88 hello-world_19051335.err prueba@leftraru1:~/Ejemplo$ cat hello-world_19051335.err Resumen INFO: Convert SIF file to sandbox... INFO: Convert SIF file to sandbox... INFO: Cleaning up image... INFO: Cleaning up image...