Difference: TntCluster (1 vs. 9)

Revision 92026-03-14 - AndreaPuglisi

Line: 1 to 1
 
META TOPICPARENT name="AndreaPuglisi"

Brevi istruzioni cluster tnt (nato nel 2020 con i fondi PRIN CO-NEST)

Line: 67 to 66
  ACCEDERE AI FILE SUI NODI LOCALI: durante l'esecuzione, ogni utente puo' vedere i file che vengono generati durante la simulazione controllando (tramite comando squeue) quale nodo $i sta runnando il processo che vi interessa e poi andando su /mnt/ssd$i/nomeutente
Changed:
<
<
RIPRISTINO DEI NODI DOPO CAMBIO STRUTTURA:
>
>
SUGGERIMENTI PER SEMPLIFICARE L'ACCESSO DA REMOTO (idee da Andrea Baldassarri)

1) da casa si può usare questa sintassi per fare in un colpo solo doppio accesso (all'ip intermedio abilitato per l'accesso - che chiamo "ponte" - e poi subito al nodo di login del cluster)

ssh -XJ cognome@ponte cognome@150.146.131.189

con questo comando vi verrà chiesta prima la password per il ponte e poi la password per il cluster

2) si può evitare di digitare entrambe le password usando il sistema a chiave crittografica, nel seguente modo

sul computer di casa eseguire il comando

ssh-keygen

che genera una chiave pubblica (un file .pub in genere nella cartella .ssh, ad esempio sul mac mi ha creato .ssh/id_ed25519.pub), poi copiare con scp questo file nella home del ponte, poi entrare nel ponte e usare di nuovo scp per copiare il file .pub nel nodo di login del cluster, infine entrare nel cluster e dare il comando

cat id_ed25519.pub >> .ssh/authorized_keys

fatto questo il passaggio ssh casa->ponte->cluster spiegato al punto 1 si effettua senza password

3) Se al comando ssh aggiungi anche alla fine "-t byobu", troverai anche il terminale avanzato (puoi aprirti vari tab, che ritrovi tra un collegamento e l’altro), consigliatissimo, trovate qui un tour musicale che vi spiega le cose molto utili che si possono fare con questo terminale https://www.byobu.org/

4) Utile per spostare file avanti e indietro: scp funziona come ssh e quindi si può usare l'opzione -J per saltare il ponte; per rsync invece bisogna usare

rsync -avz -e “ssh -J utente@ip-intermedio” directory cognome@cluster:destinazione/


(SOLO PER GLI AMMINISTRATORI): RIPRISTINO DEI NODI DOPO CAMBIO STRUTTURA:

  1) aggiornare /etc/slurm/slurm.conf

Revision 82026-03-10 - AndreaPuglisi

Line: 1 to 1
 
META TOPICPARENT name="AndreaPuglisi"

Brevi istruzioni cluster tnt (nato nel 2020 con i fondi PRIN CO-NEST)

Line: 22 to 22
  - anche quei 3 dischi da 1.5Tb si riempiranno presto, quindi vi chiedo di farci aattenzione e periodicamente traslocare i dati su nostri dischi locali fuori dal cluster (anche io faro' dei controlli periodici e se i dischi si stanno riempiendo vi avvertiro')
Changed:
<
<
- il vantaggio di questa soluzione e' che non e' piu' necessario spostare i dati alla fine di ogni simulazione; lo svantaggio e' che i dati creati da una simulazione saranno in uno dei /mnt/ssd$i/nomeutente e non potete saperlo dall'inizio (perche' e' il sistema di code a scegliere il nodo su cui girare); una soluzione per quest'ultimo problema e' spostare comunque i dati alla fine del job (mettendo le necessarie istruzioni alla fine dello script) in una cartella decisa da voi in uno dei 3 dischi, ma in questo caso bisogna coordinarsi tra noi per essere sicuri di non mettere tutti i dati su un disco solo
>
>
- il vantaggio di questa soluzione e' che non e' piu' necessario spostare i dati alla fine di ogni simulazione; lo svantaggio e' che i dati creati da una simulazione saranno in uno dei /mnt/ssd$i/nomeutente e non potete saperlo dall'inizio (perche' e' il sistema di code a scegliere il nodo su cui girare); la soluzione che abbiamo trovato e' il "mergerfs" che e' un filesystem che fonde i 3 dischi in un path unico: quindi dal nodo di login, se guardate dentro /mnt/nodedata/nomeutente trovate una fusione delle directory /mnt/ssd$i/nomeutente e quindi tutti i dati creati da tutte le vostre simulazioni

- nb: questo mergerfs non puo' fare l'impossibile, cioe' non puo' permettervi di vedere file che hanno stesso identico nome e posizione su due ssd$i diversi, deve fare una scelta e mostrarvi solo uno dei 3 possibili: quel che ho capito e' che - con la configurazione che ho scelto - al momento lui sceglie i file che si trovano nel filesystem con piu' spazio, queste vale in lettura e in scrittura; per evitare di incasinarvi vi consiglio di evitare - al momento di lanciare job - di creare cartelle con lo stesso nome nella stessa posizione

 

ESECUZIONE DI UN JOB

