Utilizando srun (recomendado solo para sesiones interactivas)
Las sesiones interactivas pueden ejecutarse dentro de un shell programado utilizando el comando srun. Por ejemplo:
$ srun -N2 -n2 -exclusive --time=00:00:10 hostname
Solicita dos servidores o nodos (N2) y envía dos tareas (n2) en modo exclusivo, (-exclusive) y ejecuta el
comando “hostname“, con un tiempo máximo de ejecución de 10 segundos.
Solo se recomienda usar srun para sesiones interactivas porque srun se queda esperando a que se haga la reserva de recursos y termine el trabajo.
Utilizando sbatch
Generar un script job.sh con el siguiente contenido:
#!/bin/sh
#SBATCH -N 2 # solicita dos nodos
#SBATCH -n 2 # dos tareas en total
#SBATCH -p short # solicita la partición específica. Pueden solicitarse varias separadas por comas
#SBATCH -t 00:00:30 # 30 sec ejecución
srun hostname
Y enviar el trabajo con el comando:
$ sbatch ./job.sh
Las opciones de sbatch se pueden cambiar en el momento del envío. Así, para enviar el script anterior a la
partición cola-corta sin cambiar el script, se ejecutaría:
$ sbatch -p cola-corta ./job.sh
Nota: Es obligatorio especificar el tiempo máximo de ejecución con la opción –time=HH:MM:SS (o de forma reducida -t HH:MM:SS)
Reserva de memoria
En PROTEUS, Slurm por defecto reserva 700MB de memoria por cada core solicitado. En el caso de necesitar más memoria hay que especificarlo con las opciones –mem y
–mem-per-cpu .
A continuación se muestran ejemplos de solicitud de reserva de memoria.
Trabajo que no usa paralelización requiere de 6GB de memoria:
$ sbatch -n 1 --mem=6GB script.sh
Si lo que queremos es más de un core para una tarea, y que cada core tenga 20GB de memoria habría que hacer:
$ sbatch -n 1 --cpus-per-task=2 --mem-per-cpu=20GB script.sh