es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Ejecutando varios archivos de trabajo similares (sbatch)

Estoy intentando ejecutar múltiples (varios cientos) de archivos de trabajo muy similares con slurm usando sbatch.

Mi archivo .job se ve así:

SBATCH ...

...
...
srun ./someProg -a A -b B -c C -d D

¿Existe alguna manera conveniente de enviar el archivo de trabajo utilizando sbatch con múltiples opciones para A/B/C y D, y generar un nuevo trabajo para cada combinación de A/B/C/D, sin generar simplemente cientos de archivos .job? (Ya he visto muchos arreglos en archivos de slurm, pero no creo que me ayude en este caso de todos modos).

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, puedes utilizar un script para generar las combinaciones únicas de A/B/C/D y enviarlas utilizando sbatch. Aquí tienes un ejemplo de script en bash:

    #!/bin/bash
    
    for A in valor1 valor2 valor3; do
      for B in valor4 valor5 valor6; do
        for C in valor7 valor8 valor9; do
          for D in valor10 valor11 valor12; do
            # Crear un nombre único para el trabajo basado en los valores de A/B/C/D
            nombre_trabajo="trabajo-$A-$B-$C-$D"
    
            # Escribir el archivo del trabajo, reemplazando los valores de A/B/C/D según sea necesario
            cat > $nombre_trabajo.job <<eof
    #sbatch ...
    ...
    ...
    srun ./algúnprograma -a $a -b $b -c $c -d $d
    eof
    
            # enviar el trabajo utilizando sbatch
            sbatch $nombre_trabajo.job
          done
        done
      done
    done
    

    este script utiliza bucles anidados para generar todas las posibles combinaciones de a/b/c/d. para cada combinación, crea un nombre único para el archivo de trabajo basado en los valores de a/b/c/d, escribe el archivo de trabajo con los valores adecuados de a/b/c/d y luego envía el trabajo utilizando sbatch.

    ten en cuenta que esto generará muchos archivos de trabajo (en este ejemplo, 273=81). si tienes un gran número de combinaciones, es posible que debas dividirlas en lotes y enviarlas por separado para evitar sobrecargar el programador. #sbatch=”” …=”” …=”” …=”” srun=”” ./algúnprograma=”” -a=”” $a=”” -b=”” $b=”” -c=”” $c=”” -d=”” $d=”” eof=”” #=”” enviar=”” el=”” trabajo=”” utilizando=”” sbatch=”” sbatch=”” $nombre_trabajo.job=”” done=”” done=”” done=”” done=”” “`=”” este=”” script=”” utiliza=”” bucles=”” anidados=”” para=”” generar=”” todas=”” las=”” posibles=”” combinaciones=”” de=”” a/b/c/d.=”” para=”” cada=”” combinación,=”” crea=”” un=”” nombre=”” único=”” para=”” el=”” archivo=”” de=”” trabajo=”” basado=”” en=”” los=”” valores=”” de=”” a/b/c/d,=”” escribe=”” el=”” archivo=”” de=”” trabajo=”” con=”” los=”” valores=”” adecuados=”” de=”” a/b/c/d=”” y=”” luego=”” envía=”” el=”” trabajo=”” utilizando=”” sbatch.=”” ten=”” en=”” cuenta=”” que=”” esto=”” generará=”” muchos=”” archivos=”” de=”” trabajo=”” (en=”” este=”” ejemplo,=”” 273=”81).” si=”” tienes=”” un=”” gran=”” número=”” de=”” combinaciones,=”” es=”” posible=”” que=”” debas=”” dividirlas=”” en=”” lotes=”” y=”” enviarlas=”” por=”” separado=”” para=”” evitar=”” sobrecargar=”” el=””></eof
    #sbatch …


    srun ./algúnprograma -a $a -b $b -c $c -d $d
    eof

        # enviar el trabajo utilizando sbatch
        sbatch $nombre_trabajo.job
      done
    done
    

    done
    done
    “`

    este script utiliza bucles anidados para generar todas las posibles combinaciones de a/b/c/d. para cada combinación, crea un nombre único para el archivo de trabajo basado en los valores de a/b/c/d, escribe el archivo de trabajo con los valores adecuados de a/b/c/d y luego envía el trabajo utilizando sbatch.

    ten en cuenta que esto generará muchos archivos de trabajo (en este ejemplo, 27*3=81). si tienes un gran número de combinaciones, es posible que debas dividirlas en lotes y enviarlas por separado para evitar sobrecargar el programador.>

Comments are closed.