Line: 40 to 43
 mkdir nuovadirectory IMPORTANTE (ogni simulazione dovrebbe girare in una dir diversa per non rischiare che si sovrapponga ad altre) cd nuovadirectory IMPORTANTE (se create una dir ci dovete entrare) cp /mnt/data/puglisi/eseguibili/bg . OBBLIGATORIA (il vostro programma/simulazione deve essere in una subdir di /mnt/data/puglisi e va copiato a dove siete ora)
Changed:
<
<
srun ./bg OBBLIGATORIA (esegue la simulazione)

>
>
srun ./bg OBBLIGATORIA (esegue la simulazione)
 
Changed:
<
<
se si vuole mettere i dati in una directory decisa da voi dovete aggiungere le seguenti righe personalizzate con molta attenzione

mkdir /mnt/ssd1/puglisi/nuovirisultati questo se si sceglie di mettere i dati dentro SSD1
mv * /mnt/ssd1/puglisi/nuovirisultati/
cd .. IMPORTANTE (uscite dalla dir se ci eravate entrati)
rm -fr nuovadirectory IMPORTANTE (cancellate la dir che non serve più)
mv "slurm-"$SLURM_JOB_ID".out" /mnt/ssd1/puglisi/nuovirisultati/ UTILE (se volete ritrovare anche il file con lo stdout lo copiate nel posto dove tenete i risultati)
mv "slurm-"$SLURM_JOB_ID".err" /mnt/ssd1/puglisi/rnuoviisultati/ UTILE (se volete ritrovare anche il file con lo stderr lo copiate nel posto dove tenete i risultati)

>
>
come vedete non sono piu' necessari i comandi finali per spostare indietro i dati: come gia' detto sopra, i dati conviene lasciarli sui dischi dei nodi su cui hanno girato e periodicamente pulire tutto spostando su vostri pc locali
  2) eseguire lo script con il comando
Line: 56 to 55
  squeue
Added:
>
>

 GUIDA VELOCE DEI COMANDI DI SLURM: https://slurm.schedmd.com/pdfs/summary.pdf

ALTRA DOCUMENTAZIONE PER IL SISTEMA DI CODE: il sistema di code si chiama "slurm" ed e' molto ben documentato (ed e' pieno di opzioni), si veda https://slurm.schedmd.com/documentation.html

Revision 72026-03-06 - AndreaPuglisi

Line: 1 to 1
 
META TOPICPARENT name="AndreaPuglisi"

Brevi istruzioni cluster tnt (nato nel 2020 con i fondi PRIN CO-NEST)

Changed:
<
<

ACCESSO

ssh -X utente@pgls_login.artov.rm.cnr.it

>
>
Revisione di Marzo 2026 dopo riformattazione delle macchine (in seguito ad attacco hacker di fine 2025)
 
Changed:
<
<

HOME DIRECTORY

la home di ogni utente si trova in un grande disco esterno da 5Tb (totali); la home e' il luogo dove tenere i vostri dati (backup) e tutti gli script ed eseguibili che si vogliono conservare; la home NON e' il posto dove le simulazioni scrivono durante l'esecuzione

>
>

ACCESSO

 
Changed:
<
<

ESECUZIONE DI UN JOB

>
>
ssh -X utente@150.146.131.189
 
Changed:
<
<
i programmi vanno lanciati usando il sistema di code che si occupa di allocare ogni programma sul nodo piu' libero; si prega di non lanciare programmi direttamente da terminale perche' questi verrebbero eseguiti dal nodo di login che ha pochissime risorse; il modo per eseguire un job tramite sistema di code e' il seguente
>
>
a quel punto ci si trova nel nodo di login collegato a 3 server ognuno dei quali ha 128 cpu, per lanciare simulazioni si deve usare il programma "slurm" secondo le istruzioni che seguono
 
Changed:
<
<
1) scrivere uno script di esecuzione, si consiglia di farlo in bash, chiamandolo (ad esempio) submit.sh; qui c'e' un esempio funzionante che vi suggeriamo di seguire (adattandolo un poco con le istruzioni che seguono)
>
>

HOME E STORAGE DATI

 
Changed:
<
<

>
>
attenzione: sono cambiate diverse cose, leggete bene
 
Changed:
<
<
#!/bin/bash
#SBATCH --chdir=/mnt/ssd/puglisi/
#SBATCH --job-name=test
#SBATCH --error=slurm-%A.err
#SBATCH --output=slurm-%A.out
#SBATCH --ntasks=1

mkdir nuovadirectory
cd nuovadirectory

cp /home/puglisi/eseguibili/disks .
srun ./disks
mv * /home/puglisi/risultati
cd ..

rm -fr nuovadirectory
mv "slurm-"$SLURM_JOB_ID".out" /home/puglisi/risultati
mv "slurm-"$SLURM_JOB_ID".err" /home/puglisi/risultati
>
>
- la home del nodo di login non e' piu' il luogo dove tenere i dati; la sala macchine ci ha concesso uno storage di soli 500Gb che trovate seguendo il path /mnt/data/nomeutente/
 
