Per l'utilizzo delle macchine del cluster di calcolo sono state definite le seguenti code:
normal
: coda normale per utenti RD e RD-GUESTinteractive
: coda per job interattivi per utenti RD e RD-GUESTcoka
: coda normale per utenti COKAcoka-devel
: coda per job interattivi per utenti COKAperformance
: coda solo per l'esecuzione di job ad uso esclusivo di un server, per utenti RD, RD-GUEST e COKAcms
: coda normale per utenti CMScms-devel
: coda per job interattivi per utenti CMSatlas
: coda normale per utenti ATLASatlas-devel
: coda per job interattivi per utenti ATLASalice
: coda normale per utenti ALICEalice-devel
: coda per job interattivi per utenti ALICEGli utenti sono suddivisi nei seguenti gruppi:
rd
rd-guest
coka-users
cms-users
atlas-users
alice-users
Con il comando:
$ bugroup
è possibile visualizzare tutti gli utenti suddivisi per gruppo di appartenenza.
Ogni gruppo di utenti può utilizzare solamente le code che gli sono state assegnate. Ovviamente, i nomi di gruppi utenti e code sono autoesplicativi: quindi ad esempio gli utenti del gruppo cms-users
potranno usare solamente le code cms-*
.
Sono state definite delle nuove risorse che rappresentano le GPU disponibili e il MIC. Queste risorse sono:
gpu_k20
: rappresenta le GPU Tesla K20gpu_c2050
: rappresenta le GPU Tesla C2050mic
: rappresenta l'Intel ManyCoreSegue la tabella con il dettaglio della quantità di risorse disponibili su ciascun server fisico:
Host | gpu_k20 | gpu_c2050 | mic |
---|---|---|---|
rd-coka-01 | 2 | - | 1 |
rd-coka-02 | - | - | 2 |
rd-gpu-02 | - | 3 | - |
Per vedere quali host sono disponibili nel cluster e il loro stato, usare i comandi:
$ bhosts
$ bhosts -w
Per vedere i dettagli di un singolo host usare:
$ bhosts -l hostname
Per vedere lo stato delle code usare:
$ bqueues
Per vedere i dettagli di una coda:
$ bqueues -l coda
Per sottomettere un job utilizzare il comando:
$ bsub [opzioni] 'eseguibile'
Questo comando supporta numerose opzioni; le più interessanti sono:
Opzione | Descrizione |
---|---|
-q coda | Specifica a quale coda sottomettere |
-m hostname | Sceglie a quale host inviare il job |
-c n | CPU time limite di n secondi |
-n x | Utilizza x core per il job |
-J nome | Assegna 'nome' come job name |
-o file.out | Job standard output |
-e file.err | Job standard error |
-N | Separa il job report dall'output |
-B | Invia una mail quando il job va in start |
-R "risorsa=n" | Specifica di quali e quante risorse il job ha bisogno |
-a application | Specifica quale application utilizzare (da usare con MPI) |
Per sottomettere un job e consigliabile preparare un file di testo contenente tutte le opzioni e i comandi da eseguire, come il seguente:
#BSUB -J example # Job name #BSUB -c 600 # Time limit in seconds #BSUB -n 1 # Number of cores #BSUB -o %J.out # Job standard output #BSUB -e %J.err # Job standard error #BSUB -N # Job report #BSUB -B # Send mail #BSUB -q coka # Job queue #BSUB -m rd-coka-01 # Host selection #BSUB -R 'gpu_k20=1' # Resource requirements # # commands echo 'hello world' sleep 10
Salvare il job in un file (es. example.job
) e sottometterlo con:
$ bsub < example.job
Per monitorare lo stato dei propri job, utilizzare il comando:
$ bjobs
Per terminare un job, usare il comando:
$ bkill jobid
Quando un job termina, viene spedito un report riguardante l'esecuzione del job via mail, direttamente sulla UI. Per leggere queste mail, utilizzare il tool mailx:
$ mail
Sono job che mandano il proprio output su stdout e leggono l’input da stdin. Sono utili per eseguire operazioni come compilazione e debug delle applicazioni, oppure per eseguire programmi che richiedono l'interazione dell'utente durante l'esecuzione.
Questo tipo di job possono essere sottomessi solamente sulle code che accettano i job di tipo interattivo, nello specifico le code denominate *-devel
.
Esempio: esecuzione del comando ls con job interattivo:
$ bsub -Is -q interactive ls Job <682> is submitted to queue <interactive>. <<Waiting for dispatch ...>> 537.err 537.out example.job hello_mic hello_nv intel interactive.job lsf_job_template.job matrix mbox
Esempio: compilazione
$ bsub -Is -q interactive gcc -o hello hello.c Job <1525> is submitted to queue <interactive>. <<Waiting for dispatch ...>> <<Starting on rd-gpu-01.cnaf.infn.it>>
Esempio: shell con X-Forwarding (notare opzione -XF)
$ bsub -Is -XF -q interactive /bin/bash Job <8917> is submitted to queue <interactive>. <<ssh X11 forwarding job>> <<Waiting for dispatch ...>> [user@server ~]$