Tipos de nodos disponibles: * Partición CPU (40 vCPU, 128GB) * Partición GPU (40 vCPU, 256GB, H100 96GB VRAM): ''--gres=H_100_NVL'' * Partición GPU (40 vCPU, 128GB, L40s 48GB VRAM): ''--gres=L40s'' * Partición GPU (20 vCPU, 128GB, L4 24GB VRAM): ''--gres=L4'' Recuerda que si no especificas recurso con gres, entrará en la primera gpu libre Si detectamos malgasto de recursos (por ejemplo reservar grandes cantidades de memoria para trabajos que no las necesiten) se aplicarán penalizaciones. Los recursos son comunes a todo el grupo y hay que hacer un uso responsable de ellos. ====== Uso de Slurm ====== Guía de usuario para el uso del cluster de Slurm desplegado. **Página visible a externos sin autenticación** Ver también cómo [[knowhow:slurm:guias_de_uso|enviar trabajos al clúster con sbatch]], cómo [[knowhow:slurm:ejemplo_workflow_jupyternb|ejecutar Jupyter en Slurm mediante sbatch]] y el [[knowhow:slurm:faq|FAQ]] ===== 1. Requisitos previos ===== * Tener cuenta de usuario activa: ''LDAP ANTS'' o ''[[https://externos.inf.um.es/fusiondirectory|LDAP EXTERNOS]]''. * Tener acceso SSH al clúster: ''155.54.210.99''. * Tener permiso de uso en al menos una partición: * ''CPU'' * ''GPU'' (si aplica) ===== 2. Acceso al clúster ===== Conexión típica: ssh @ Te dejará en ''/slurm/home/''. ===== 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 * Ver detalle de un job: scontrol show job * Cancelar un job: scancel ===== 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 ==== 4.3 Monitorizar ==== squeue -u 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.txt'' * ''stderr'' -> ''/slurm/home/%u/output/%j/stderr.txt'' Equivalente para un job real: * ''/slurm/home//output//stdout.txt'' * ''/slurm/home//output//stderr.txt'' Consultar: cat /slurm/home//output//stdout.txt cat /slurm/home//output//stderr.txt ===== 6. Scratch por job (importantísimo) ===== Durante la ejecución, el clúster crea automáticamente: * ''/scratch/slurm//'' 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//...'') ===== 7. Job interactivo ===== Para abrir una sesión interactiva en un nodo: srun --partition= --ntasks=1 --cpus-per-task=2 --time=00:30:00 --pty bash Para GPU: srun --partition= --gres=gpu:1 --ntasks=1 --cpus-per-task=2 --time=00:30:00 --pty bash ===== 8. Arrays de jobs ===== Ejemplo: cat > job_array.sbatch <<'EOF' #!/bin/bash #SBATCH --job-name=array_demo #SBATCH --partition= #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 --starttime today Formato ampliado: sacct -u --format=JobID,JobName,Partition,State,Elapsed,ExitCode ===== 11. Ver recursos de nodos ===== sinfo -N -l Detalle de un nodo: scontrol show node ===== 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 ''PD'' mucho tiempo * Puede faltar recursos o prioridad. * Revisa motivo: squeue -j -o "%.18i %.9P %.20j %.8u %.2t %.10M %.6D %R" * No aparece output esperado * Revisa rutas por defecto ''/slurm/home//output//'' * Revisa ''stderr.txt'' * Error de GPU (''Requested node configuration is not available'') * ''--gres=gpu:'' no cuadra con lo disponible. * Verifica con ''sinfo -N -l'' ===== 13. Buenas prácticas de uso ===== * Solicita solo recursos que realmente necesitas. * Define ''--time'' realista. * 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= #SBATCH --partition= #SBATCH --nodes=1 #SBATCH --ntasks=1 #SBATCH --cpus-per-task= #SBATCH --time= #SBATCH --mem= set -euo pipefail echo "Job $SLURM_JOB_ID en $(hostname)" # Tu carga de trabajo aquí ===== 15. Checklist rápido antes de enviar ===== * Script ''.sbatch'' tiene ''#!/bin/bash''. * Partición correcta (''CPU'' o ''GPU''). * Recursos correctos (''cpu'', ''mem'', ''time'', ''gres'' si GPU). * Ruta de datos de entrada existe. * Resultado final se guarda en ruta persistente. ----