Changed:
<
<
>
>
- MA (importante) questo nuovo storage e' molto piu' piccolo che in passato, e soprattutto e' piu' piccolo del disco ssd da 1.5Tb che c'e' su ognuno dei 3 nodi, che e' montato (sui nodi) come /home/nomeutente e si puo' vedere dal nodo di login seguendo il path /mnt/ssd1/nomeutente (ssd1 oppure ssd2 oppure ssd3 per i 3 nodi)
 
Changed:
<
<

>
>
- il mio consiglio quindi e' di mettere dentro /mnt/data/nomeutente tutto quel che serve ad eseguire le simulazioni (sorgenti, eseguibili etc.), per questo ho fatto in modo che questo path sia visibile da tutti i nodi, e di eseguire le simulazioni, scrivere i dati e - almeno temporaneamente - tenere i dati sempre sui dischi ssd montati come /home sui nodi;
 
Changed:
<
<
2) eseguire lo script con il comando
>
>
- anche quei 3 dischi da 1.5Tb si riempiranno presto, quindi vi chiedo di farci aattenzione e periodicamente traslocare i dati su nostri dischi locali fuori dal cluster (anche io faro' dei controlli periodici e se i dischi si stanno riempiendo vi avvertiro')
 
Changed:
<
<
sbatch submit.sh

3) controllare l'esecuzione del job con il comando

squeue

MODIFICARE LO SCRIPT

>
>
- il vantaggio di questa soluzione e' che non e' piu' necessario spostare i dati alla fine di ogni simulazione; lo svantaggio e' che i dati creati da una simulazione saranno in uno dei /mnt/ssd$i/nomeutente e non potete saperlo dall'inizio (perche' e' il sistema di code a scegliere il nodo su cui girare); una soluzione per quest'ultimo problema e' spostare comunque i dati alla fine del job (mettendo le necessarie istruzioni alla fine dello script) in una cartella decisa da voi in uno dei 3 dischi, ma in questo caso bisogna coordinarsi tra noi per essere sicuri di non mettere tutti i dati su un disco solo

ESECUZIONE DI UN JOB

 
Changed:
<
<
lo script di esempio si deve modificare in molte parti:
>
>
i programmi vanno lanciati usando il sistema di code che si occupa di allocare ogni programma sul nodo piu' libero; si prega di non lanciare programmi direttamente da terminale (a parte eccezioni per brevissime prove), perche' questi verrebbero eseguiti dal nodo di login che ha risorse limitate; il modo per eseguire un job tramite sistema di code e' il seguente
 
Added:
>
>
1) scrivere uno script di esecuzione, si consiglia di farlo in bash, chiamandolo (ad esempio) submit.sh; qui c'e' un esempio funzionante che vi suggeriamo di seguire (adattandolo un poco con le istruzioni che vedete nei commenti)
 
#!/bin/bash                         OBBLIGATORIA
Changed:
<
<
#SBATCH --chdir=/mnt/ssd/puglisi/ OBBLIGATORIA (ma cambiare "puglisi" nel vostro user)
>
>
#SBATCH --chdir=/home/puglisi/ OBBLIGATORIA (ma cambiare "puglisi" nel vostro user)
 #SBATCH --job-name=test OBBLIGATORIA (ma ovviamente conviene cambiare il nome "test") #SBATCH --error=slurm-%A.err UTILE (in questo file viene scritto stderr) #SBATCH --output=slurm-%A.out UTILE (in questo file viene scritto stdout)
Line: 64 to 39
  mkdir nuovadirectory IMPORTANTE (ogni simulazione dovrebbe girare in una dir diversa per non rischiare che si sovrapponga ad altre) cd nuovadirectory IMPORTANTE (se create una dir ci dovete entrare)
Changed:
<
<
cp /home/puglisi/eseguibili/disks . OBBLIGATORIA (il vostro programma/simulazione deve essere copiato da dove si trova a dove siete ora) srun ./disks OBBLIGATORIA (esegue la simulazione) mv * /home/puglisi/risultati IMPORTANTE (spostate i dati che ha generato il vostro programma in una cartella nella home, da modificare a piacere) cd .. IMPORTANTE (uscite dalla dir se ci eravate entrati) rm -fr nuovadirectory IMPORTANTE (cancellate la dir che non serve più) mv "slurm-"$SLURM_JOB_ID".out" /home/puglisi/risultati UTILE (se volete ritrovare anche il file con lo stdout lo copiate nel posto dove tenete i risultati) mv "slurm-"$SLURM_JOB_ID".err" /home/puglisi/risultati UTILE (se volete ritrovare anche il file con lo stderr lo copiate nel posto dove tenete i risultati)
>
>
cp /mnt/data/puglisi/eseguibili/bg . OBBLIGATORIA (il vostro programma/simulazione deve essere in una subdir di /mnt/data/puglisi e va copiato a dove siete ora) srun ./bg OBBLIGATORIA (esegue la simulazione)
 
