INCA-ABACO: INfrastrutture di CAlcolo A BAsso COsto
Un breve tutorial che spiega un esempio elementare
di programmazione parallela sul nostro mini-cluster




  1. Operazioni preliminari per poter compilare ed eseguire un programma
  2. Compilazione ed esecuzione del programma
  3. I risultati
  4. E se volessi eseguire un altro programma?

Prima di poter effettuare qualsiasi altra operazione, bisogna assicurarsi di avere un account abilitato ad operare sul mini-cluster; si può ottenere un account con la procedura descritta nella pagina Accessi. Una volta ottenuto un account, bisogna scrivere o procurarsi il programma che si vuole eseguire. D'ora in avanti ci riferiremo al server/workstation principale del mini-cluster con il suo nome, cioè Marvin. Marvin è dotato di alcuni editor di testo (come emacs, nano o vi), per cui è possibile scrivere il programma dopo aver effettuato l'accesso. Un'altra possibilità, consigliata per poter lavorare comodamente con il proprio editor preferito, è quella di scrivere il programma sul proprio computer e caricarlo su Marvin tramite l'istruzione scp. Le procedure per poter copiare i propri file su Marvin sono descritte sempre nalla pagina Accessi. Una volta caricato su Marvin il programma desiderato e gli eventuali file ausiliari, si può procedere con la compilazione (passo successivo).
Per questo minitutorial ci riferiremo al programma di esempio omp-hello.c, già presente nell'area di ciascun utente, all'interno della cartella mpi_basics, il cui contenuto è stato compresso nel file mpi_basics.zip, che si consiglia di scaricare, in modo da poter visionare tanto il programma omp-hello.c quanto gli script che verranno citati in seguito (in grassetto).

Torna su


Una volta che il file sorgente del proprio programma è presente su Marvin, si deve procedere alla compilazione prima su Marvin e poi sui Rasperry Pi (che sono stati chiamati yupana01, ..., yupana15). Infine il programma viene eseguito sul mini-cluster (quindi su Marvin insieme ai Raspberry). Questa operazione avviene in maniera automatica lanciando da terminale lo script total_batch.sh.


Torna su


Al termine dell'esecuzione troviamo diversi file nella cartella:

All'interno del file AllFromProc.txt si trova l'intero stream di output del programma eseguito, risultato della concatenazione dell'output prodotto su ogni singola macchina. In ciascuna riga viene indicato il numero del processore che ha generato la riga e il nome della macchina.
Questo è il contenuto del file AllFromProc.txt:


Torna su


All'interno della cartella mpi_basics sono presenti quattro file .sh che gestiscono il passaggio di informazioni tra Marvin e i Raspberry, la compilazione e l'esecuzione del programma omp_hello. Per poter compilare ed eseguire un nuovo programma è sufficiente modificare questi eseguibili secondo le proprie necessità.

Supponiamo di aver scritto il programma hello_omp.c e di volerlo eseguire.
Il primo passo è modificare il file runHello.sh (è possibile anche cambiarne il nome), inserendo il nome del proprio programma in sostituzione di omp_hello.c, facendo attenzione a modificare opportunamente sia le righe relative alla compilazione, sia l'ultima riga relativa all'esecuzione.
A questo punto si deve procedere alla modifica del file gatherOutputFiles.sh, all'interno del quale bisogna sostiture la stringa FromProc*txt con il nome del file di output prodotto dal proprio programma.
Infine si deve modificare il file total_batch.sh, sostituendo all'inizio e alla fine le stringhe FromProc*txt con il nome del file di output prodotto dal proprio programma.

Torna su