Changes between Version 1 and Version 2 of multi_step_task


Ignore:
Timestamp:
May 12, 2025, 1:59:11 PM (4 weeks ago)
Author:
i22balur
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • multi_step_task

    v1 v2  
    1717Este pipeline tiene 2 pasos (1 y 4) que no son paralelizables y otros dos (2 y 3) que si lo son. Los paralelizables aún cuando tienen más necesidades computacionales, tardan menos al beneficiarse de la ejecución paralela.
    1818
    19 El problema es que el pipeline completo tarda 6 horas y si se lanza en un solo trabajo usando las especificaciones de cores y memoria máximos para el conjunto de tareas, se reservarían durante esas 6 horas 10 cores y 10 Gb de memoria, cuando dichas necesidades máximas solo se necesitan en un hora en cada caso.
    20 
    21 Esto evidentemente provoca un uso no óptimo de los recursos del HPC, impidiendo que otros trabajos puedan ejecutarse cuando realmente hay recursos ociosos.
    22 
    23 Frente a esto, se puede usar una estrategia de separar las tareas en un único trabajo usando diferentes especificaciones. Supongamos el siguiente shell script:
    24 
    25 {{{#!bash
    26 #!/bin/bash
    27 srun --job-name=adquisicion --mem=1G --partition=fast --cpus-per-task=10 stress --cpu 1 --timeout 120
    28 srun --job-name=curado --mem=10G --partition=fast --cpus-per-task=2 stress --cpu 4 --timeout 60
    29 srun --job-name=analisis --mem=4G --partition=fast --cpus-per-task=5 stress --cpu 10 --timeout 60
    30 srun --job-name=resultados --mem=1G --partition=fast --cpus-per-task=5 stress --cpu 1 --timeout 120
    31 }}}
    32 
     19El problema es que el pipeline completo tarda 6 horas y si se lanza en un solo trabajo usando las especificaciones de cores y memoria máximos para el conjunto de tareas, se reservarían durante esas 6 horas 10 cores y 10 Gb de memoria, cuando dichas necesidades máximas solo se necesitan en un hora en cada caso. Esto se puede apreciar con el siguiente shell script:
    3320
    3421{{{#!bash
     
    4027#SBATCH --output=pipeline.log
    4128
    42 stress --cpu 1 --timeout 120
    43 stress --cpu 4 --timeout 60
    44 stress --cpu 10 --timeout 60
    45 stress --cpu 1 --timeout 120
     29stress --cpu 1 --vm 1 --vm-bytes 1G --timeout 120
     30stress --cpu 4 --vm 1 --vm-bytes 10G --timeout 60
     31stress --cpu 10 --vm 1 --vm-bytes 4G --timeout 60
     32stress --cpu 1 --vm 1 --vm-bytes 1G --timeout 120
    4633}}}
    4734
     35Al ejecutarlo con {{{sbatch}}} obtenemos una gráfica del uso de recursos frente a lo reservado como la siguiente:
     36
     37...
     38
     39Esto evidentemente provoca un uso no óptimo de los recursos del HPC, impidiendo que otros trabajos puedan ejecutarse cuando realmente hay recursos ociosos.
     40
     41Frente a esto, se puede usar una estrategia de separar las tareas en un único trabajo usando diferentes especificaciones. Supongamos el siguiente shell script:
     42
     43{{{#!bash
     44#!/bin/bash
     45srun --job-name=adquisicion --mem=1G --partition=fast --cpus-per-task=10 stress --cpu 1 --vm 1 --vm-bytes 1G --timeout 120
     46srun --job-name=curado --mem=10G --partition=fast --cpus-per-task=2 stress --cpu 4 --vm 1 --vm-bytes 10G --timeout 60
     47srun --job-name=analisis --mem=4G --partition=fast --cpus-per-task=5 stress --cpu 10 --vm 1 --vm-bytes 4G --timeout 60
     48srun --job-name=resultados --mem=1G --partition=fast --cpus-per-task=5 stress --cpu 1 --vm 1 --vm-bytes 1G --timeout 120
     49}}}
     50
     51Al ejecutarlo con {{{nohup ./<script> &}}} obtenemos un mayor aprovechamiento de los recursos tal y como se muestra en las siguientes imagenes:
     52
     53...
    4854
    4955