Changed:
<
<
le righe mkdir e cd vanno modificate con un nome di directory specifico (temporaneo) per quella simulazione (per evitare che diverse simulazioni scrivano sulle stesse directory); l'eseguibile ovviamente lo scegliete voi; le righe finali ("mv ....") vanno personalizzate con molta attenzione: e' vostra cura spostare tutto quello che e' stato prodotto dalla simulazioni e che ritenete necessario conservare dalla dir dove ha girato alla home, in una directory apposita (vostra cura evitare di sovrascrivere altri vostri dati); è anche importante cancellare la directory temporanea dove ha girato la simulazione: facendo in questo modo tutto quel che non viene spostato (con i comandi "mv...") viene perso; ovviamente potete anche non mettere questi comandi alla fine, ma questo significa accumulare dati nei dischi dei nodi rischiando di finire lo spazio (nei nodi lo spazio e' molto minore); gli amministratori periodicamente libereranno spazio nei dischi dei nodi
>
>
se si vuole mettere i dati in una directory decisa da voi dovete aggiungere le seguenti righe personalizzate con molta attenzione

mkdir /mnt/ssd1/puglisi/nuovirisultati questo se si sceglie di mettere i dati dentro SSD1
mv * /mnt/ssd1/puglisi/nuovirisultati/
cd .. IMPORTANTE (uscite dalla dir se ci eravate entrati)
rm -fr nuovadirectory IMPORTANTE (cancellate la dir che non serve più)
mv "slurm-"$SLURM_JOB_ID".out" /mnt/ssd1/puglisi/nuovirisultati/ UTILE (se volete ritrovare anche il file con lo stdout lo copiate nel posto dove tenete i risultati)
mv "slurm-"$SLURM_JOB_ID".err" /mnt/ssd1/puglisi/rnuoviisultati/ UTILE (se volete ritrovare anche il file con lo stderr lo copiate nel posto dove tenete i risultati)

2) eseguire lo script con il comando

sbatch submit.sh

3) controllare l'esecuzione del job con il comando

squeue

  GUIDA VELOCE DEI COMANDI DI SLURM: https://slurm.schedmd.com/pdfs/summary.pdf
Line: 83 to 64
  esiste anche una guida "tedesca" con una sintesi della documentazione e molti dettagli utili (ma e' piu' per amministratori che altro): https://wiki.fysik.dtu.dk/niflheim/Slurm_configuration
Changed:
<
<
ACCEDERE AI FILE SUI NODI LOCALI: durante l'esecuzione, ogni utente puo' vedere i file che vengono generati durante la simulazione controllando (tramite comando squeue) quale nodo N sta runnando il processo che vi interessa e poi andando su /mnt/ssd_nodeN/nomeutente
>
>
ACCEDERE AI FILE SUI NODI LOCALI: durante l'esecuzione, ogni utente puo' vedere i file che vengono generati durante la simulazione controllando (tramite comando squeue) quale nodo $i sta runnando il processo che vi interessa e poi andando su /mnt/ssd$i/nomeutente
  RIPRISTINO DEI NODI DOPO CAMBIO STRUTTURA:

1) aggiornare /etc/slurm/slurm.conf

Changed:
<
<
2) copiarlo su tutti i nodi (tutti!) scp -p /etc/slurm/slurm.conf node1:/etc/slurm/slurm.conf …

3) riavviare i demoni sui nodi (tutti!) ssh node1 systemctl restart slurmd ….

>
>
2) copiarlo su tutti i nodi (tutti!) scp -p /etc/slurm/slurm.conf node1:/etc/slurm/slurm.conf …

3) riavviare i demoni sui nodi (tutti!) ssh node1 systemctl restart slurmd ….

  4) riavviare il demone di controllo in locale
Line: 105 to 80
  5) rimettere in up tutti i nodi (tutti!) (perchè di default il sistema torna allo status precedente che era down)
Changed:
<
<
scontrol update NodeName=node1 State=RESUME … ..
>
>
scontrol update NodeName =node1 State=RESUME … ..
  6) controllare che non ci sia niente down
Line: 119 to 90
 

Comments

Deleted:
<
<
<--/commentPlugin-->
 \ No newline at end of file
Added:
>
>

<--/commentPlugin-->

Revision 62022-11-15 - AndreaPuglisi

Line: 1 to 1
 
META TOPICPARENT name="AndreaPuglisi"

Brevi istruzioni cluster tnt (nato nel 2020 con i fondi PRIN CO-NEST)

Line: 92 to 92
 1) aggiornare /etc/slurm/slurm.conf

2) copiarlo su tutti i nodi (tutti!)

Changed:
<
<
ssh -p /etc/slurm/slurm.conf node1:/etc/slurm/slurm.conf
>
>
scp -p /etc/slurm/slurm.conf node1:/etc/slurm/slurm.conf
 

3) riavviare i demoni sui nodi (tutti!)

Revision 52022-06-13 - AndreaPuglisi

Line: 1 to 1
 
META TOPICPARENT name="AndreaPuglisi"

Brevi istruzioni cluster tnt (nato nel 2020 con i fondi PRIN CO-NEST)

Line: 75 to 75
  le righe mkdir e cd vanno modificate con un nome di directory specifico (temporaneo) per quella simulazione (per evitare che diverse simulazioni scrivano sulle stesse directory); l'eseguibile ovviamente lo scegliete voi; le righe finali ("mv ....") vanno personalizzate con molta attenzione: e' vostra cura spostare tutto quello che e' stato prodotto dalla simulazioni e che ritenete necessario conservare dalla dir dove ha girato alla home, in una directory apposita (vostra cura evitare di sovrascrivere altri vostri dati); è anche importante cancellare la directory temporanea dove ha girato la simulazione: facendo in questo modo tutto quel che non viene spostato (con i comandi "mv...") viene perso; ovviamente potete anche non mettere questi comandi alla fine, ma questo significa accumulare dati nei dischi dei nodi rischiando di finire lo spazio (nei nodi lo spazio e' molto minore); gli amministratori periodicamente libereranno spazio nei dischi dei nodi
