Table of Contents
Introducció a l'ús del cluster
(editat per últim cop per Xavier Roijals. 01 de novembre de 2025).
Nova direcció accés per ssh al cluster.
la direcció per accedir al cluster ha canviat: ara és cluster.ceab.csic.es. Per tant, per connectar-se caldrà fer:
ssh nom_usuari@cluster.ceab.csic.es
ja sigui amb les vostres terminals de sistemes MacOS o Linux, o bé amb mobaXterm des de sistemes Windows.
Diferents cues ("particions") amb noms diferents
el número de nodes de càlcul passa de 13 a 17. El nom dels nodes ha canviat (node1 a 17 enlloc de node100 a 112). Estaran organitzats en diferents cues (en terminologia Slurm “particions”) d'acord a les seves velocitats de processador.
a) partició “ceab” (nodes 6 a 16). És la cua per defecte, si no especifiqueu cua (partició) quan envieu un treball, us l'enviarà aquí.
b) partició “amd” (ex ceab_node110): node17, antic node110.
La resta de cues (particions) us anirem informant a mesura que les anem aixecant.
Nou PATH home usuaris.
Les dades dels usuaris ja no són a /home/usuaris/nom_usuari, sinó a /home/nom_usuari. Desapareix el subdirectori “usuaris”.
Nou sistema de carregar programes (EasyBuild, "module load")
A l'hora de cridar els programes als scripts ja no s'ha de fer la mecànica manual artesana d'abans (“export PATH etc”). Ara la manera de cridar els programes es farà via EasyBuild, amb la comanda module load
$ module load nom_programa
Si no sabeu com cridar el programa en qüestió podeu fer:
$ module spider nom_programa
i us indicarà com carregar-lo.
Exemple:
[xavier.roijals@cluster ~]$ module spider Python ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Python: Python/3.12.3-GCCcore-13.3.0 (...) [xavier.roijals@cluster ~]$ module load Python/3.12.3-GCCcore-13.3.0 [xavier.roijals@cluster ~]$ python --version Python 3.12.3
Nou PATH directori temporal (/lscratch enlloc de /tmp)
Abans per copiar les dades en local al node on corre el job per anar més ràpid ho copiàvem al directori /tmp. Ara el directori on s'hauran de copiar les dades en local als nodes és el directori /lscratch . De fet si feu un “df -h” a qualsevol node veureu que s'ha incrementat la mida d'aquesta partició a aprox +450G:
/dev/sda1 466G 3.3G 463G 1% /lscratch
S'ha ampliat la capacitat de la partició local /lscratch del node17 (ex-node110) a aproximadament +800GB.
S'ha ampliat també la capacitat de la partició local /lscratch del node 16 (ex-node112) a aprox 2TB.
Noves comandes bàsiques de Slurm (programari gestor de cues): squeue, sbatch, srun.
Heu de tenir en compte que el programari per llençar els jobs ja no és SGE, sinó Slurm, per tant, les comandes seran diferents. Vaig posant una traducció inicial de les comandes més bàsiques habituals:
. Consultar estat dels jobs i on estan corrent (enlloc de l'anterior qstat -u “*”): squeue
[xavier.roijals@cluster ~]$ squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
36 all marginal j.badia R 22:00:55 1 node6
35 amd marginal j.badia R 22:00:55 1 node17
. Enviar jobs a una cua determinada amb X processadors i Y RAM (aquí es calcul·la el total de RAM que es demana pel total del job, no per core com abans)(enlloc de per exemple “qsub -q ceab -pe make 20 -l h_vmem=5G -m bea -M usuario@correo nombre_script.sh”): sbatch
sbatch -p ceab --ntasks 20 --mem=100G --mail-type=BEGIN,END,FAIL --mail-user=usuario@correo nombre_script.sh
sent per tant -p el nom de la cua o partició, –ntasks el número de cores, –mem=100G la RAM (en total) que es demana (en total)
. Fer una sessió interactiva a un node (antic qlogin): srun –pty bash
srun -p ceab --ntasks=10 --mem=20G --pty bash
Això ens obriria una sessió interactiva a la cua “ceab” amb 1 node, 10 cores i 20G de RAM en total.
Teniu un diccionari de comandes per comparar la sintaxis SGE anterior (qsub, qlogin, etc) amb la nova sintaxi Slurm (sbatch, srun, squeue, etc) aquí: https://slurm.schedmd.com/rosetta.pdf
"Obligatorietat" paràmetre RAM --mem=XG
És molt important afegir sempre tant a sbatch com a srun el paràmetre –mem=XG de RAM, on se li especifica la RAM que volem que faci servir el job en total, no per core. Perquè, si no es fa, el gestor del sistema de cues Slurm assigna tota la RAM disponible del node al job en qüestió. Si no es fa i enviem un job sense especificar-li aquest paràmetre de RAM, el node on estigui corrent aquest job (ni que sigui amb un únic core corrent), ja no acceptarà cap treball més i figurarà com completament “allocated” fins que no finalitzi el job.
Com instal·lar-se un mateix llibreries de R, com crear-se virtenvs de python i instal·lar-se llibreries de python via pip install.
Canvi de la política d'instal·lació de programes i llibreries. Donada la situació actual del servei del cluster del CEAB, s'ha decidit canviar la política d'instal·lació de programes: la idea és que, a partir d'ara, els environments de conda, els virtualenvs de python amb els seus corresponents pip install, i les llibreries de R que no estiguin ja instal·lades, se les instal·larà cada usuari a la seva /home.
Evidentment, si algun usuari no sap com fer-ho se li ajudarà i se li indicarà el com, i si es necessiten dependències externes a les llibreries o bé la instal·lació de programes que no siguin instal·lables mitjançant aquests tres mètodes, l'instal·larem nosaltres.
. Per carregar R (i totes les llibreries que ja tenim instal·lades al sistema):
[xavier.roijals@cluster ~]$ module load R-bundle-CRAN # té autocompletar, fent module load R-[tab] us ho autocompletaria
Executem R i llistem les llibreries ja instal·lades:
[xavier.roijals@cluster ~]$ R R version 4.4.2 (2024-10-31) -- "Pile of Leaves" (...) > rownames(installed.packages()) [1] "abc" "abc.data" [3] "abe" "abind" [5] "acepack" "adabag" [7] "ade4" "ADGofTest" [9] "admisc" "aggregation" [11] "AICcmodavg" "akima" (...) [1251] "utf8" "utils" [1253] "vctrs" "waldo" [1255] "whisker" "withr" [1257] "xfun" "xml2" [1259] "xopen" "xtable" [1261] "yaml" "zip"
Si volem veure d'aquestes llibreries de R quines les hem instal·lat al nostre espai d'usuari, podem fer des de R:
> user_lib <- Sys.getenv("R_LIBS_USER")
installed_user <- installed.packages(lib.loc = user_lib)
rownames(installed_user)
[1] "janitor" "snakecase"
>
. Per carregar Python:
[xavier.roijals@cluster ~]$ module spider Python
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Python:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Description:
Python is a programming language that lets you work more quickly and integrate your systems more effectively.
Versions:
Python/3.11.5-GCCcore-13.2.0
Python/3.12.3-GCCcore-13.3.0
(...)
Per tant, carrego python amb module load:
[xavier.roijals@cluster ~]$ module load Python/3.12 [xavier.roijals@cluster ~]$ python --version Python 3.12.3
Amb això ja puc crear-me virtenvs.
. Com crear i activar virtenvs. Creem un virtenv de nom test i l'activem amb source nom_virtenv/bin/activate:
[xavier.roijals@cluster virtenvs]$ python -m venv test [xavier.roijals@cluster virtenvs]$ source test/bin/activate (test) [xavier.roijals@cluster virtenvs]$
Dintre d'aquest virtenv ja podem instal·lar-nos els paquets que necessitem:
(test) [xavier.roijals@cluster virtenvs]$ pip install numpy Collecting numpy Using cached numpy-2.3.1-cp312-cp312-manylinux_2_28_x86_64.whl.metadata (62 kB) Using cached numpy-2.3.1-cp312-cp312-manylinux_2_28_x86_64.whl (16.6 MB) Installing collected packages: numpy Successfully installed numpy-2.3.1
Comprovem que funciona:
(test) [xavier.roijals@cluster virtenvs]$ python Python 3.12.3 (main, Jul 11 2025, 08:40:53) [GCC 13.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import numpy >>>
No fer còrrer jobs a màquina de login.
Quan entreu al cluster ja no entrareu a l'antiga màquina virtual “cluster-ceab” (ja no tenim màquines virtuals), sinó que entrareu en un node físic de login. És important que no feu còrrer jobs en allà: està reservat per a compilació de programes, gestió del sistema i instal·lació de llibreries.
Els canvis s'aniran documentant progressivament a tic.ceab.csic.es/cblabdoc.
Tot això s'anirà documentant progressivament a https://tic.ceab.csic.es/cblabdoc (que s'ha de refer completament).
Els programes antics que estaven allotjats a /home/soft no es poden reaprofitar.
El software preexistent (antic /home/soft i etc) no es pot reaprofitar. S'ha hagut o bé s'haurà de reinstal·lar bé pels usuaris al seu propi espai d'usuari (llibreries de R, virtenvs, conda) o bé via EasyBuild al directori /software/eb/software (“module load etc”).
