Carma Devkit e SLURM
Il carma-devkit
utilizza SLURM come batch system.
Per compilare i programmi da eseguire su questa piattaforma, non è possibile usare direttamente il carma-devkit
, ma occorre usare
l'host rd-arm-compiler
, dedicato alla cross compilazione.
Come per il resto dell'infrastruttura, anche su queste macchine le home
degli utenti e lo spazio $SCRATCH
sono distribuiti.
Sono state definite due code:
carma
: per sottomettere job sulla board;carma-devel
: per accedere alla macchina di sviluppo mediante job interattivo.
Comandi base di SLURM:
sinfo | Mostra le code e i nodi disponibili |
squeue / smap | Mostra i job di una coda |
sbatch | Sottomette un batch job |
srun | Sottomette un job interattivo |
scancel | Termina un job |
In SLURM, le code sono chiamate "partition": quindi per specificare una coda, usare l'opzione:
-p <nome-coda>
Come per LSF, anche per SLURM è consigliabile preparare un job file con le opzioni e i comandi da eseguire. Segue un esempio si job SLURM:
#!/bin/bash #SBATCH -J test # Nome del job #SBATCH -p carma # Nome della coda su cui sottomettere #SBATCH -e %J.err # File su cui scrivere stderr #SBATCH -o %J.out # File su cui scrivere stdout # # commands echo "My name is $0" echo "My PID is $$" echo "My host is "`hostname` echo "My username is "`whoami` echo "My home is $HOME" sleep 60
Salvare il job in un file, ad esempio test.job, poi sottometterlo con:
$ sbatch test.job
Altre opzioni notevoli per sbatch
:
Opzione | Significato |
---|---|
-D | Specificare la working directory |
-N | Richiede un numero minimo di nodi |
-n | Numero di task del job |
-t | Time limit. Formati "minutes", "minutes:seconds", "hours:minutes:seconds", "days-hours", "days-hours:minutes" e "days-hours:minutes:seconds" |
-w | Specifica la lista dei nodi |
–get-user-env | Indica al job di ereditare l'environment dell'utente |
–mail-type=<type> | Indica quando spedire la mail di notifica: BEGIN, END, FAIL, REQUEUE, ALL |
Esempi
Esempio: aprire una shell sulla macchina di sviluppo
$ module load slurm-2.3.2 $ srun -p carma-devel -u bash -i
Esempio: cross compilazione per usare la GPU del carma-devkit
$ nvcc -target-cpu-arch=ARM -arch=sm_20 --compiler-bindir=/usr/bin/arm-linux-gnueabihf-gcc-4.6 -m32 hello.cu -o hello
Esempio: cross compilazione per il processore ARM del carma-devkit
$ /usr/bin/arm-linux-gnueabihf-gcc-4.6 hello.c -o hello_armv7