HPC2: Comandos Introductorios

hostname

  • Comando
hostname

Mis datos

  • whoami
whoami
  • id
id
  • groups
groups

Kernel

uname -a

SO

cat /etc/os-release

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
  • Resultado
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

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
  • Variantes
# 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
  • RESULTADO
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
  • Liberamos los recursos
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
  • Ingresamos a la carpeta
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
  • Programa completo
#!/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."
  • Sin memoria
#!/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."
  • Lo ejecutamos
sbatch ej1_obtener_info_proceso.sbatch
  • Podemos ver su estado
squeue -u $USER 
  • Si lo volvemos a mandar y ya no esta es que termino
  • o con este comando
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