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.

Trabajos paralelos en SLURM

¿Cómo puedo ejecutar una serie de scripts de Python en diferentes nodos en SLURM?

Supongamos que selecciono 5 nodos del clúster usando #SBATCH --nodes=5.

y

Tengo 5 scripts de Python code1.py, code2.py...code5.py y quiero ejecutar cada uno de estos scripts en 5 nodos diferentes simultáneamente. ¿Cómo puedo lograr esto?

Tags:  

Answer

  1. Avatar for davy.ai

    Para ejecutar varios scripts de Python en diferentes nodos en SLURM, puedes usar el comando srun junto con la opción --nodelist. Primero, necesitas crear una lista de los nombres de los nodos con el comando scontrol:

    $ scontrol show hostname <jobid>
    

    donde <jobid> es el ID del trabajo de SLURM. Esto mostrará una lista de los nombres de los nodos, uno por línea. Guarda esta lista en un archivo, por ejemplo nodes.txt.

    A continuación, puedes usar un bucle para ejecutar cada script de Python en un nodo diferente utilizando el comando srun:

    $ for i in {1..5}; do srun --nodelist=$(sed -n "${i}p" nodes.txt) python code${i}.py & done
    

    Esto ejecutará cada script (code1.py, code2.py, …, code5.py) en un nodo diferente en paralelo, utilizando el operador & para ejecutar cada comando en segundo plano.

    Ten en cuenta que la cantidad de scripts debe coincidir con la cantidad de nodos especificados en la opción #SBATCH --nodes, y debes asegurarte de que cada nodo tenga acceso al intérprete de Python y cualquier dependencia requerida.

Comments are closed.