Estás aquí: start » centro » servizos » hpc

Cluster de Computación de Altas Prestacións (HPC) ctcomp3

Esta é unha revisión antiga do documento!


Cluster de Computación de Altas Prestacións (HPC)

Descripción

El clúster está compuesto en la parte de cómputo por:

  • 9 servidores para cómputo general.
  • 1 “fat node” para trabajos que requieran mucha memoria.
  • 4 servidores para computo con GPU.

Los usuarios solo tienen acceso directo al nodo de login, de prestaciones más limitadas y que no debe usarse para computar.
Todos los nodos están interconectados por una red a 10Gb.
Hay un almacenamiento distribuido accesible desde todos los nodos con 220 TB de capacidad conectado mediante una doble red de fibra de 25Gb.

Nombre Modelo Procesador Memoria GPU
hpc-login2 Dell R440 1 x Intel Xeon Silver 4208 CPU @ 2.10GHz (8c) 16 GB -
hpc-node[1-2] Dell R740 2 x Intel Xeon Gold 5220 @2,2 GHz (18c) 192 GB -
hpc-node[3-9] Dell R740 2 x Intel Xeon Gold 5220R @2,2 GHz (24c) 192 GB -
hpc-fat1 Dell R840 4 x Xeon Gold 6248 @ 2.50GHz (20c) 1 TB -
hpc-gpu[1-2] Dell R740 2 x Intel Xeon Gold 5220 CPU @ 2.20GHz (18c) 192 GB 2x Nvidia Tesla V100S
hpc-gpu3 Dell R7525 2 x AMD EPYC 7543 @2,80 GHz (32c) 256 GB 2x Nvidia Ampere A100 40GB
hpc-gpu4 Dell R7525 2 x AMD EPYC 7543 @2,80 GHz (32c) 256 GB 1x Nvidia Ampere A100 80GB

Conexión al sistema

Para acceder al clúster, hay que solicitarlo previamente a través de formulario de incidencias. Los usuarios que no tengan permiso de acceso recibirán un mensaje de “contraseñal incorrecta”.

El acceso se realiza mediante una conexión SSH al nodo de login:

ssh <nombre_de_usuario>@hpc-login2.inv.usc.es

Almacenamiento, directorios y sistemas de ficheros

No se hace copia de seguridad de ninguno de los sistemas de ficheros del cluster!!

El HOME de los usuarios en el cluster está en el sistema compartido de ficheros, por lo que es accesible desde todos los nodos del cluster. Ruta definida en la variable de entorno $HOME.
Cada nodo tiene una partición local de 1 TB para scratch, que se borra al terminar cada trabajo. Se puede acceder mediante la variable de entorno $LOCAL_SCRATCH en los scripts.
Para datos que deban ser compartidos por grupos de usuarios, hay que solicitar la creación de una carpeta en el almacenamiento compartido que solo será accesible por los miembros del grupo.

Directorio Variable Punto de montaje Capacidad
Home $HOME /mnt/beegfs/home/<username> 220 TB*
Scratch local $LOCAL_SCRATCH varía 1 TB
Carpeta de grupo a definir /mnt/beegfs/groups/<nombre> 220 TB*

* el almacenamiento es compartido

AVISO IMPORTANTE

El sistema compartido de archivos tiene un mal rendimiento cuando trabaja con muchos archivos de tamaño pequeño. Para mejorar el rendimiento en ese tipo de escenarios hay que crear un sistema de archivos en un fichero de imagen y montarlo para trabajar directamente sobre él. El procedimiento es el siguiente:

  • Crear el fichero de imagen en tu home:
## truncate image.name -s SIZE_IN_BYTES
truncate ejemplo.ext4 -s 20G
  • Crear un sistema de archivos en el fichero de imagen:
## mkfs.ext4 -T small -m 0 image.name
## -T small opciones optimizadas para archivos pequeños
## -m 0 No reservar espacio para root 
mkfs.ext4 -T small -m 0 ejemplo.ext4
  • Montar la imagen (usando SUDO) con el script mount_image.py :
