Laboratorio e Centro Calcolo: cluster per il calcolo

Sul server plutone è installato SLURM, Simple Linux Utility for Resource Management.
Tramite SLURM gli utenti possono accedere ad un cluster dedicato al calcolo intensivo. Il cluster è costituito dal nodo gauss.mat.uniroma1.it, con 8 processori (2 cpu Intel Xeon Quad-Core 2.4 Ghz) e 32 GB RAM.

Chi può utilizzare gauss
Gli utenti dei server dipartimentali che desiderano utilizzare il cluster per il calcolo devono inviare un e-mail a root@mat.uniroma1.it chiedendo di essere inseriti nel gruppo calcolo. Per gli studenti e per i collaboratori esterni, la richiesta di inserimento nel gruppo calcolo deve essere inviata da un docente del dipartimento.

Prime informazioni per utilizzare gauss
  • Il cluster per il calcolo è accessibile solo tramite plutone;

  • È possibile mandare in esecuzione su gauss programmi scritti in c, c++, fortran e programmi generati compilando M-files Matlab. Sono disponibili le seguenti librerie:
    BLAS, Electric Fence, Givaro, LinBox, OpenMPI, Valgrind
    Su richiesta degli utenti interessati potranno essere installati altri programmi e librerie;

  • i programmi devono essere sviluppati (scritti, compilati e testati) su plutone;

  • gli eseguibili ed i file con i dati in input devono essere copiati sulla directory /calcolo/home/username, dove username è il nome dell'utente.

  • per eseguire programmi su gauss è necessario:
    • collegarsi a plutone;
    • copiare gli eseguibili o gli M-files MATLAB ed i file con i dati in input sulla directory /calcolo/home/username, dove username è il nome dell'utente (attenzione: la directory /calcolo/home NON viene salvata nei backup);
    • posizionarsi sulla directory /calcolo/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 su plutone 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

Qualche esempio
  • Per lanciare un programma reindirizzando input ed output:

    srun   -c num   -i mio_prog.in   -o mio_prog.out   mio_prog
    dove num è il numero di processori richiesti per l'esecuzione del job (1 <= num <= 8)
    mio_prog è il nome del file da eseguire
    mio_prog.in è il nome del file contenente i dati in input
    mio_prog.out è il nome del file contenente i dati in output.
    esempio: srun -c4   -i risolvi.in   -o risolvi.out   risolvi
    esegue il programma "risolvi" su 4 processori, leggendo i dati in input dal file "risolvi.in" e scrivendo in output sul file "risolvi.out"

  • Per lanciare un programma MATLAB:
    • dopo aver copiato l'M-file su /calcolo/home/username, compilarlo inviando il comando:

      mcc-matlab   -m   mio_prog.m

      Per avere maggiori informazioni sull'utilizzo del compilatore mcc-matlab e sulle opzioni utilizzabili, consultare il manuale in linea su plutone alla voce mcc-matlab (digitare man mcc-matlab).

    • eseguire il programma inviando il comando

      srun   -c num   mio_prog
      dove num è il numero di processori richiesti per l'esecuzione del job (1 <= num <= 8)
      mio_prog.m è il nome dell'M-file
      mio_prog è il nome del programma da eseguire

  • Per lanciare un programma chiedendo informazioni sui tempi di CPU:

    /usr/bin/time -p   srun   -c num   -i mio_prog.in   -o mio_prog.out   mio_prog
    dove num è il numero di processori richiesti per l'esecuzione del job (1 <= num <= 8)
    mio_prog è il nome del file da eseguire
    mio_prog.in è il nome del file contenente i dati in input
    mio_prog.out è il nome del file contenente i dati in output.
    Per avere maggiori informazioni sul comando /usr/bin/time e sulle opzioni utilizzabili, consultare il manuale in linea ("man time").

  • Per lanciare un programma in batch:
    • scrivere uno shell script di nome ad esempio run_mio_prog contenente le seguenti righe:

            #!/bin/sh
            srun   -c num   -i mio_prog.in   -o mio_prog.out   mio_prog
      dove num è il numero di processori richiesti per l'esecuzione del job (1 <= num <= 8)
      mio_prog è il nome del file da eseguire
      mio_prog.in è il nome del file contenente i dati in input
      mio_prog.out è il nome del file contenente i dati in output.
    • inviare il comando

      sbatch run_mio_prog

      Se si desidera ricevere via e-mail la notifica di inizio/fine/fallimento del programma, inviare il comando

      sbatch   --mail-type=ALL   --mail-user=indirizzo_email   run_mio_prog
      dove indirizzo_email è l'indirizzo e-mail al quale deve essere inviata la notifica
      run_mio_prog è il nome dello script da eseguire in batch.

  • Per lanciare in batch un programma che utilizza le librerie OpenMPI:
    • scrivere uno shell script di nome ad esempio run_mio_prog_mpi contenente le seguenti righe:

            #!/bin/sh
            mpirun   -np num   -i mio_prog_mpi.in   -o mio_prog_mpi.out   mio_prog_mpi
      dove num è il numero di processori richiesti per l'esecuzione del job (1 <= num <= 8)
      mio_prog_mpi è il nome del file da eseguire
      mio_prog_mpi.in è il nome del file contenente i dati in input
      mio_prog_mpi.out è il nome del file contenente i dati in output.
    • inviare il comando

      sbatch run_mio_prog_mpi

      oppure, per ricevere notifica via e-mail

      sbatch   --mail-type=ALL   --mail-user=indirizzo_email   run_mio_prog_mpi

  • 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".

Documentazione
Per ulteriori informazioni si consiglia di consultare l'help in linea e la documentazione disponibile sul sito https://computing.llnl.gov/linux/slurm/documentation.html

Altre risorse di calcolo per gli utenti del Dipartimento di Matematica
Convenzione con CASPUR