Added:
>
>
GUIDA VELOCE DEI COMANDI DI SLURM: https://slurm.schedmd.com/pdfs/summary.pdf
 ALTRA DOCUMENTAZIONE PER IL SISTEMA DI CODE: il sistema di code si chiama "slurm" ed e' molto ben documentato (ed e' pieno di opzioni), si veda https://slurm.schedmd.com/documentation.html

si puo' trovare anche un tutorial veloce e ben fatto qui: https://support.ceci-hpc.be/doc/_contents/QuickStart/SubmittingJobs/SlurmTutorial.html

Line: 85 to 87
 ACCEDERE AI FILE SUI NODI LOCALI: durante l'esecuzione, ogni utente puo' vedere i file che vengono generati durante la simulazione controllando (tramite comando squeue) quale nodo N sta runnando il processo che vi interessa e poi andando su /mnt/ssd_nodeN/nomeutente
Added:
>
>
RIPRISTINO DEI NODI DOPO CAMBIO STRUTTURA:

1) aggiornare /etc/slurm/slurm.conf

2) copiarlo su tutti i nodi (tutti!) ssh -p /etc/slurm/slurm.conf node1:/etc/slurm/slurm.conf …

3) riavviare i demoni sui nodi (tutti!) ssh node1 systemctl restart slurmd ….

4) riavviare il demone di controllo in locale

systemctl restart slurmctld

5) rimettere in up tutti i nodi (tutti!) (perchè di default il sistema torna allo status precedente che era down)

scontrol update NodeName=node1 State=RESUME … ..

6) controllare che non ci sia niente down

sinfo —a

  -- Andrea Puglisi - 2020-12-01

Revision 42020-12-10 - AndreaPuglisi

Line: 1 to 1
 
META TOPICPARENT name="AndreaPuglisi"

Brevi istruzioni cluster tnt (nato nel 2020 con i fondi PRIN CO-NEST)

Line: 34 to 34
 mv * /home/puglisi/risultati cd ..
Changed:
<
<
rmdir nuovadirectory
>
>
rm -fr nuovadirectory
 mv "slurm-"$SLURM_JOB_ID".out" /home/puglisi/risultati mv "slurm-"$SLURM_JOB_ID".err" /home/puglisi/risultati
Line: 66 to 66
 cd nuovadirectory IMPORTANTE (se create una dir ci dovete entrare) cp /home/puglisi/eseguibili/disks . OBBLIGATORIA (il vostro programma/simulazione deve essere copiato da dove si trova a dove siete ora) srun ./disks OBBLIGATORIA (esegue la simulazione)
Changed:
<
<
mv * /home/puglisi/risultati IMPORTANTE (copiate i dati che ha generato il vostro programma in una cartella nella home, da modificare a piacere)
>
>
mv * /home/puglisi/risultati IMPORTANTE (spostate i dati che ha generato il vostro programma in una cartella nella home, da modificare a piacere)
 cd .. IMPORTANTE (uscite dalla dir se ci eravate entrati)
Changed:
<
<
rmdir nuovadirectory IMPORTANTE (cancellate la dir che non serve più)
>
>
rm -fr nuovadirectory IMPORTANTE (cancellate la dir che non serve più)
 mv "slurm-"$SLURM_JOB_ID".out" /home/puglisi/risultati UTILE (se volete ritrovare anche il file con lo stdout lo copiate nel posto dove tenete i risultati)
Changed:
<
<
mv "slurm-"$SLURM_JOB_ID".err" /home/puglisi/risultati UTILE (se volete ritrovare anche il file con lo stdout lo copiate nel posto dove tenete i risultati)
>
>
mv "slurm-"$SLURM_JOB_ID".err" /home/puglisi/risultati UTILE (se volete ritrovare anche il file con lo stderr lo copiate nel posto dove tenete i risultati)
 

le righe mkdir e cd vanno modificate con un nome di directory specifico (temporaneo) per quella simulazione (per evitare che diverse simulazioni scrivano sulle stesse directory); l'eseguibile ovviamente lo scegliete voi; le righe finali ("mv ....") vanno personalizzate con molta attenzione: e' vostra cura spostare tutto quello che e' stato prodotto dalla simulazioni e che ritenete necessario conservare dalla dir dove ha girato alla home, in una directory apposita (vostra cura evitare di sovrascrivere altri vostri dati); è anche importante cancellare la directory temporanea dove ha girato la simulazione: facendo in questo modo tutto quel che non viene spostato (con i comandi "mv...") viene perso; ovviamente potete anche non mettere questi comandi alla fine, ma questo significa accumulare dati nei dischi dei nodi rischiando di finire lo spazio (nei nodi lo spazio e' molto minore); gli amministratori periodicamente libereranno spazio nei dischi dei nodi

Revision 32020-12-07 - AndreaPuglisi

