Estoy tratando de entender cuál es la diferencia entre SLURM sruny sbatchcomandos. Estaré feliz con una explicación general, en lugar de respuestas específicas a las siguientes preguntas, pero aquí hay algunos puntos específicos de confusión que pueden ser un punto de partida y dar una idea de lo que estoy buscando.
Según la documentación , srunes para enviar trabajos y sbatches para enviar trabajos para ejecución posterior, pero la diferencia práctica no me queda clara y su comportamiento parece ser el mismo. Por ejemplo, tengo un clúster con 2 nodos, cada uno con 2 CPU. Si ejecuto srun testjob.sh &5 veces seguidas, pondrá en cola el quinto trabajo hasta que haya una CPU disponible, al igual que la ejecución sbatch testjob.sh.
Para hacer la pregunta más concreta, creo que un buen punto de partida podría ser: ¿Cuáles son algunas de las cosas que puedo hacer con una que no puedo hacer con la otra y por qué?
Muchos de los argumentos de ambos comandos son los mismos. Los que parecen los más relevantes son --ntasks, --nodes, --cpus-per-task, --ntasks-per-node. ¿Cómo se relacionan entre sí y en qué se diferencian de srunvs sbatch?
Una diferencia particular es que sruncausará un error si testjob.shno tiene permiso de ejecución, es decir, chmod +x testjob.shcuando sbatchlo ejecutará felizmente. ¿Qué está sucediendo "bajo el capó" que hace que este sea el caso?
La documentación también menciona que srunse usa comúnmente dentro de los sbatchscripts. Esto lleva a la pregunta: ¿Cómo interactúan entre sí y cuál es el caso de uso "canónico" para cada uno de ellos? Específicamente, ¿alguna vez lo usaría srunsolo?

srundentro del guión de envío? Quizás estoy confundido sobre el significado de un "paso laboral". Por ejemplo, si tengo un script llamadorunjob.shque contiene#!/bin/bash srun myjob.sh, ¿hay una diferencia práctica entre llamar (a)sbatch runjob.shvs (b)sbatch myjob.shvs (c)srun myjob.shvs (d)srun runjob.sh? (Claramente el último es una tontería, pero tengo curiosidad).srundentro delsbatchscript de envío. Sin embargo, descubrí que los comandos sinsrunel script de envío se ejecutarán de la misma manera. ¿Existe realmente una diferencia entre las cuatro invocaciones que mencioné anteriormente?En realidad, esto no responde completamente a la pregunta, pero aquí hay más información que encontré que puede ser útil para alguien en el futuro:
De un hilo relacionado que encontré con una pregunta similar:
Información adicional de la página de preguntas frecuentes de SLURM .
Otra conversación relevante aquí
fuente