Slurm también permite la ejecución de programas interactivos, es decir aplicaciones que requieren entrada directa del usuario y aplicaciones con entorno gráfico, para esto último consultar este enlace. Al igual que con cualquier trabajo, esperará a que haya recursos disponibles.
Mediante srun
Se pueden crear sesiones interactivas de shell mediante el comando srun. Por ejemplo:
[user@login0 ~]$ srun --pty /bin/bash
[user@svc -3024-6-25 ~]$
Slurm reserva los recursos, crea una tarea, inicia el shell en un nodo de computación y enlaza la sesión actual con la shell remota. Desde ese momento, estamos trabajando directamente en un nodo de computación y se puede ejecutar cualquier programa de forma interactiva.
Digamos que necesitas un mínimo de 4GB de RAM para tu tarea interactiva. Podemos pedir al planificador que nos prepare un nodo con >4GB de RAM requiriendo el límite mem de la siguiente forma:
[user@login0 ~]$ srun --mem=4096 --pty /bin/bash
[user@svc-3024-6-25 ~]$ free
Advertencia: A no ser que la restricción “-time=HH:MM:SS” sea usada, todos los trabajos enviados a SLURM (interactivos o de batch) recibirán un tiempo de ejecución predeterminado de 1 hora.
Mediante salloc y srun
Si necesitas crear una sesión interactiva a la que te puedas conectar y desconectar a voluntad mientras el trabajo se ejecuta, puedes:
- Usar salloc para crear la asignación de recursos
- Usar srun para conectarte
Para hacerlo, ejecuta el siguiente comando (modificado según sus necesidades):
salloc --ntasks=1 --time=00:30:00
Esto mostrará lo siguiente:
[user@itn0 ~]$ salloc --ntasks=1 --time=00:30:00
salloc: Pending job allocation 12345678
salloc: job 12345678 queued and waiting for resources
salloc: job 12345678 has been allocated resources
salloc: Granted job allocation 12345678
[user@itn0 ~]$
La diferencia con srun es que salloc crea la reserva de recursos, pero no cambia de sesión, seguimos en el nodo de login. Es decir, Slurm ha realizado la asignación de tu trabajo, pero aún no estás conectado de forma interactiva a esa asignación. Para hacerlo, deberías ejecutar el siguiente comando:
srun --jobid=12345678 --pty /bin/bash