Diferencia entre revisiones de «Singularity»
Sin resumen de edición |
Sin resumen de edición |
||
Línea 206: | Línea 206: | ||
#SBATCH -J testamd | #SBATCH -J testamd | ||
#SBATCH -p mi210 | #SBATCH -p mi210 | ||
#SBATCH -n | #SBATCH -n 16 | ||
#SBATCH --gres=gpu:1 | #SBATCH --gres=gpu:1 | ||
#SBATCH -c | #SBATCH -c 4 | ||
#SBATCH --mem-per-cpu=30354 | #SBATCH --mem-per-cpu=30354 | ||
#SBATCH --mail-user=test@correo.com | #SBATCH --mail-user=test@correo.com |
Revisión actual - 15:50 30 abr 2024
¿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...
Contenedores GPU AMD MI210
Contamos con un directorio especial que contiene una serie de imágenes listas para ser ejecutadas en las GPU AMD MI210. Basta con cargar el módulo de Singularity:
ml singularityCE/3.10.3
[modules@leftraru1 ~]$ ls $IMAGES chroma_3.43.0.sif nwchem.sif ryzen-ai-tensorflow2_latest.sif cp2k_2022.2.amd3.sif openfoam_2206.1.amd3.sif ryzen-ai-tensorflow_latest.sif grid_0.8.2-20211213.sif openmm_7.7.0_49.sif specfem3d_9c0626d1-20201122.sif gromacs_2022.3.amd1_174.sif petsc_3.18.amd4.sif specfem3d_globe_1ee10977-20210321.sif lammps_2022.5.04_130.sif pyfr_1.14.0_48.sif trilinos_1.7.sif namd_2.15a2-20211101.sif relion_4.0.sif uif-pytorch_uif1.2_rocm5.6.1_vai3.5_py3.8_pytorch1.13.sif namd3_3.0a9.sif ryzen-ai-pytorch_latest.sif uif-tensorflow_uif1.2_rocm5.6.1_vai3.5_tensorflow2.12.sif
Ejemplo contenedor CP2K
#!/bin/bash #---------------Script SBATCH - NLHPC ---------------- #SBATCH -J testamd #SBATCH -p mi210 #SBATCH -n 16 #SBATCH --gres=gpu:1 #SBATCH -c 4 #SBATCH --mem-per-cpu=30354 #SBATCH --mail-user=test@correo.com #SBATCH --mail-type=ALL #SBATCH -o testamd_%j.out #SBATCH -e testamd_%j.err #-----------------Toolchain--------------------------- # ----------------Modulos---------------------------- ml singularityCE/3.10.3 # ----------------Comando-------------------------- singularity exec $IMAGES/cp2k_2022.2.amd3.sif mpirun -x NUM_CPUS=64 -x NUM_GPUS=6 -x RANK_STRIDE=6 -x OMP_NUM_THREADS=4 --oversubscribe -np 16 --bind-to none set_cpu_affinity.sh set_gpu_affinity.sh cp2k.psmp -i /opt/cp2k/benchmarks/QS_DM_LS/H2O-dft-ls.NREP2.inp -o /tmp/H2O-DFT-LS-NREP2-8GPU.txt
Más información pueden encontrar en https://github.com/amd/InfinityHub-CI/