Manual Cluster HPC UVic-UCC

Introducció i Recursos del Clúster

Aquest manual està dissenyat per ajudar els nous usuaris del clúster de càlcul de la UVic-UCC. El seu objectiu és proporcionar les eines necessàries per començar a utilitzar el clúster de manera eficient. Es recomana tenir coneixements bàsics del sistema Unix per poder treballar còmodament.

Què és un clúster de càlcul?

Un clúster de càlcul és un conjunt d'ordinadors que treballen conjuntament per processar tasques de manera eficient. Un dels ordinadors, anomenat node mestre o node d'inici de sessió, s'encarrega d'assignar els programes (anomenats jobs) als altres ordinadors mitjançant un gestor de cues (scheduler).

Representació d'un clúster de càlcul
Representació esquemàtica d'un clúster de càlcul.

Recursos del Clúster

  • 112 CPUs: Distribuïdes en diferents nodes per optimitzar el càlcul paral·lel.
  • 515 GB de RAM: Repartida segons les necessitats dels usuaris.
  • 2 GPUs: Disponibles per a càlculs d'intel·ligència artificial.
  • 8 TB d'emmagatzematge: Per guardar dades i resultats.

Sistema de Gestió de Jobs: Slurm

Un cop dins del clúster, utilitzem el sistema Slurm Management. Podeu trobar la documentació oficial en aquest enllaç: Documentació de Slurm. Per a més informació sobre el nostre cluster de càlcul, veieu la presentació.

Presentació clúster de càlcul UVic-UCC
Last update 15/01/2025

Administradors del clúster

  • Jordi Sala Serra: Tècnic de l'àrea TIC de la UVic-UCC (jordi.sala@uvic.cat).
  • Roger Casals Franch: Responsable d'usuaris i programari de recerca, INVESTIGO a l'IRIS-CC i doctorand al SGR BI² (roger.casals@uvic.cat).

Connectar-se via VPN i SSH

1. Connexió VPN

Primer de tot, per tal de connectar-vos al cluster, heu d'obrir el túnel via VPN. Us heu de descarregar la versió de Forticlient que sigui compatible amb el vostre sistema operatiu. Seguidament, un cop us hagueu descarregat FortiClient, heu d'anar a l'apartat "Remote Access" i configurar-lo de la manera següent.

  • Teams: Haureu estat acceptat dins d'un grup d'users. A l'apartat Bloc de notes de l'HPC trobareu com connectar-vos via VPN.

2. Connexió SSH

Un cop hagueu activat la connexió via VPN, per connectar-vos al clúster executeu la següent comanda al terminal:

ssh -l nom.cognom@uvic.cat lavandula.uvic.local

Introduïu la contrasenya del vostre Campus Virtual quan us la demani. Tingueu en compte que no podeu treballar de manera interactiva al clúster; és obligatori enviar jobs mitjançant Slurm.

Guia Bàsica per Enviar Jobs

1. Crear un Fitxer de Treball (Script sbatch)

Es recomana mantenir una estructura clara per als vostres directoris:

  • Per crear directoris al vostre home, heu d'utilitzar mkdir.
  • data/: Conté les dades d'entrada.
  • results/: Guarda els resultats del càlcul.
  • scripts/: Inclou els scripts de treball (.sh).

Heu de crear un fitxer de text que contingui les comandes #SBATCH i adaptar-les segons els requeriments del vostre càlcul.

Exemple de Script Bàsic:

#!/bin/bash
#SBATCH --job-name=nom_job          # Nom del job
#SBATCH --output=sortida.txt        # Fitxer de sortida
#SBATCH --error=error.txt           # Fitxer d’errors
#SBATCH --time=01:00:00             # Temps màxim (hh:mm:ss)
#SBATCH --cpus-per-task=4           # Nombre de CPUs per tasca
#SBATCH --mem=4GB                   # Memòria assignada

python script.py                    # Execució del vostre codi
Rscript script.R                    # En cas que fos R

Comentaris:

  • --job-name: Assigna un nom al vostre job per identificar-lo fàcilment.
  • --output: Especifica el fitxer on es guardarà la sortida del job.
  • --error: Indica el fitxer on es guardaran els errors.
  • --time: Defineix el temps màxim d'execució del job.
  • --cpus-per-task: Estableix el nombre de CPUs assignades al job.
  • --mem: Defineix la memòria necessària per al job.

Comandaments de Slurm

2. Enviar el Job a Slurm

Per enviar el job, utilitzeu:

sbatch job_script.sh

Això us retornarà un Job ID (per exemple, 12345) que us servirà per fer seguiment del job.

3. Consultar l’Estat dels Vostres Jobs

Per veure l’estat dels vostres jobs (si estan en cua o en execució), utilitzeu:

squeue

Estats Comuns:

  • PD (PENDING): El job està en cua.
  • R (RUNNING): El job està en execució.

4. Cancel·lar un Job

Si necessiteu cancel·lar un job, utilitzeu:

scancel 12345

5. Comprovar els Recursos Disponibles

Per veure quins recursos (nodes i particions) estan disponibles, utilitzeu:

sinfo

Comandes bàsiques de SLURM

1. Consultar l’estat del clúster

  • sinfo → Mostra l’estat dels nodes i particions disponibles.
  • squeue → Mostra tots els treballs en cua.
  • squeue -u $USER → Mostra només els teus treballs en cua.
  • squeue -j <job_id> → Consulta l'estat d'un treball específic.