Line: 1 to 1
 
META TOPICPARENT name="AndreaPuglisi"

Brevi istruzioni cluster tnt (nato nel 2020 con i fondi PRIN CO-NEST)

Line: 14 to 14
  i programmi vanno lanciati usando il sistema di code che si occupa di allocare ogni programma sul nodo piu' libero; si prega di non lanciare programmi direttamente da terminale perche' questi verrebbero eseguiti dal nodo di login che ha pochissime risorse; il modo per eseguire un job tramite sistema di code e' il seguente
Changed:
<
<
1) scrivere uno script di esecuzione, si consiglia di farlo in bash, chiamandolo (ad esempio) submit.sh; qui c'e' un esempio
>
>
1) scrivere uno script di esecuzione, si consiglia di farlo in bash, chiamandolo (ad esempio) submit.sh; qui c'e' un esempio funzionante che vi suggeriamo di seguire (adattandolo un poco con le istruzioni che seguono)
 
Line: 22 to 22
 #!/bin/bash #SBATCH --chdir=/mnt/ssd/puglisi/ #SBATCH --job-name=test
Changed:
<
<
#SBATCH --output=res.txt
>
>
#SBATCH --error=slurm-%A.err #SBATCH --output=slurm-%A.out
 #SBATCH --ntasks=1

mkdir nuovadirectory

Line: 27 to 28
  mkdir nuovadirectory cd nuovadirectory
Added:
>
>
 cp /home/puglisi/eseguibili/disks . srun ./disks
Changed:
<
<
mv res.txt /home/puglisi/prova mv * /home/puglisi/prova
>
>
mv * /home/puglisi/risultati
 cd ..
Added:
>
>
 rmdir nuovadirectory
Added:
>
>
mv "slurm-"$SLURM_JOB_ID".out" /home/puglisi/risultati mv "slurm-"$SLURM_JOB_ID".err" /home/puglisi/risultati
 


Line: 52 to 57
 
#!/bin/bash            OBBLIGATORIA
#SBATCH --chdir=/mnt/ssd/puglisi/       OBBLIGATORIA (ma cambiare "puglisi" nel vostro user)
Changed:
<
<
#SBATCH --job-name=test OBBLIGATORIA (ma potete cambiare a piacimento il nome "test") #SBATCH --output=res.txt UTILE (e "res.txt" si può cambiare, in questo file viene scritto stdout)
>
>
#SBATCH --job-name=test OBBLIGATORIA (ma ovviamente conviene cambiare il nome "test") #SBATCH --error=slurm-%A.err UTILE (in questo file viene scritto stderr) #SBATCH --output=slurm-%A.out UTILE (in questo file viene scritto stdout)
 #SBATCH --ntasks=1 UTILE (in particolare se volete occupare più processori ad es. per cose in parallelo)

mkdir nuovadirectory IMPORTANTE (ogni simulazione dovrebbe girare in una dir diversa per non rischiare che si sovrapponga ad altre) cd nuovadirectory IMPORTANTE (se create una dir ci dovete entrare)

Changed:
<
<
cp /home/puglisi/eseguibili/disks . OBBLICATORIA (il vostro programma/simulazione deve essere copiato da dove si trova a dove siete ora)
>
>
cp /home/puglisi/eseguibili/disks . OBBLIGATORIA (il vostro programma/simulazione deve essere copiato da dove si trova a dove siete ora)
 srun ./disks OBBLIGATORIA (esegue la simulazione)
Changed:
<
<
mv * /home/puglisi/prova IMPORTANTE (copiate i dati che ha generato il vostro programma in una cartella nella home, da modificare a piacere) cd .. IMPORTANTE (uscite dalla dir)
>
>
mv * /home/puglisi/risultati IMPORTANTE (copiate i dati che ha generato il vostro programma in una cartella nella home, da modificare a piacere) cd .. IMPORTANTE (uscite dalla dir se ci eravate entrati)
 rmdir nuovadirectory IMPORTANTE (cancellate la dir che non serve più)
Added:
>
>
mv "slurm-"$SLURM_JOB_ID".out" /home/puglisi/risultati UTILE (se volete ritrovare anche il file con lo stdout lo copiate nel posto dove tenete i risultati) mv "slurm-"$SLURM_JOB_ID".err" /home/puglisi/risultati UTILE (se volete ritrovare anche il file con lo stdout lo copiate nel posto dove tenete i risultati)
 
