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