2. Enviament de treballs

  • sbatch script.sh → Envia un treball al clúster mitjançant un script.

3. Gestió de treballs

  • scancel <job_id> → Cancel·la un treball específic.
  • scancel -u $USER → Cancel·la tots els teus treballs en execució.
  • scontrol show job <job_id> → Mostra informació detallada d’un treball.
  • seff job <job_id> → Mostra l'informe d'eficiència que s'envia per correu.

4. Transferència de fitxers

Per enviar i rebre fitxers entre el vostre ordinador i el clúster, utilitzeu la comanda scp. Si voleu copiar tot un directori, podeu utilitzar scp -r. IMPORTANT: La transferència s’ha de fer sempre des del vostre ordinador.

Exemples:

  • Copiar un fitxer des del vostre ordinador al clúster:
    scp fitxer.txt NIU@uvic.local@lavandula:CARPETA/CARPETA
  • Copiar un fitxer del clúster al vostre ordinador:
    scp NIU@uvic.local@lavandula:CARPETA/CARPETA/fitxer.txt .
    (El punt final indica que es copiarà al directori actual.)

Informació de Particions

Nom de la Partició Node CPUs Memòria (MB) GPU
highmemvcompute11422244520
normal1vcompute1214300520
normal2vcompute1314300520
normal3vcompute1414300520
normal4vcompute1514300520
normal5vcompute1614300520
gpucompute0240320082
lowmemcompute0240320080

Exemples de Scripts

Aquí teniu alguns scripts Slurm de referència per a càlculs de química computacional sobre CPU. Podeu descarregar-los o adaptar-los a les vostres dades i al software instal·lat al clúster.

Apptainer

Apptainer és una eina de contenidors dissenyada per facilitar l'execució d'aplicacions amb totes les seves dependències en entorns HPC. Com que ja està instal·lat en el nostre sistema, aquest tutorial se centra en com construir i utilitzar imatges de contenidors.

1. Creació d'una imatge amb un fitxer de recepta

El primer pas és crear un fitxer de recepta (definition file) .def que descrigui la base i les instruccions per construir la imatge. Per exemple, crea un fitxer anomenat apptainer.def amb el següent contingut:

Bootstrap: docker
From: ubuntu:20.04

%post
    apt-get update && apt-get install -y python3     # Aquí pots instal·lar tots els paquets / llibreries necessàries

%runscript
    exec python3 "$@"

Aquest fitxer indica que la imatge es basarà en Ubuntu 20.04 i instal·larà Python3, segons les necessitats de l'usuari.

2. Construir la imatge

Una imatge és un fitxer que encapsula tot l'entorn necessari (sistema operatiu, aplicacions i dependències) per executar una aplicació de manera consistent i portable. Per construir la imatge, obre la terminal i executa:

apptainer build my_image.sif apptainer.def

Aquesta comanda crea un fitxer my_image.sif que conté la imatge del teu contenidor.

Convertir des de docker

Per tal de poder descarregar directament una imatge de Docker, fem servir aquest codi, que generarà un fitxer .sif que ja podrem executar.

apptainer pull docker://contenidor-d'interès

3. Executar la imatge

Un cop creada la imatge, pots executar-la creant un altre fitxer sbatch, i per defecte ja podràs usar Apptainer.

#!/bin/bash
#SBATCH --job-name=apptainer_test    # Nom del job
#SBATCH --output=output.log          # Fitxer on es guarda la sortida
#SBATCH --error=error.log            # Fitxer per errors
#SBATCH --time=00:10:00              # Temps màxim d'execució
#SBATCH --mem=1G                     # Memòria total requerida
#SBATCH --cpus-per-task=1            # Nombre de CPUs
#SBATCH --partition=normal1          # Partició a utilitzar

# Executar la comanda dins del contenidor Apptainer
apptainer run my_image.sif   # Run fa córrer tot el contenidor, si fessis servir exec, només executa la comanda que es vulgui.

Això obrirà una shell dins el contenidor o executarà l'aplicació definida al bloc %runscript del fitxer de recepta.

Recursos addicionals

Per a més tutorials i informació detallada sobre com treballar amb imatges en Apptainer, consulta la documentació oficial d'Apptainer.

Easybuild

Easybuild és una eina automatitzada dissenyada per compilar i instal·lar programari en entorns HPC. Facilita la gestió de les dependències i versions, fent que la instal·lació d'aplicacions complexes sigui molt més senzilla i menys propensa a errors.

Aquesta eina és especialment útil per a usuaris novells, ja que redueix la complexitat de configurar el software manualment. Pròximament, també introduirem un tutorial detallat per mostrar-te com utilitzar Easybuild en el teu entorn de treball.

Com obrir tiquets

Per tal d'obrir tiquets a l'URespon, ja sigui per a instal·lació de software, altes de usuaris, o problemes de connexió, seguiu el següent tutorial. Per a més informació, consulteu el document següent.

Tutorial per obrir incidències o sol·licituds per al clúster de càlcul

Com interpretar i millorar l'eficiència

Per garantir un bon funcionament del clúster per a tothom, és important que cada usuari optimitzi els recursos que sol·licita. En aquest tutorial t’expliquem com pots fer-ho de manera senzilla.

Com optimitzar els recursos, informe d'eficiència