===== 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
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= | 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