¡Esta es una revisión vieja del documento!
Uso de Slurm
Guía de usuario para el uso del cluster de Slurm desplegado.
1. Requisitos previos
- Tener cuenta de usuario activa:
LDAP ANTS. - Tener acceso SSH al clúster:
155.54.210.99. - Tener permiso de uso en al menos una partición:
CPUGPU(si aplica)
2. Acceso al clúster
Conexión típica:
ssh <USUARIO_LDAP>@<HOST_IP>
Te dejará en /slurm/home/<USUARIO>.
3. Comandos básicos que vas a usar siempre
- Ver estado general del clúster:
sinfo
- Ver cola de trabajos:
squeue
- Ver solo tus trabajos:
squeue -u <USUARIO>
- Ver detalle de un job:
scontrol show job <JOB_ID>
- Cancelar un job:
scancel <JOB_ID>
4. Flujo estándar de trabajo
4.1 Crear un script de job (''.sbatch'')
Ejemplo CPU:
cat > job_cpu.sbatch <<'EOF' #!/bin/bash #SBATCH --job-name=cpu_test #SBATCH --partition=cpu #SBATCH --nodes=1 #SBATCH --ntasks=1 #SBATCH --cpus-per-task=4 #SBATCH --time=00:10:00 echo "Usuario: $USER" echo "Host: $(hostname)" echo "JobID: $SLURM_JOB_ID" echo "Trabajo CPU de prueba" sleep 20 EOF
Ejemplo GPU:
cat > job_gpu.sbatch <<'EOF' #!/bin/bash #SBATCH --job-name=gpu_test #SBATCH --partition=gpu #SBATCH --nodes=1 #SBATCH --ntasks=1 #SBATCH --cpus-per-task=4 #SBATCH --gres=gpu:1 #SBATCH --time=00:10:00 nvidia-smi || true echo "Trabajo GPU de prueba" sleep 20 EOF
4.2 Enviar el job
sbatch job_cpu.sbatch
Slurm devolverá algo como:
Submitted batch job <JOB_ID>
4.3 Monitorizar
squeue -u <USUARIO>
Estados comunes:
PD: pendiente (pendiente de recursos/políticas).R: ejecutando.CG: terminando.CD: completado.F: fallado.
5. Dónde salen stdout y stderr
En este despliegue, si no defines –output/–error, Slurm aplica rutas por defecto:
stdout→/slurm/home/%u/output/%j/stdout.txtstderr→/slurm/home/%u/output/%j/stderr.txt
Equivalente para un job real:
/slurm/home/<USUARIO>/output/<JOB_ID>/stdout.txt/slurm/home/<USUARIO>/output/<JOB_ID>/stderr.txt
Consultar:
cat /slurm/home/<USUARIO>/output/<JOB_ID>/stdout.txt cat /slurm/home/<USUARIO>/output/<JOB_ID>/stderr.txt
6. Scratch por job (importantísimo)
Durante la ejecución, el clúster crea automáticamente:
/scratch/slurm/<USUARIO>/<JOB_ID>
Y al terminar el job, se elimina automáticamente.
Recomendación:
- Copia resultados importantes desde scratch a una ruta persistente antes de finalizar.
- Usa rutas persistentes para salidas finales (por ejemplo
/slurm/home/<USUARIO>/…)
7. Job interactivo
Para abrir una sesión interactiva en un nodo:
srun --partition=<PARTICION_CPU> --ntasks=1 --cpus-per-task=2 --time=00:30:00 --pty bash
Para GPU:
srun --partition=<PARTICION_GPU> --gres=gpu:1 --ntasks=1 --cpus-per-task=2 --time=00:30:00 --pty bash ===== 8. Arrays de jobs ===== Ejemplo: <code bash> cat > job_array.sbatch <<'EOF' #!/bin/bash #SBATCH --job-name=array_demo #SBATCH --partition=<PARTICION_CPU> #SBATCH --array=1-10 #SBATCH --time=00:05:00 echo "Task ID: $SLURM_ARRAY_TASK_ID" sleep 5 EOF
Enviar:
sbatch job_array.sbatch
9. Dependencias entre jobs
Enviar un primer job:
jid1=$(sbatch --parsable job_cpu.sbatch)
Enviar un segundo job que empiece cuando termine bien el primero:
sbatch --dependency=afterok:${jid1} job_cpu.sbatch
10. Historial y contabilidad
Ver historial básico:
sacct -u <USUARIO> --starttime today
Formato ampliado:
sacct -u <USUARIO> --format=JobID,JobName,Partition,State,Elapsed,ExitCode
11. Ver recursos de nodos
sinfo -N -l
Detalle de un nodo:
scontrol show node <NODO>
12. Errores comunes y solución rápida
Invalid account or account/partition combination specified- Tu usuario no está asociado a esa cuenta/partición.
- Contacta con administración.
- Job en
PDmucho tiempo- Puede faltar recursos o prioridad.
- Revisa motivo:
squeue -j <JOB_ID> -o "%.18i %.9P %.20j %.8u %.2t %.10M %.6D %R"
- No aparece output esperado
- Revisa rutas por defecto
/slurm/home/<USUARIO>/output/<JOB_ID>/ - Revisa
stderr.txt
- Error de GPU (
Requested node configuration is not available)–gres=gpu:<N>no cuadra con lo disponible.- Verifica con
sinfo -N -l
13. Buenas prácticas de uso
- Solicita solo recursos que realmente necesitas.
- Define
–timerealista. - Usa scripts reproducibles y versionados.
- Guarda resultados finales en almacenamiento persistente.
- Limpia datos intermedios pesados.
14. Plantilla mínima recomendada
#!/bin/bash #SBATCH --job-name=<NOMBRE_JOB> #SBATCH --partition=<PARTICION_CPU_O_GPU> #SBATCH --nodes=1 #SBATCH --ntasks=1 #SBATCH --cpus-per-task=<N_CPUS> #SBATCH --time=<HH:MM:SS> #SBATCH --mem=<RAM_MB_O_GB> set -euo pipefail echo "Job $SLURM_JOB_ID en $(hostname)" # Tu carga de trabajo aquí
15. Checklist rápido antes de enviar
- Script
.sbatchtiene#!/bin/bash. - Partición correcta (
CPUoGPU). - Recursos correctos (
cpu,mem,time,gressi GPU). - Ruta de datos de entrada existe.
- Resultado final se guarda en ruta persistente.