ºÝºÝߣ

ºÝºÝߣShare a Scribd company logo
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
 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
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Introduzione
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
 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
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Hardware
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
 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
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Architetture
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
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Many-core
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
 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
 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
 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
 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
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Realizzazione di un Cluster
18
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Realizzazione di un Cluster
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
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Cluster di Raspberry PI 3
21
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Cluster di Raspberry PI 3
22
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Software
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
 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
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Calcolo sequenziale vs. parallelo
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
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Calcolo sequenziale
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
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Calcolo parallelo
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
 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
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Calcolo parallelo
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
 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
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Programmazione MPICH
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
 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
 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
 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
 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
 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
42
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Programmazione MPICH
pi@rpi0$: 
./mpirun ­n 16 ­f host_file ./mpi­hello­world/code/mpi_hello_world
Hello world from processor rpi0, rank 4 out of 16 processors
Hello world from processor rpi0, rank 12 out of 16 processors
Hello world from processor rpi0, rank 8 out of 16 processors
Hello world from processor rpi1, rank 5 out of 16 processors
Hello world from processor rpi1, rank 9 out of 16 processors
Hello world from processor rpi1, rank 1 out of 16 processors
Hello world from processor rpi1, rank 13 out of 16 processors
Hello world from processor rpi0, rank 0 out of 16 processors
Hello world from processor rpi2, rank 2 out of 16 processors
Hello world from processor rpi3, rank 11 out of 16 processors
Hello world from processor rpi2, rank 6 out of 16 processors
Hello world from processor rpi3, rank 15 out of 16 processors
Hello world from processor rpi2, rank 14 out of 16 processors
Hello world from processor rpi3, rank 3 out of 16 processors
Hello world from processor rpi2, rank 10 out of 16 processors
Hello world from processor rpi3, rank 7 out of 16 processors
43
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Considerazioni finali
44
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Dissipazione del calore
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
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Domande?
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/
48
 KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com
Rights to copy
Attribution – ShareAlike 3.0
You are free
to copy, distribute, display, and perform the work
to make derivative works
to make commercial use of the work
Under the following conditions
Attribution. You must give the original author credit.
Share Alike. If you alter, transform, or build upon this work, you
may distribute the resulting work only under a license identical to
this one.
For any reuse or distribution, you must make clear to others the license
terms of this work.
Any of these conditions can be waived if you get permission from the
copyright holder.
Your fair use and other rights are in no way affected by the above.
License text: http://creativecommons.org/licenses/by-sa/3.0/legalcode
© Copyright 2017, Marco Cavallini - KOAN sas
m.cavallini <AT> koansoftware.com
Corrections, suggestions,
contributions and translations are welcome!
ftp://ftp.koansoftware.com/public/talks/ArduinoDay2017
Custom Development
System integration
BSP creation fir new boards
System optimization
Linux kernel drivers
Application and interface development
KOAN services
Technical Support
Development tool and application support
Issue investigation and solution follow­up with 
mainstream developers
Help getting started
Embedded Linux Training
Unix and GNU/Linux basics
Linux kernel and drivers development
Real­time Linux
Yocto Project
Development and profiling tools
Lightweight tools for embedded systems
Root filesystem creation
Audio and multimedia
System optimization
Consulting
Help in decision making
System architecture
Identification of suitable technologies
Managing licensing requirements
System design and performance review
http://koansoftware.com

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
  • 42. 42  KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com Programmazione MPICH pi@rpi0$:  ./mpirun ­n 16 ­f host_file ./mpi­hello­world/code/mpi_hello_world Hello world from processor rpi0, rank 4 out of 16 processors Hello world from processor rpi0, rank 12 out of 16 processors Hello world from processor rpi0, rank 8 out of 16 processors Hello world from processor rpi1, rank 5 out of 16 processors Hello world from processor rpi1, rank 9 out of 16 processors Hello world from processor rpi1, rank 1 out of 16 processors Hello world from processor rpi1, rank 13 out of 16 processors Hello world from processor rpi0, rank 0 out of 16 processors Hello world from processor rpi2, rank 2 out of 16 processors Hello world from processor rpi3, rank 11 out of 16 processors Hello world from processor rpi2, rank 6 out of 16 processors Hello world from processor rpi3, rank 15 out of 16 processors Hello world from processor rpi2, rank 14 out of 16 processors Hello world from processor rpi3, rank 3 out of 16 processors Hello world from processor rpi2, rank 10 out of 16 processors Hello world from processor rpi3, rank 7 out of 16 processors
  • 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/
  • 48. 48  KOAN - Kernel, drivers and embedded Linux development, consulting, training and support http//KoanSoftware.com Rights to copy Attribution – ShareAlike 3.0 You are free to copy, distribute, display, and perform the work to make derivative works to make commercial use of the work Under the following conditions Attribution. You must give the original author credit. Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under a license identical to this one. For any reuse or distribution, you must make clear to others the license terms of this work. Any of these conditions can be waived if you get permission from the copyright holder. Your fair use and other rights are in no way affected by the above. License text: http://creativecommons.org/licenses/by-sa/3.0/legalcode © Copyright 2017, Marco Cavallini - KOAN sas m.cavallini <AT> koansoftware.com Corrections, suggestions, contributions and translations are welcome! ftp://ftp.koansoftware.com/public/talks/ArduinoDay2017
  • 49. Custom Development System integration BSP creation fir new boards System optimization Linux kernel drivers Application and interface development KOAN services Technical Support Development tool and application support Issue investigation and solution follow­up with  mainstream developers Help getting started Embedded Linux Training Unix and GNU/Linux basics Linux kernel and drivers development Real­time Linux Yocto Project Development and profiling tools Lightweight tools for embedded systems Root filesystem creation Audio and multimedia System optimization Consulting Help in decision making System architecture Identification of suitable technologies Managing licensing requirements System design and performance review http://koansoftware.com