1. Datos del servidor
hostname
hostname
Mis datos
whoami
id
groups
Kernel
uname -a
SO
cat /etc/os-release
2. Datos del Clúster y sus recursos
Slurm: Version
sinfo --version
Particiones y estado global: sinfo
particiones y estado global de nodos
Informacion
son aproximadamente 26 nodos nombrados n001 a n026
todos con TIMELIMIT infinite (es decir, no hay tope de duración a nivel de partición)
Informacion de los nodos en una linea
sinfo -N -l
Detalle particiones: scontrol show partition
scontrol show partition
PartitionName=mpi
AllowGroups=ALL AllowAccounts=ALL AllowQos=ALL
AllocNodes=ALL Default=NO QoS=normal
DefaultTime=NONE DisableRootJobs=NO ExclusiveUser=NO GraceTime=0 Hidden=NO
MaxNodes=UNLIMITED MaxTime=UNLIMITED MinNodes=0 LLN=NO MaxCPUsPerNode=UNLIMITED
Nodes=n[002-014,021-026]
PriorityJobFactor=1 PriorityTier=1 RootOnly=NO ReqResv=NO OverSubscribe=NO
OverTimeLimit=NONE PreemptMode=OFF
State=UP TotalCPUs=380 TotalNodes=19 SelectTypeParameters=NONE
JobDefaults=(null)
DefMemPerNode=UNLIMITED MaxMemPerNode=UNLIMITED
PartitionName=shared
AllowGroups=ALL AllowAccounts=ALL AllowQos=ALL
AllocNodes=ALL Default=NO QoS=serial-qos
DefaultTime=NONE DisableRootJobs=NO ExclusiveUser=NO GraceTime=0 Hidden=NO
MaxNodes=UNLIMITED MaxTime=UNLIMITED MinNodes=0 LLN=NO MaxCPUsPerNode=UNLIMITED
Nodes=n001
PriorityJobFactor=1 PriorityTier=1 RootOnly=NO ReqResv=NO OverSubscribe=NO
OverTimeLimit=NONE PreemptMode=OFF
State=UP TotalCPUs=20 TotalNodes=1 SelectTypeParameters=NONE
JobDefaults=(null)
DefMemPerNode=UNLIMITED MaxMemPerNode=UNLIMITED
PartitionName=lab
AllowGroups=ALL AllowAccounts=ALL AllowQos=ALL
AllocNodes=ALL Default=NO QoS=serial-qos
DefaultTime=NONE DisableRootJobs=NO ExclusiveUser=NO GraceTime=0 Hidden=NO
MaxNodes=UNLIMITED MaxTime=UNLIMITED MinNodes=0 LLN=NO MaxCPUsPerNode=UNLIMITED
Nodes=n001
PriorityJobFactor=1 PriorityTier=1 RootOnly=NO ReqResv=NO OverSubscribe=NO
OverTimeLimit=NONE PreemptMode=OFF
State=UP TotalCPUs=20 TotalNodes=1 SelectTypeParameters=NONE
JobDefaults=(null)
DefMemPerNode=UNLIMITED MaxMemPerNode=UNLIMITED
PartitionName=debug
AllowGroups=ALL AllowAccounts=ALL AllowQos=ALL
AllocNodes=ALL Default=YES QoS=serial-qos
DefaultTime=NONE DisableRootJobs=NO ExclusiveUser=NO GraceTime=0 Hidden=NO
MaxNodes=UNLIMITED MaxTime=UNLIMITED MinNodes=0 LLN=NO MaxCPUsPerNode=UNLIMITED
Nodes=n001
PriorityJobFactor=1 PriorityTier=1 RootOnly=NO ReqResv=NO OverSubscribe=NO
OverTimeLimit=NONE PreemptMode=OFF
State=UP TotalCPUs=20 TotalNodes=1 SelectTypeParameters=NONE
JobDefaults=(null)
DefMemPerNode=UNLIMITED MaxMemPerNode=UNLIMITED
Informacion de 1 nodo: scontrol show node
scontrol show node n001
3. datos límites, cuenta y prioridad
Mi usuario
sacctmgr show user $USER
Asociaciones (permisos limites)
sacctmgr show assoc user=$USER format=Account,Partition,QOS,MaxJobs,MaxWall,GrpTRES
fair-share: Su consumo
sshare -U
Prioridad de mis Jobs
sprio -u $USER
Historial de trabajos
sacct -u $USER --starttime=2026-01-01 -o JobID,JobName,Partition,State,Elapsed,MaxRSS
# Un job específico con más detalle
sacct -j 1234 -o JobID,JobName,State,ExitCode,Elapsed,Timelimit,MaxRSS,ReqMem,AllocCPUS,NodeList
# Lo de esta semana
sacct -u $USER -S now-7days -o JobID,JobName,State,Elapsed,MaxRSS
# Solo los que fallaron
sacct -u $USER -S now-30days -s FAILED,TIMEOUT,OUT_OF_MEMORY -o JobID,JobName,State,Elapsed
# Formato ancho y legible
sacct -u $USER -S today -o JobID%20,JobName%15,State%12,Elapsed,MaxRSS,ReqMem
# El %N fuerza ancho de columna N
# Ver TODOS los campos disponibles
sacct --helpformat
4. Software Disponible
Software Disponible
module avail
Informacion del módulo
module show nombre_modulo
Cargar módulo en la shell
module load nombre_modulo
Consultar modulos cargados
module list
Eliminar módulo de la shell
module unload nombre_modulo
Eliminar todos los módulos
module purge
5. Almacenamiento
Filesystems montados
df -h
Cuota de almacenamiento
quota -s
Ubicacion de mi almacenamiento
echo $HOME
Listar mis archivos
ls -la $HOME
6. Ingresar en modo interactivo en particion debug
Para ingresar al nodo n001
srun --partition=debug --nodes=1 --ntasks=1 --cpus-per-task=2 --time=00:30:00 --pty bash -l
podemos comprobar que estamos dentro del nodo 1
hostname # nombre del host
nproc # numero de cpus solicitados con este parametro --cpus-per-task=2
free -h # memoria dispobible
env | grep SLURM_ # Variables de SLUM
gustavo.matamoros.gonzalez@n001:~$ hostname
n001.cluster.pssclabs.com
gustavo.matamoros.gonzalez@n001:~$ nproc
2
gustavo.matamoros.gonzalez@n001:~$ free -h
total used free shared buff/cache available
Mem: 62Gi 660Mi 60Gi 2.0Mi 2.0Gi 61Gi
Swap: 20Gi 3.0Mi 20Gi
gustavo.matamoros.gonzalez@n001:~$ env | grep SLURM_
SLURM_STEP_NUM_TASKS=1
SLURM_JOB_USER=gustavo.matamoros.gonzalez
SLURM_TASKS_PER_NODE=1
SLURM_JOB_UID=1335
SLURM_CPU_BIND=quiet,mask_cpu:0x00003
SLURM_TASK_PID=378094
SLURM_LOCALID=0
SLURM_SUBMIT_DIR=/home/gustavo.matamoros.gonzalez
SLURM_CPU_BIND_VERBOSE=quiet
SLURM_STEP_NODELIST=n001
SLURM_CLUSTER_NAME=cluster
SLURM_CPUS_ON_NODE=2
SLURM_UMASK=0002
SLURM_JOB_CPUS_PER_NODE=2
SLURM_GTIDS=0
SLURM_JOB_PARTITION=debug
SLURM_JOB_NUM_NODES=1
SLURM_STEPID=0
SLURM_CPU_BIND_LIST=0x00003
SLURM_JOBID=39044
SLURM_PTY_PORT=42111
SLURM_LAUNCH_NODE_IPADDR=172.16.35.254
SLURM_JOB_QOS=normal
SLURM_PTY_WIN_ROW=42
SLURM_CPU_BIND_TYPE=mask_cpu:
SLURM_PROCID=0
SLURM_CPUS_PER_TASK=2
SLURM_NTASKS=1
SLURM_TOPOLOGY_ADDR=n001
SLURM_TOPOLOGY_ADDR_PATTERN=node
SLURM_SRUN_COMM_HOST=172.16.35.254
SLURM_WORKING_CLUSTER=cluster:cicima-hpc:6817:8704:101
SLURM_PTY_WIN_COL=190
SLURM_NODELIST=n001
SLURM_SRUN_COMM_PORT=33475
SLURM_STEP_ID=0
SLURM_JOB_ACCOUNT=cgi
SLURM_PRIO_PROCESS=0
SLURM_NPROCS=1
SLURM_NNODES=1
SLURM_SUBMIT_HOST=cicima-hpc
SLURM_JOB_ID=39044
SLURM_NODEID=0
SLURM_STEP_NUM_NODES=1
SLURM_STEP_TASKS_PER_NODE=1
SLURM_JOB_NAME=bash
SLURM_STEP_LAUNCHER_PORT=33475
SLURM_JOB_GID=1344
SLURM_JOB_NODELIST=n001
exit
7. Primer programa:
Este primer programa se ejecuta dentro de Helix y el se encarga de ejecutarlo en algun nodo y retornarnos una salida
Ahorita nos encontramos en nuestro home
pwd
Creamos una carpeta para almacenar los programas
mkdir curso_hpc
cd curso_hpc
Creamos otra carpetas para clasificar e ingresamos a la carpeta
mkdir -p mios/ej1_obtener_info_proceso
cd mios/ej1_obtener_info_proceso/
En el momento de ejecutarlo la particion debug tiene un error y es que tiene reportado 1Mb de memoria como podemos comprobar con el comando
sinfo -N -o "%N %m %e"
Podemos ver que todos los nodos tiene reportado 1 MB de memoria
El programa debería venir con la memoria establecida
Pero como existe el problema de memoria vamos a quitar esta linea
Creamos el archivo
nano ej1_obtener_info_proceso.sbatch
#!/bin/bash
#SBATCH --job-name=hello
#SBATCH --partition=mpi
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=2
#SBATCH --mem=2G
#SBATCH --time=00:05:00
#SBATCH --output=ej1_obtener_info_proceso_%j.out
#SBATCH --error=ej1_obtener_info_proceso_%j.err
echo "Nodo: $(hostname)"
echo "Job ID: $SLURM_JOB_ID"
echo "CPUs asignadas: $SLURM_CPUS_PER_TASK"
sleep 30
echo "Listo."
#!/bin/bash
#SBATCH --job-name=hello
#SBATCH --partition=debug
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=2
#SBATCH --time=00:05:00
#SBATCH --output=ej1_obtener_info_proceso_%j.out
#SBATCH --error=ej1_obtener_info_proceso_%j.err
echo "Nodo: $(hostname)"
echo "Job ID: $SLURM_JOB_ID"
echo "CPUs asignadas: $SLURM_CPUS_PER_TASK"
sleep 30
echo "Listo."
sbatch ej1_obtener_info_proceso.sbatch
squeue -u $USER
Si lo volvemos a mandar y ya no esta es que termino
sacct -j id_job -o JobID,JobName,State,ExitCode,Elapsed,MaxRSS,NodeList
para ver los archivos (salida) creados
ls
para ver el archivo de out y err
# error
cat ej1_obtener_info_proceso_39061.err
# Salida
cat ej1_obtener_info_proceso_39061.out