## Por defecto queda montada en /mnt/imagenes/<username>/ en modo solo lectura.
sudo mount_image.py ejemplo.ext4
  • Para desmontar la imagen usar el script umount_image.py (usando SUDO)

El script de montaje tiene estas opciones:

--mount-point path   <-- (opcional)Con esta opción crea subdirectorios por debajo de /mnt/imagenes/<username>/<path>
--rw                  <-- (opcional)Por defecto se monta readonly, con esta opción se monta readwrite.

El script de desmontaje tiene estas opciones:

solo admite como parámetro opcional el mismo path que hayas usado para el montaje con la opción 
--mount-point  <-- (opcional)

Transferencia de ficheros y datos

SCP

Desde tu máquina local al cluster:

scp filename <username>@hpc-login2:/<ruta>

Desde el cluster a tu máquina local:

scp filename <username>@<hostname>:/<ruta>

Página del manual de SCP

SFTP

Para transferir múltiples archivos o para navegar por el sistema de archivos.

<hostname>:~$ sftp <user_name>@hpc-login2
sftp>
sftp> ls
sftp> cd <path>
sftp> put <file>
sftp> get <file>
sftp> quit

Página del manual de SFTP

RSYNC

SSHFS

Requiere la instalación del paquete sshfs.
Permite por ejemplo montar el home del equipo del usuario en hpc-login2:

## Montar
sshfs  <username>@ctdeskxxx.inv.usc.es:/home/<username> <punto_de_montaje>
## Desmontar
fusermount -u <punto_de_montaje>

Página del manual de SSHFS

Software disponible

Todos los nodos tienen el software básico que se instala por defecto con AlmaLinux 8.4, particularmente:

  • GCC 8.5.0
  • Python 3.6.8
  • Perl 5.26.3

Para usar cualquier otro software no instalado en el sistema u otra versión del mismo hay tres opciones:

  1. Usar Modules con los módulos que ya están instalados (o solicitar la instalación de un nuevo módulo si no está disponible)
  2. Usar un contenedor (uDocker o Singularity)
  3. Usar Conda

Un módulo es la solución más sencilla para usar software sin modificaciones o dependencias difíciles de satisfacer.
Un contenedor es ideal cuando las dependencias son complicadas y/o el software está muy personalizado. También es la mejor solución si lo que se busca es reproducibilidad, facilidad para su distribución y trabajo en equipo.
Conda es la mejor solución si lo que se necesita es la última versión de una librería o programa o paquetes no disponibles de otra forma.

Uso de modules/Lmod

Documentación de Lmod

# Ver los módulos disponibles:
module avail
# Cargar un módulo:
module <nombre_modulo>
# Descargar un módulo:
module unload <nombre_modulo>
# Ver módulos cargados en tu entorno:
module list
# Puede usarse ml como abreviatura del comando module:
ml avail
# Para obtener información sobre un módulo:
ml spider <nombre_modulo>

Ejecución de contenedores de software

uDocker

Manual de uDocker
uDocker está instalado como un módulo, así que es necesario cargarlo en el entorno:

ml uDocker

Singularity

Documentacion de Singularity
Singularity está instalado en el sistema de cada nodo, por lo que no es necesario hacer nada para usarlo.

CONDA

Documentacion de Conda
Miniconda es la versíon mínima de Anaconda y solo incluye el gestor de entornos conda, Python y unos pocos paquetes necesarios. A partir de ahí cada usuario solo descarga e instala los paquetes que necesita.

# Obtener miniconda
wget https://repo.anaconda.com/miniconda/Miniconda3-py39_4.11.0-Linux-x86_64.sh
# Instalarlo 
sh Miniconda3-py39_4.11.0-Linux-x86_64.sh

Uso de SLURM

Particiones

Uso de los nodos con GPU

Límites del sistema de colas (QOS)

Ejemplos de envío de un trabajo al sistema de colas

Monitorización de los trabajos

Salida estándar y de errores

Estados de los trabajos en el sistema de colas