Top-level heading

Laboratorio Turing

Laboratorio Turing

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:

NodoAllestimento
gauss08 core (2 cpu Intel Xeon Quad-Core 2.4 Ghz), 32 GB RAM e GPU Nvidia GeForce RTX 2070 (anno 2018)
gauss124 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

  1. 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.
     
  2. lanciare l'esecuzione, inviando il comando
      sbatch   run_mio_prog.sh  

Per inviare  programma MATLAB sulle code di esecuzione del cluster

  1. 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.m

  2. copiare su gaussctl i seguenti file generati dal compilatore:
       CODICE
       run_CODICE.sh

  3. scrivere 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)  

  4. 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)

  1. 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
     
  2. 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".
 

Per ulteriori informazioni si consiglia di consultare la documentazione disponibile sul sito Slurm.