Changed:
<
<
le righe mkdir e cd vanno modificate con un nome di directory specifico (temporaneo) per quella simulazione (per evitare che diverse simulazioni scrivano sulle stesse directory); l'eseguibile ovviamente lo segliete voi; le righe finali ("mv ....") vanno personalizzate con molta attenzione: e' vostra cura spostare tutto quello che e' stato prodotto dalla simulazioni e che ritenete necessario conservare dalla dir dove ha girato alla home, in una directory apposita (evitando di sovrascrivere altri dati); infine le ultime due righe servono per cancellare la directory temporanea dove ha girato la simulazione: facendo in questo modo tutto quel che non viene spostato (con i comandi "mv...") viene perso; ovviamente potete anche non mettere questi comandi alla fine, ma questo significa accumulare dati nei dischi dei nodi rischiando di finire lo spazio (nei nodi lo spazio e' molto minore); gli amministratori periodicamente libereranno spazio nei dischi dei nodi
>
>
le righe mkdir e cd vanno modificate con un nome di directory specifico (temporaneo) per quella simulazione (per evitare che diverse simulazioni scrivano sulle stesse directory); l'eseguibile ovviamente lo scegliete voi; le righe finali ("mv ....") vanno personalizzate con molta attenzione: e' vostra cura spostare tutto quello che e' stato prodotto dalla simulazioni e che ritenete necessario conservare dalla dir dove ha girato alla home, in una directory apposita (vostra cura evitare di sovrascrivere altri vostri dati); è anche importante cancellare la directory temporanea dove ha girato la simulazione: facendo in questo modo tutto quel che non viene spostato (con i comandi "mv...") viene perso; ovviamente potete anche non mettere questi comandi alla fine, ma questo significa accumulare dati nei dischi dei nodi rischiando di finire lo spazio (nei nodi lo spazio e' molto minore); gli amministratori periodicamente libereranno spazio nei dischi dei nodi
  ALTRA DOCUMENTAZIONE PER IL SISTEMA DI CODE: il sistema di code si chiama "slurm" ed e' molto ben documentato (ed e' pieno di opzioni), si veda https://slurm.schedmd.com/documentation.html

Revision 22020-12-01 - AndreaPuglisi

Line: 1 to 1
 
META TOPICPARENT name="AndreaPuglisi"

Brevi istruzioni cluster tnt (nato nel 2020 con i fondi PRIN CO-NEST)

Line: 18 to 18
 
Added:
>
>
 #!/bin/bash
Deleted:
<
<
 #SBATCH --chdir=/mnt/ssd/puglisi/
Deleted:
<
<
 #SBATCH --job-name=test
Deleted:
<
<
 #SBATCH --output=res.txt
Deleted:
<
<
 #SBATCH --ntasks=1

mkdir nuovadirectory

Line: 29 to 26
 #SBATCH --ntasks=1

mkdir nuovadirectory

Deleted:
<
<
 cd nuovadirectory
Changed:
<
<
cp /home/nomeutente/eseguibili/eseguibile .

srun ./eseguibile

mv res.txt /home/puglisi/dovevoglio

mv altririsultati.dat /home/puglisi/dovevoglio

>
>
cp /home/puglisi/eseguibili/disks . srun ./disks mv res.txt /home/puglisi/prova mv * /home/puglisi/prova
 cd ..
Deleted:
<
<
 rmdir nuovadirectory
Added:
>
>
 
Line: 54 to 45
  squeue
Changed:
<
<
MODIFICARE LO SCRIPT: lo script di esempio si deve modificare in molte parti, la prima riga e' obbligatoria ma va personalizzata (al posto di puglisi dovete mettere il vostro username); il jobname e' a piacere; l'output e' solo il nome del file in cui viene scritto lo stdout (cioe' tutto quello che nei vostri codici esce da una printf a video, non su file); la riga con ntasks e' opzionale; le righe mkdir e cd vanno modificate con un nome di directory specifico (temporaneo) per quella simulazione (per evitare che diverse simulazioni scrivano sulle stesse directory); l'eseguibile ovviamente lo segliete voi; le righe finali ("mv ....") vanno personalizzate con molta attenzione: e' vostra cura spostare tutto quello che e' stato prodotto dalla simulazioni nella home, in una directory apposita (evitando di sovrascrivere altri dati); infine le ultime due righe servono per cancellare la directory temporanea dove ha girato la simulazione; facendo in questo modo tutto quel che non viene spostato (con i comandi "mv...") viene perso; ovviamente potete anche non mettere questi comandi alla fine, ma questo significa accumulare dati nei dischi dei nodi rischiando di finire lo spazio (nei nodi lo spazio e' molto minore)
>
>

MODIFICARE LO SCRIPT

lo script di esempio si deve modificare in molte parti:

#!/bin/bash            OBBLIGATORIA
#SBATCH --chdir=/mnt/ssd/puglisi/       OBBLIGATORIA (ma cambiare "puglisi" nel vostro user)
#SBATCH --job-name=test                 OBBLIGATORIA (ma potete  cambiare a piacimento il nome "test")
#SBATCH --output=res.txt                UTILE (e "res.txt" si può cambiare, in questo file viene scritto stdout)
#SBATCH --ntasks=1                      UTILE (in particolare se volete occupare più processori ad es. per cose in parallelo)

mkdir nuovadirectory         IMPORTANTE (ogni simulazione dovrebbe girare in una dir diversa per non rischiare che si sovrapponga ad altre)
cd nuovadirectory                       IMPORTANTE (se create una dir ci dovete entrare)
cp /home/puglisi/eseguibili/disks .     OBBLICATORIA (il vostro programma/simulazione deve essere copiato da dove si trova a dove siete ora)
srun ./disks                            OBBLIGATORIA (esegue la simulazione)
mv * /home/puglisi/prova                IMPORTANTE (copiate i dati che ha generato il vostro programma in una cartella nella home, da modificare a piacere)
cd ..                                   IMPORTANTE (uscite dalla dir)
rmdir nuovadirectory                    IMPORTANTE (cancellate la dir che non serve più)

