Changes between Version 1 and Version 2 of casos_de_uso_slurm


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

--

Legend:

Unmodified
Added
Removed
Modified
  • casos_de_uso_slurm

    v1 v2  
    22Como 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.
    33
    4 En 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.
     4En los ejemplos de esta sección, 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.
    55
    66Los 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
    77
    8 == Trabajo de una tarea single threaded con N repeticiones variando un argumento ==
    9 Es 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 
    23 mapfile -t FILE_ARRAY < file_list.tmp.txt
    24 ref='/home/someuser/sample_multi/raw_data/reference_genome/some_genome.fa'
    25 file=${FILE_ARRAY[ $SLURM_ARRAY_TASK_ID ]}
    26 sample=$(basename $file | cut -d'.' -f 1)
    27 gatk HaplotypeCaller -ERC GVCF -R $ref -O /home/someuser/sample_multi/prueba_GVCF/${sample}.g.vcf -I $file
    28 echo
    29 echo Finished this sub-task!
    30 }}}
    31 
    32 El 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 
    34 El 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 
    36 El 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 
    38 El 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.