Documento tratto dal CD multimediale disponibile presso la biblioteca del Dipartimento di Matematica Tutorial Cluster Linux 15-09-2003 Ultimo aggiornamento Ottobre 2004
Istruzioni base CLUSTER LINUX ULISSE 72 processori di calcolo RAM 36 Gigabyte 600 GB STORAGE
Diagramma del Cluster
dal LIR 1 e 2 ACCESSO selezionando dal MENU ulisse.mat.unimi.it dal PC del proprio studio utilizzando ssh ulisse (Linux) oppure utilizzando un client come putty (Windows) dall esterno del dipartimento mediante sistema di accesso basato su Firewall ed ssh
Monitoraggio Ulisse Per monitorare lo stato della macchina dirigere il browser su https://ulisse.mat.unimi.it/monitor/
Documentazione I manuali dei compilatori istallati possono essere consultati online alla pagina Https://ulisse.mat.unimi.it/doc/PGI/
Come utilizzare il Cluster Ogni utente ha una directory personale /gpfs_home/nomeutente per i propri file Un area di scratch di 30 Gbyte è utilizzabile per file temporanei /scratch Ogni nodo del cluster ha visibilità di entrambe le directory
Area di scratch I file dell area di scratch non vengono salvati a scopo di backup /scratch viene utilizzata per file temporanei periodicamente viene ripulita
MPI Sono disponibili le librerie per lo scambio di messaggi MPI-CH ottimizzate per Rete Myrinet. I Programmi: mpicc ed mpicc compilano ed effettuano il link dei programmi scritti in C e C++ mpif77,mpif90 compilano ed effettuano il link dei programmi in fortran
Posizione delle Librerie MPI Compilate con i compilatori GNU MPIdir = /usr/local/mpi1.2.5..9/gm- 1.5.2.1_Linux-2.4.18-24.7.xsmp/smp/gnu/ssh MPinc MPlib = -I$(MPIdir)/include = $(MPIdir)/lib/libmpich.a
Posizione delle Librerie MPI Compilate con i compilatori PGI MPIdir = /usr/local/mpich/1.2.5..9/gm- 1.5.2.1_Linux-2.4.18-24.7.xsmp/smp/pgi/ssh MPinc = -I$(MPIdir)/include MPlib = $(MPIdir)/lib/libmpich.a
Code batch Il cluster utilizza PBS (Portable batch system ) e Maui per la gestione delle risorse e la schedulazione dei job utenti I programmi degli utenti possono essere suddivisi in 2 categorie: sequenziali e paralleli
Per lanciare un programma seriale usando PBS Esempio di file script.pbs che richiede 1 nodo ed 1 processore #PBS -N serial-job #PBS -j oe #PBS -l nodes=1:ppn=1 #PBS -l walltime=10:00:00 cd /gpfs_home/myusername Nome del job 1 nodo 1 cpu al più 10 ore richieste./a.out > /gpfs_home/myusername/results.txt Merge stder/stout comandi
Sottomissione job qsub -e errfile (ridirige standard error al file errfile) -I avvia un job interattivo -j oe (combina standard input e standard output) -l cput=hh:mm:ss (tempo cpu richiesto) -l mem=n (memoria richiesta) (es. 36MB) -l nodes=n:ppn=m (nodi e proc per nodo) -o outfile ridirige standard output al file outfile -S shell usa la shell al posto della login shell (es. /bin/ksh) -V eredita l ambiente compreso il DISPLAY -N nome_del_job -m a (mail all utente in caso di abort del job)
Sottomissione del job $ qsub script.pbs 1234.ulisse.mat.unimi.it $ qstat 1234 job id Name User Time S Queue 1234.ulisse script.pbs mario 00:00:00 Q serial
Comandi PBS qalter modifica gli attributi del job qdel cancella un job qhold mantieni il job in hold (non schedulare) qmove cambia la coda assegnata al job qstat -f visualizza lo stato del lavoro qsub sottomette un job xpbs visualizza le code e i job
Per lanciare un programma parallelo usando PBS Esempio di file batch che richiede 10 nodi e 2 processori per nodo (20 processori) #PBS -N parallel-job #PBS -s /bin/sh #PBS -e test.err #PBS -o test.log #PBS -l nodes=10:ppn=2 #PBS -l walltime=10:00:00 cd /gpfs_home/myusername Nome del Job /usr/local/bin/mpiexec./a.out \> /gpfs_home/myusername/results.txt
MPIEXEC mpiexec [option] executable [args] -n numproc usa il numero specificato di processi -tv Usa il Debugger totalview-pgdbg -perif alloca solo un processo per interfaccia myrinet -pernode alloca solo un processo per nodo di calcolo
xpbsmon
XPBSMON -monitor del cluster
Compilazione Semplice esempio Filmato Opzioni di ottimizzazione CCFLAGS = -fomit-frame-pointer -O3
LAPACK e BLAS Lapack link con -llapack Blas link con -lblas Disponibile per maggiori performance la libreria ATLAS LAdir = /usr/local/atlas LAinc = -I $(LAdir)/include/linux_gcc F LAlib = -L$(LAdir)/lib/linux_gcc C LAlib = -L$(LAdir)/lib/linux_gcc -lf77blas -latlas -lcblas -latlas
Link con ScaLAPACK -Mscalapack pgf77 myprog.f -Mscalapack
Performance del cluster HPL benchmark Performance Gflops 130 120 110 100 90 80 70 60 50 40 30 20 10 0 Serie1 Serie2 2000 4000 8000 10000 20000 N 37000 40000 52000
DEBUG Debugger PGI totalview per programmi seriali mpiexec -tv my_programme mediante sottomissione interattiva dei JOB (qsub -V -I)
Manuale d uso del PBS E possibile scaricare il manuale del PBS dal sito WEB https://ulisse.mat.unimi.it/doc/
GPROF Profiler Analisi dei dati Miglioramento della performance
I 3 passi del profiling Compilazione del programma -Mprof=func -Mprof=lines Esecuzione del programma il file pgprof.out viene generato Analisi dei dati $ pgprof [options] pgprof.out
PGPROF X-Windows Statistiche Count Time Cost Messages Bytes
Avvio di programmi interattivi e visualizzazione di finestre X sui nodi di Calcolo del Cluster
Esempio: pc1421.mat.unimi.it 159.149.2.76
SSH X terminal Sessione Master node Passo2 qsub -I Pc studio Xserver Nodo di calcolo Passo3
Master node ssh tramite qsub -I ssh Pc studio Nodo di calcolo
Pc studio ssh Master node $ ssh -l alessio ulisse.mat.unimi.it password: ************* mgtnode-> pwd /gfps_home/alessio
sessione X Pc studio mgtnode-> portforward 6080 pcstudio.mat.unimi.it 6000 Porta in ascolto su mgtnode Porta in ascolto su pcstudio
sessione X 6080 nuova shell Pc studio mgtnode-> qsub -I opzioni node26-> export DISPLAY= mgtnode:80 node26-> my-x-application... Node26 -> exit mgtnode -> exit
Crediti Il presente Tutorial è stato realizzato nell ambito dell attività di sperimentazione delle nuove tecnologie per la didattica. Gli strumenti utilizzati per la registrazione sono disponibili presso la nuova aula multimediale del dipartimento di matematica. Consultare gli aggiornamenti presenti nella sezione News del sito: http://cluster.mat.unimi.it Autore: Alessio Alessi E-mail: alessio.alessi@mat.unimi.it