INCA-ABACO: INfrastrutture di CAlcolo A BAsso COsto
Descrizione della procedura eseguita al fine di
configurare il cluster per il calcolo parallelo




  1. La configurazione Hardware
  2. La configurazione software di ciascuna singola macchina
  3. Come far comunicare ciascun elemento del cluster con gli altri
  4. È tutto pronto, cosa faccio adesso?

Il nostro mini-cluster è composto da un computer principale, denominato Marvin, e 15 Raspberry Pi 3 ®. Marvin funge da server: ospita le pagine web che state leggendo e permette agli utenti di collegarsi da remoto per utilizzare le sue funzionalità, mentre i Raspberry, denominati yupana01,..., yupana15, sono accessibili solo da Marvin. I dettagli dell'hardware utilizzato sono descritti nella pagina Hardware all'interno delle FAQ.
Se si dispone di abbastanza spazio e di attrezzature adeguate, la configurazione hardware non è molto difficoltosa: come si può notare nella Gallery, è sufficiente utilizzare un router/switch e connetere i Raspberry ad esso con un cavo ethernet. I Raspberry Pi 3 sono equipaggiati con ricevitori wireless e bluetooth (le versioni precedenti non ne erano provvisti), dunque è possibile configurare anche un cluster non cablato.

Torna su


Sia su Marvin che sui Raspberry è installato il sistema operativo Linux: per Marvin abbiamo scelto Debian 8 (Jessie), mentre i Raspberry sono stati equipaggiati con il sistema operativo Raspbian, derivato da Debian e adattato proprio alla specifica architettura dei Raspberry.
Ciascuna macchina del cluster è in grado di compilare ed eseguire programmi in parallelo usando il protocollo MPI per il linguaggio di programmazione C. È stato dunque necessario installare su ciascuna macchina il relativo compilatore. Su Marvin e su ciascun Raspberry è stato sufficiente digitare il comando
da terminale, con privilegi da amministratore. Si faccia attenzione al fatto che tale comando dipende dalla versione del proprio sistema operativo e dalla versione corrente di OpenMPI.
Successivamente all'esecuzione del suddetto comando, ciascuna macchina è stata in grado di compilare ed eseguire (in parallelo) i nostri programmi.

Torna su


Per poter sfruttare appieno il cluster per la programmazione in parallelo, è necessario che ogni macchina possa comunicare liberamente con le altre. Infatti, senza un'adeguata configurazione, ogni tentativo di accesso a ognuno dei nodi del cluster richiede l'inserimento della password dell'utente. Pertanto è necessario fare in modo che ciascun nodo sia accessibile in maniera automatica, in modo da ridurre al minino i tempi di esecuzione del programma che non siano legati alla complessità computazionale dello stesso.
A tale scopo è stata eseguita la procedura descritta di seguito, che può essere velocizzata e resa più efficiente, utilizzando il tool clusterssh (per maggiori informazioni si può visitare il sito web https://github.com/duncs/clusterssh/wiki), che consente di aprire più connessioni ssh contemporaneamente verso macchine diverse e avere un'unica finestra per lanciare lo stesso comando su ciascuna macchina.
Nel file add-prototype-user.txt si può trovare lo storico delle operazioni realmente eseguite su Marvin per la creazione e la configurazione di un utente "test", al fine di effettuare le verifiche necessarie a controllare il buon funzionamento della programmazione parallela sul mini-cluster.
Nell'immagine sottostante si può invece vedere cosa succede quando ci si connette a tutti i nodi del mini-cluster (contemporaneamente) usando clusterssh.



A questo punto, se tutto è andato a buon fine, da ogni nodo del cluster ci si può connettere a qualsiasi altro nodo senza che venga richiesta la password. In questo modo un programma che deve essere eseguito in parallelo sul cluster (o su parte di esso), è libero di scambiare informazioni da una macchina all'altra; i tempi di esecuzione saranno dunque influenzati esclusivamente dalla velocità della rete locale e dal tempo di esecuzione del programma sui singoli processori.

Torna su


Nel nostro mini-cluster ciascun utente viene equipaggiato, al momento della sua creazione, di una cartella con alcuni file che consentono di eseguire in parallelo un primo esempio elementare di programma. Per poterne comprendere i meccanismi di funzionamento, non si deve fare altro che seguire passo dopo passo il corrispondente mini tutorial.

Torna su