Ver páginaRevisiones antiguasEnlaces a esta páginaVolver arriba Esta página es de solo lectura. Puedes ver la fuente pero no puedes cambiarla. Pregunta a tu administrador si crees que esto es incorrecto. <WRAP center round info 60%> 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 </WRAP> <WRAP center round important 60%> 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. </WRAP> ====== 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: <code bash> ssh <USUARIO_LDAP>@<HOST_IP> </code> Te dejará en ''/slurm/home/<USUARIO>''. ===== 3. Comandos básicos que vas a usar siempre ===== * Ver estado general del clúster: <code bash> sinfo </code> * Ver cola de trabajos: <code bash> squeue </code> * Ver solo tus trabajos: <code bash> squeue -u <USUARIO> </code> * Ver detalle de un job: <code bash> scontrol show job <JOB_ID> </code> * Cancelar un job: <code bash> scancel <JOB_ID> </code> ===== 4. Flujo estándar de trabajo ===== ==== 4.1 Crear un script de job (''.sbatch'') ==== Ejemplo CPU: <code bash> 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 </code> Ejemplo GPU: <code bash> 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 </code> ==== 4.2 Enviar el job ==== <code bash> sbatch job_cpu.sbatch </code> Slurm devolverá algo como: <code> Submitted batch job <JOB_ID> </code> ==== 4.3 Monitorizar ==== <code bash> squeue -u <USUARIO> </code> 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/<USUARIO>/output/<JOB_ID>/stdout.txt'' * ''/slurm/home/<USUARIO>/output/<JOB_ID>/stderr.txt'' Consultar: <code bash> cat /slurm/home/<USUARIO>/output/<JOB_ID>/stdout.txt cat /slurm/home/<USUARIO>/output/<JOB_ID>/stderr.txt </code> ===== 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: <code bash> srun --partition=<PARTICION_CPU> --ntasks=1 --cpus-per-task=2 --time=00:30:00 --pty bash </code> Para GPU: <code bash> srun --partition=<PARTICION_GPU> --gres=gpu:1 --ntasks=1 --cpus-per-task=2 --time=00:30:00 --pty bash </code> ===== 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 </code> Enviar: <code bash> sbatch job_array.sbatch </code> ===== 9. Dependencias entre jobs ===== Enviar un primer job: <code bash> jid1=$(sbatch --parsable job_cpu.sbatch) </code> Enviar un segundo job que empiece cuando termine bien el primero: <code bash> sbatch --dependency=afterok:${jid1} job_cpu.sbatch </code> ===== 10. Historial y contabilidad ===== Ver historial básico: <code bash> sacct -u <USUARIO> --starttime today </code> Formato ampliado: <code bash> sacct -u <USUARIO> --format=JobID,JobName,Partition,State,Elapsed,ExitCode </code> ===== 11. Ver recursos de nodos ===== <code bash> sinfo -N -l </code> Detalle de un nodo: <code bash> scontrol show node <NODO> </code> ===== 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: <code bash> squeue -j <JOB_ID> -o "%.18i %.9P %.20j %.8u %.2t %.10M %.6D %R" </code> * 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 ''--time'' realista. * Usa scripts reproducibles y versionados. * Guarda resultados finales en almacenamiento persistente. * Limpia datos intermedios pesados. ===== 14. Plantilla mínima recomendada ===== <code bash> #!/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í </code> ===== 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. ---- knowhow/slurm.txt Última modificación: 2026/06/11 20:10por lbernal