Changes between Initial Version and Version 1 of casos_de_uso_slurm


Ignore:
Timestamp:
May 8, 2023, 8:45:40 AM (2 years ago)
Author:
tonin
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • casos_de_uso_slurm

    v1 v1  
     1= Casos de uso de slurm =
     2Como hemos comentado en otras páginas, para el buen funcionamiento del sistema HPC es necesario contar con el buen hacer de los usuarios al generar sus ficheros slurm, de manera que no le reserven recursos que realmente no van a usar.
     3
     4En los siguientes ejemplos, pondremos los casos de uso más habituales que sirvan como plantilla para que los usuarios generen sus propios ficheros de slurm de forma más eficiente.
     5
     6Los ficheros de ejemplo corresponden con casos reales de ejecución en nuestro HPC para trabajos reales gracias a los investigadores que nos han ayudado a testear todo el sistema. Han sido minimamente retocados para guardar cierta confidencialidad
     7
     8== Trabajo de una tarea single threaded con N repeticiones variando un argumento ==
     9Es un caso muy habitual, donde un programa que tiene un solo hilo de ejecución y por tanto necesita un solo core, se tiene que lanzar N veces variando los argumentos.
     10{{{
     11#!/bin/bash
     12#SBATCH --job-name=sample_multi
     13#SBATCH --array=0-36
     14#SBATCH --partition=normal
     15#SBATCH --output=/home/someuser/gbs_project/prueba_GVCF/logs//gbs_VC_%A_%a.out
     16#SBATCH --ntasks=1
     17#SBATCH --nodes=1
     18#SBATCH --cpus-per-task=1
     19#SBATCH --mem-per-cpu=12G
     20#SBATCH --time=0-12:00
     21
     22
     23mapfile -t FILE_ARRAY < file_list.tmp.txt
     24ref='/home/someuser/sample_multi/raw_data/reference_genome/some_genome.fa'
     25file=${FILE_ARRAY[ $SLURM_ARRAY_TASK_ID ]}
     26sample=$(basename $file | cut -d'.' -f 1)
     27gatk HaplotypeCaller -ERC GVCF -R $ref -O /home/someuser/sample_multi/prueba_GVCF/${sample}.g.vcf -I $file
     28echo
     29echo Finished this sub-task!
     30}}}
     31
     32El script define el nombre del trabajo y la partición. Define un {{{array}}} que variará de 0 a 36 y se utilizará como argumento para el nombre de los ficheros de salida (%a) y el fichero de entrada (file) mediante la variable {{{$SLURM_ARRAY_TASK_ID}}}.
     33
     34El resto de los parámetros propios de SBATCH fijan los requerimientos de nuestro programa. Cada iteración será una tarea que se ejecutará en 1 nodo requiriendo una sola cpu (core) por tarea, y un máximo de 12 gigaBytes de memoria. El parámetro {{{--time}}} fija el tiempo máximo de ejecución, 0 días y 12 horas en este caso.
     35
     36El tiempo de ejecución se usa para que de una parte no rebase al iniciarse el máximo definido en la partición (si lo rebasara se quedaría en estado PENDING), y que una vez en ejecución no rebase este tiempo (si lo hiciera se autocancelaría). Es interesante porque evita que se ejecuten indefinidamente por ejemplo algoritmos que mediante iteraciones requieran determinada convergencia a un resultado que nunca se alcance.
     37
     38El resto de líneas corresponden a las instrucciones en sí del trabajo, que lógicamente dependerán de lo que se quiera hacer. En la sección [Variables de slurm] se describen las variables de slurm que podremos usar como argumentos en esta parte de nuestro script.