le righe mkdir e cd vanno modificate con un nome di directory specifico (temporaneo) per quella simulazione (per evitare che diverse simulazioni scrivano sulle stesse directory); l'eseguibile ovviamente lo segliete voi; le righe finali ("mv ....") vanno personalizzate con molta attenzione: e' vostra cura spostare tutto quello che e' stato prodotto dalla simulazioni e che ritenete necessario conservare dalla dir dove ha girato alla home, in una directory apposita (evitando di sovrascrivere altri dati); infine le ultime due righe servono per cancellare la directory temporanea dove ha girato la simulazione: facendo in questo modo tutto quel che non viene spostato (con i comandi "mv...") viene perso; ovviamente potete anche non mettere questi comandi alla fine, ma questo significa accumulare dati nei dischi dei nodi rischiando di finire lo spazio (nei nodi lo spazio e' molto minore); gli amministratori periodicamente libereranno spazio nei dischi dei nodi

  ALTRA DOCUMENTAZIONE PER IL SISTEMA DI CODE: il sistema di code si chiama "slurm" ed e' molto ben documentato (ed e' pieno di opzioni), si veda https://slurm.schedmd.com/documentation.html

Revision 12020-12-01 - AndreaPuglisi

Line: 1 to 1
Added:
>
>
META TOPICPARENT name="AndreaPuglisi"

Brevi istruzioni cluster tnt (nato nel 2020 con i fondi PRIN CO-NEST)

ACCESSO

ssh -X utente@pgls_login.artov.rm.cnr.it

HOME DIRECTORY

la home di ogni utente si trova in un grande disco esterno da 5Tb (totali); la home e' il luogo dove tenere i vostri dati (backup) e tutti gli script ed eseguibili che si vogliono conservare; la home NON e' il posto dove le simulazioni scrivono durante l'esecuzione

ESECUZIONE DI UN JOB

i programmi vanno lanciati usando il sistema di code che si occupa di allocare ogni programma sul nodo piu' libero; si prega di non lanciare programmi direttamente da terminale perche' questi verrebbero eseguiti dal nodo di login che ha pochissime risorse; il modo per eseguire un job tramite sistema di code e' il seguente

1) scrivere uno script di esecuzione, si consiglia di farlo in bash, chiamandolo (ad esempio) submit.sh; qui c'e' un esempio


#!/bin/bash

#SBATCH --chdir=/mnt/ssd/puglisi/

#SBATCH --job-name=test

#SBATCH --output=res.txt

#SBATCH --ntasks=1

mkdir nuovadirectory

cd nuovadirectory

cp /home/nomeutente/eseguibili/eseguibile .

srun ./eseguibile

mv res.txt /home/puglisi/dovevoglio

mv altririsultati.dat /home/puglisi/dovevoglio

cd ..

rmdir nuovadirectory


2) eseguire lo script con il comando

sbatch submit.sh

3) controllare l'esecuzione del job con il comando

squeue

MODIFICARE LO SCRIPT: lo script di esempio si deve modificare in molte parti, la prima riga e' obbligatoria ma va personalizzata (al posto di puglisi dovete mettere il vostro username); il jobname e' a piacere; l'output e' solo il nome del file in cui viene scritto lo stdout (cioe' tutto quello che nei vostri codici esce da una printf a video, non su file); la riga con ntasks e' opzionale; le righe mkdir e cd vanno modificate con un nome di directory specifico (temporaneo) per quella simulazione (per evitare che diverse simulazioni scrivano sulle stesse directory); l'eseguibile ovviamente lo segliete voi; le righe finali ("mv ....") vanno personalizzate con molta attenzione: e' vostra cura spostare tutto quello che e' stato prodotto dalla simulazioni nella home, in una directory apposita (evitando di sovrascrivere altri dati); infine le ultime due righe servono per cancellare la directory temporanea dove ha girato la simulazione; facendo in questo modo tutto quel che non viene spostato (con i comandi "mv...") viene perso; ovviamente potete anche non mettere questi comandi alla fine, ma questo significa accumulare dati nei dischi dei nodi rischiando di finire lo spazio (nei nodi lo spazio e' molto minore)

ALTRA DOCUMENTAZIONE PER IL SISTEMA DI CODE: il sistema di code si chiama "slurm" ed e' molto ben documentato (ed e' pieno di opzioni), si veda https://slurm.schedmd.com/documentation.html

si puo' trovare anche un tutorial veloce e ben fatto qui: https://support.ceci-hpc.be/doc/_contents/QuickStart/SubmittingJobs/SlurmTutorial.html

esiste anche una guida "tedesca" con una sintesi della documentazione e molti dettagli utili (ma e' piu' per amministratori che altro): https://wiki.fysik.dtu.dk/niflheim/Slurm_configuration

ACCEDERE AI FILE SUI NODI LOCALI: durante l'esecuzione, ogni utente puo' vedere i file che vengono generati durante la simulazione controllando (tramite comando squeue) quale nodo N sta runnando il processo che vi interessa e poi andando su /mnt/ssd_nodeN/nomeutente

-- Andrea Puglisi - 2020-12-01

Comments

<--/commentPlugin-->
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2026 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback