Il laboratorio fornisce strumenti informatici per supporto alle attività di calcolo; mette a disposizione un vasto insieme di applicazioni professionali per il calcolo e servizi software e hardware per il calcolo parallelo, calcolo distribuito, analisi dei dati.
Il personale del laboratorio offre supporto sull'utilizzo del software, supporto per le attività di calcolo, e supporto nello sviluppo, ottimizzazione e parallelizzazione dei codici.
Gli utenti hanno a disposizione numerosi applicativi software: prodotti specifici e librerie per il calcolo numerico, calcolo parallelo, calcolo distribuito, analisi dei dati, principali compilatori, pacchetti di matematica simbolica e di computer algebra, come anche software per la visualizzazione e l'elaborazione di grafici ed immagini.
Tutti i servizi sono accessibili dalle postazioni dedicate e da remoto.
Le risorse di calcolo a disposizione degli utenti sono installate su un cluster denominato Gauss.
Il cluster è costituito da due nodi:
Nodo | Allestimento |
---|---|
gauss0 | 8 core (2 cpu Intel Xeon Quad-Core 2.4 Ghz), 32 GB RAM e GPU Nvidia GeForce RTX 2070 (anno 2018) |
gauss1 | 24 core (2 cpu Intel Xeon Gold 5118 2.3GHz, 16.5 MB L3 cache 8.00GT/s QPI,Turbo,HT,12C/24T) e 64 GB di RAM. |
La gestione e l'accesso degli utenti al cluster dedicato al calcolo intensivo, avvengono tramite il server gaussctl sul quale è installato SLURM, Simple Linux Utility for Resource Management.
Per accedere alle risorse del cluster è richiesta un'utenza di accesso ai server dipartimentali.
- Informazioni base per utilizzo cluster Gauss
Per mandare in esecuzione programmi sul cluster:
collegarsi al server gaussctl.mat.uniroma1.it
la cartella di lavoro dove si trovano i file da eseguire, ed i file in input, deve essere sotto la home dell’utente (/home/username)
mandare in esecuzione il programma utilizzando i comandi messi a disposizione da SLURM.
Per avere l'elenco completo dei comandi, consultare l'help in linea alla voce slurm (digitare man slurm).
Alcuni dei comandi disponibili sono:srun per inviare jobs sul cluster per il calcolo
sbatch per sottomettere un batch script sul cluster per il calcolo
squeue per visualizzare la coda dei jobs sul cluster per il calcolo
(ogni utente può visualizzare solo i propri job)
scancel per interrompere un jobs sul cluster per il calcolo
sinfo per visualizzare informazioni relative al cluster per il calcolo- Esempi
Per inviare un programma sulle code di esecuzione del cluster
- scrivere uno shell script, ad esempio run_mio_prog.sh, contenente le seguenti righe:
#!/bin/sh
#SBATCH --mail-type=ALL --mail-user=indirizzo_email
#SBATCH -c numTot
srun -c num -i in_mioprog -o out_mioprog mio_prog
dove
numTot è il numero di processori richiesti per l'esecuzione del job all'interno del batch
num è il numero di processori richiesti per l'esecuzione del singolo job srun
mio_prog è il file da eseguire
in_mioprog è il file contenente i dati in input
out_mioprog è il file di output
indirizzo_email è l'indirizzo e-mail al quale deve essere inviata la notifica.
- lanciare l'esecuzione, inviando il comando
sbatch run_mio_prog.sh
Per inviare programma MATLAB sulle code di esecuzione del cluster
sviluppare e compilare il codice su una macchina terza, ad esempio marte.mat.uniroma1.it.
Compilare il codice usando il compilatore matlab:
mcc -m -R '-nojvm,-nodisplay' -v CODICE.mcopiare su gaussctl i seguenti file generati dal compilatore:
CODICE
run_CODICE.shscrivere uno shell script, ad esempio esegui_prog.sh, contenente le seguenti righe:
#!/bin/sh
#SBATCH --mail-type=ALL --mail-user=indirizzo_email
#SBATCH -c num
srun -c num -o out_mioprog run_CODICE.sh /usr/local/MATLAB/MATLAB_Runtime/vxx/
dove
num è il numero di processori richiesti per l'esecuzione del job
out_mioprog è il file di output
indirizzo_email è l'indirizzo e-mail al quale deve essere inviata la notifica
vxx indica la versione da utilizzare di MATLAB runtime environment (disponibile v912)lanciare l'esecuzione, inviando il comando
sbatch esegui_prog.sh
Come inviare un programma R sulle code di esecuzione del cluster
Per eseguire il programma HelloWorld.R, contente le seguenti righe
# R program to print Hello World aString = "Hello World!" print ( aString)- scrivere uno shell script, ad esempio esegui_prog.sh, contenente le seguenti righe:
#!/bin/sh
#SBATCH -c 1
srun -c 1 -o out_mioprog Rscript ./HelloWorld.R
dove
out_mioprog è il file di output
- lanciare l'esecuzione, inviando il comando
sbatch esegui_prog.sh
Utilizzo delle librerie NVIDIA GPU cuda
per utilizzare le librerie NVIDIA GPU cuda (sia in matlab che in altri linguaggi), inviare il codice sulla coda mat-GPU di gauss0 (che dispone di una GPU), utilizzando l'opzione -p:
sbatch -p mat-GPU ....
srun -p mat-GPU ...Per avere informazioni sullo stato delle CPU
sinfo -o %C
Verrà visualizzato il numero di CPUs Allocated/Idle/Other/Total.
Per maggiori informazioni consultare l'help in linea con il comando "man sinfo".
- scrivere uno shell script, ad esempio run_mio_prog.sh, contenente le seguenti righe:
Per ulteriori informazioni si consiglia di consultare la documentazione disponibile sul sito Slurm.