Changes between Initial Version and Version 1 of single_threaded_task


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

--

Legend:

Unmodified
Added
Removed
Modified
  • single_threaded_task

    v1 v1  
     1== Trabajo de una tarea single threaded con N repeticiones variando un argumento ==
     2Es 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.
     3{{{
     4#!/bin/bash
     5#SBATCH --job-name=sample_multi
     6#SBATCH --array=0-36
     7#SBATCH --partition=normal
     8#SBATCH --output=/home/someuser/gbs_project/prueba_GVCF/logs//gbs_VC_%A_%a.out
     9#SBATCH --ntasks=1
     10#SBATCH --nodes=1
     11#SBATCH --cpus-per-task=1
     12#SBATCH --mem-per-cpu=12G
     13#SBATCH --time=0-12:00
     14
     15
     16mapfile -t FILE_ARRAY < file_list.tmp.txt
     17ref='/home/someuser/sample_multi/raw_data/reference_genome/some_genome.fa'
     18file=${FILE_ARRAY[ $SLURM_ARRAY_TASK_ID ]}
     19sample=$(basename $file | cut -d'.' -f 1)
     20gatk HaplotypeCaller -ERC GVCF -R $ref -O /home/someuser/sample_multi/prueba_GVCF/${sample}.g.vcf -I $file
     21echo
     22echo Finished this sub-task!
     23}}}
     24
     25El 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}}}.
     26
     27El 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.
     28
     29El 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.
     30
     31El 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.