Nella presentazione verranno descritti brevemente ed in modo fruibile anche da persone non
tecnicamente preparate i concetti di base che descrivono una scheda Raspberry PI, il sistema
operativo Linux, il concetto di cluster di computer e la libreria MPI per effettuare del calcolo
parallelo.
Sulle schede sarà installato Raspbian Linux e verrà descritta l’implementazione del collegamento
dati (con tecnologia NFS) tra le schede e l’utilizzo della libreria MPIch per effettuare del calcolo
parallelo.
Il tutto accompagnato da una dimostrazione pratica del sistema hardware realizzato per la creazione
di un piccolo supercomputer basato su un cluster di quattro schede Raspberry PI 3.
Cosa è Raspberry
Cosa è Linux
Cosa è un cluster
Cosa è MPI
1 of 49
Downloaded 18 times
More Related Content
ArduinoDay17 - Creazione di un piccolo supercomputer con Raspberry PI per calcolo parallelo con tecnologia cluster
1. 1
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Linux Cluster con Raspberry PI
Creazione di un
piccolo supercomputer
per calcolo parallelo
con tecnologia ‘cluster ‘
Marco Cavallini
KOAN - Bergamo
2. 2
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Agenda
Introduzione
FabLab
Architetture
Arduino vs. Raspberry PI
Hardware
Raspberry PI
Architetture
Multi-core
Cluster
Software
Sistema Operativo Linux
Calcolo parallelo
MPIch
3. 3
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Introduzione
4. 4
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Introduzione
FabLab Bergamo : #ArduinoDay17
FabLab Bergamo : non solo Arduino
Ma c’è anche Raspberry PI (^_^)
5. 5
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Arduino vs. Raspberry PI
Una scheda Arduino tipica consiste in un microcontrollore Atmel
1 core - 8-bit AVR @ 16 Mhz
Raspberry PI consiste in un microcontrollore Broadcom
1 Core - 32-bit ARM @ 700 Mhz
Raspberry PI 3
4 core - 64-bit ARM @ 1.2 GHz (1200 Mhz)
6. 6
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Hardware
7. 7
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Raspberry PI
Le prime concezioni del Raspberry Pi, nel 2006
si basavano sul microcontrollore Atmel ATmega644
La Raspberry Pi Foundation fu fondata nel maggio 2009
nel Cambridgeshire, Regno Unito
Il lancio al pubblico è avvenuto il 29 febbraio 2012
Finora, ne sono state prodotte otto versioni
Modelli: A, B, A+, B+, 2, Zero, 3, Zero W
https://it.wikipedia.org/wiki/Raspberry_Pi
8. 8
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Raspberry PI 3
CPU Broadcom BCM2837
Clock 1.2 GHz 64-bit quad-core ARM Cortex-A53
Video Core OpenGL ES 2.0, 400 MHz dual core (1080p60)
RAM 1 GB (condivisa con la GPU) LPDDR2 (900 MHz)
Ethernet 10/100 Mbit/s, Wireless LAN 802.11n, Bluetooth 4.1
Prezzo 35 $
9. 9
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Architetture
10. 10
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Multi-core
Il termine Multi core viene utilizzato ad indicare una CPU composta da 2
o più core, ovvero da più nuclei di processori "fisici" montati sullo stesso
package.
Il termine Multi core può essere affiancato anche con altri termini
specifici della soluzione adottata per la CPU:
dual core, (2)
quad core, (4)
hexa core, (6)
octa core, (8)
https://it.wikipedia.org/wiki/Multi_core
11. 11
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Many-core
12. 12
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Cluster di computer (1/5)
Cluster (dall'inglese grappolo)
Un cluster, è un insieme di computer connessi tra loro tramite una rete
Caratteristiche
I vari computer risultano come una singola risorsa
Viene suddiviso il carico di lavoro
https://it.wikipedia.org/wiki/Computer_cluster
13. 13
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Cluster di computer (2/5)
Il progetto SETI@home sembrerebbe essere il più grande cluster
distribuito esistente.
Utilizza circa tre milioni di personal computer sparsi in tutto il mondo
per analizzare i dati provenienti dal radiotelescopio di Arecibo, al fine di
trovare la prova dell'esistenza di intelligenza extraterrestre.
SETI@home (“SETI at home") è un progetto di calcolo distribuito
volontario che usa computer connessi ad internet ospitato dalla Space
Sciences Laboratory all'Università della California, Berkeley, negli Stati
Uniti.
https://it.wikipedia.org/wiki/SETI@home
14. 14
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Cluster di computer (3/5)
 Requisiti per formare un cluster di computer
 Hardware di rete ad elevate prestazioni
 Un sistema operativo distribuito in grado di far funzionare i computerÂ
come cluster (per esempio GNU/Linux)
 Linux è il sistema più utilizzato per il clusteringÂ
(secondo TOP500 nel 2006 è stato il sistema più usato in assoluto)
 Un algoritmo parallelizzabile
15. 15
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Cluster di computer (4/5)
 Vantaggi
L’economicità , (fino a 15 volte più economici dei supercalcolatori)
La scalabilità , dal momento che le risorse sono distribuite.
Facilità di aggiornamento e manutenzione.
Disponibilità di un gran numero di software Open Source per i cluster
L'affidabilità , in quanto il sistema continua a funzionare anche in caso
di guasti a parti di esso (ovviamente con prestazioni inferiori)
16. 16
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Cluster di computer (5/5)
 Svantaggi
Difficoltà di gestione di un elevato numero di computer
Scarse prestazioni nel caso di applicazioni non parallelizzabili
Occupazione di spazio fisico notevolmente superiore a quella di un
singolo server
Maggiore consumo di energia rispetto a un singolo server (*)
(*) a parità di architettura
17. 17
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Realizzazione di un Cluster
18. 18
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Realizzazione di un Cluster
19. 19
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Cluster di Raspberry PI 3
Cluster con 4 Raspberry PI 3
4 core * 4 CPU = 16 core
20. 20
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Cluster di Raspberry PI 3
21. 21
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Cluster di Raspberry PI 3
22. 22
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Software
23. 23
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Sistema Operativo
 GNU / Linux
Raspberry + Debian = Raspbian
https://www.raspberrypi.org/downloads/raspbian/
24. 24
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Raspbian
 Aspetto di una Raspbian (collegata ad un monitor HDMI)
25. 25
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Calcolo sequenziale vs. parallelo
26. 26
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Calcolo sequenziale
 Il calcolo sequenzialeÂ
 Per essere eseguiti su un computer con una singola CPU
 Tradizionalmente i programmi sono stati scritti per un modello diÂ
computazione sequenziale (Von Neumann).
 Un problema viene spezzato in sequenze (discrete) di istruzioni cheÂ
sono eseguite in sequenza (una dopo l’altra).
 In un dato istante di tempo solo un’istruzione è in esecuzione.
27. 27
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Calcolo sequenziale
28. 28
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Calcolo parallelo
 Il calcolo paralleloÂ
 Esecuzione simultanea del codice sorgente di uno o più programmi suÂ
più microprocessori o più core dello stesso processore allo scopo diÂ
aumentare le prestazioni di calcolo del sistema di elaborazione.
 Un problema viene decomposto in parti che posso essere risolte inÂ
maniera concorrente (in parallelo)
I processori possono comunicare tra loro per risolvere un problemaÂ
coordinatamente o funzionare in maniera totalmente indipendente
https://it.wikipedia.org/wiki/Calcolo_parallelo
29. 29
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Calcolo parallelo
30. 30
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Calcolo parallelo
 Quali Applicazioni? (Ieri)
 Storicamente il calcolo parallelo è stato visto come un paradigmaÂ
costoso e di alto livello.
 È stato quindi utilizzato principalmente per risolvere problemi scientifici eÂ
ingegneristici di alto livello:
 Problemi atmosferici e ambientali
 Fisica
 Chimica
 Geologia, fenomeni sismici
 Ingegneria meccanica ed elettronica
31. 31
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Calcolo parallelo
 Quali Applicazioni? (Oggi)
 Le applicazioni commerciali forniscono le motivazioni principali per loÂ
sviluppo di calcolatori sempre più veloci.
 È necessario processare grandi quantità  di dati con tecniche sofisticateÂ
e velocemente.
 Alcuni esempi
 Database, data mining
 Oil exploration
 Motori di ricerca Web
 Elaborazione immagini medicali e diagnosi
 Modelli finanziari ed economici
 Grafica avanzata e realtà  virtuale
32. 32
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Calcolo parallelo
33. 33
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Cosa è MPI
Per permettere l’utilizzo in modo efficiente delle risorse sono necessari
software e librerie dedicate al calcolo parallelo…
Il Message Passing Interface (MPI) è un protocollo di comunicazione
per computer.
È soltanto una specifica e non una libreria
È de facto lo standard per la comunicazione tra nodi di un cluster.
MPI ha il vantaggio di essere molto portabile e veloce.
https://it.wikipedia.org/wiki/Message_Passing_Interface
34. 34
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Message Passing Interface
Tipi di librerie
MPICH è una implementazione libera e portabile di MPI
Licenza BSD-Like
La prima implementazione di MPICH si chiama MPICH1
Attualmente l'ultima implementazione si chiama MPICH2 la quale
implementa lo standard MPI-2.0
Open MPI è un’altra possibile implementazione di MPI
Licenza BSD
MPICH e Open MPI sono entrambi disponibili per varie versioni di Unix
(incluso Linux e macOS) e Microsoft Windows.
https://it.wikipedia.org/wiki/MPICH
35. 35
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Programmazione MPICH
36. 36
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Programmazione MPICH
Installazione
MPI
------------------
Ultima versione
mpich-3.2 (stable release)
Versione Debian
Package: mpich
Version: 3.1-5
Architecture: armhf
http://mpitutorial.com/tutorials/installingÂmpich2/
37. 37
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Programmazione MPICH
Hello World in C (sequenziale)
#include <stdio.h>
int main (int argc, char* argv[])
{
printf( "Hello worldn" );
return 0;
}
38. 38
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Programmazione MPICH
Hello World in C con MPICH
#include <stdio.h>
#include <mpi.h>
int main (int argc, char* argv[])
{
int rank, size;
MPI_Init (&argc, &argv);
MPI_Comm_rank (MPI_COMM_WORLD, &rank);
MPI_Comm_size (MPI_COMM_WORLD, &size);
printf( "Hello world dal processo %d di %dn", rank, size );
MPI_Finalize();
return 0;
}
39. 39
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Programmazione MPICH
Scoprire informazioni sull’ambiente
Ogni processo può usare run-time due funzioni per sapere
Quanti processi partecipano a questa computazione
Localizzarsi all’interno della computazione (cioè scoprire il suo ID)
MPI_Comm_size restituisce il numero di processi della computazione
MPI_Comm_rank restituisce il rank (o ID) del processo, che è sempre
compreso tra 0 e n-1 (dove n è il numero di processi che partecipano
alla computazione)
In MPI i processi possono essere raggruppati attraverso oggetti
chiamati comunicatori.
MPI_COMM_WORLD è il comunicatore di default che comprende tutti i
processi che partecipano alla computazione
40. 40
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Programmazione MPICH
Compilare ed eseguire un programma MPI
Lo standard MPI non specifica come eseguire i programmi
Ogni implementazione fornisce appositi strumenti (programmi o script)
per compilare ed eseguire un programma MPI
Ad esempio in OpenMPI e in MPICH
mpicc -o emyprog mpi_c.c
mpiexec -l -n 5 ./myprog
Dove –n <N> specifica che il programma sarà  composto da N
processi paralleli
41. 41
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Programmazione MPICH
In output si avrà una cosa del genere:
0: Hello world dal processo 0 di 5
1: Hello world dal processo 1 di 5
3: Hello world dal processo 3 di 5
2: Hello world dal processo 2 di 5
4: Hello world dal processo 4 di 5
43. 43
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Considerazioni finali
44. 44
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Dissipazione del calore
45. 45
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Temperatura delle CPU
Misuare la temperatura della CPU su raspberry PI
/opt/vc/bin/vcgencmd measure_temp
Temperatura normale in idle
temp=42.9°C -> (senza dissipatore)
temp=38.6°C -> (con dissipatore)
100% carico MPI sul master (dopo 10')
temp=80.6°C -> (senza dissipatore)
temp=67.7°C -> (con dissipatore)
temp=72.0°C -> (con dissipatore dopo 30')
100% carico MPI sui client (dopo 10')
temp=60.1°C -> (senza dissipatore)
46. 46
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Domande?
47. 47
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Crediti e Link
Wikipedia
Introduzione a MPI, Dott. Daniele Loiacono – Politecnico di Milano
http://home.deib.polimi.it/loiacono/