0
Algoritmi
Algoritmi e Calcolo Parallelo

Prof. Pier Luca Lanzi
Riferimenti

•

•

2

Bertossi Alan A., Montresor Alberto. “Algoritmi e
strutture di dati” (seconda edizione), CittàStudi ...
http://www.youtube.com/watch?v=06Nf_YVoowQ

http://www.youtube.com/watch?v=06Nf_YVoowQ
Prof. Pier Luca Lanzi
Come si cucina il tiramisù?

Quanto tempo si impiega per
prepararlo per due persone?
Quanto tempo per dieci persone?
Quant...
Se un amico vi aiutasse,
come cambierebbe la procedura?
Sareste più rapidi se due amici vi aiutassero?
E se cento amici vi...
Calcolo del Cammino Minimo

6

Come si calcola il cammino minimo fra due
punti?
Quanto tempo vi serve per calcolarlo?
Aver...
Cos’è un Algoritmo?

•

•
•
•
•

7

“Sequenza finita di passi, definiti con precisione, che portano alla
realizzazione di ...
Un po’ di storia

•
•
•

•

8

Al-Khwārizmī, astronomo e matematico
Persiano, nell’825 scrive il trattato
“On Calculation ...
Un Po' di Storia

•

•
•

•
•

9

Papiro di Ahmes
(algoritmo per la moltiplicazione)

Algoritmi di tipo numerico
furono st...
qual è l’obiettivo del corso?
imparare i principi generali
algoritmi, strutture dati, calcolo parallelo
impararli a utiliz...
Quali sono gli obiettivi del corso?

•

•
•

11

Analisi di algoritmi noti per il design di algoritmi nuovi
Analisi degli ...
Perché ci interessa la performance?
La performance spesso determina
il confine tra quello che è possibile e
quello che non...
Esempio: N-body simulation & FFT

•

•
•
•

Simulare le interazioni gravitazionali
fra N corpi con un algoritmo
“brute-for...
Che Cosa si Intende per Scalabilità?

Prof. Lanzi corre i 100m in 12s

Prof. Pier Luca Lanzi

14

In quanto corre la marat...
Esempio: Ricerca Sequenziale

•

•

Dato un elenco contenente n oggetti, cercare
se un oggetto x è presente
L’elenco non è...
Codifica in C++

16

bool linear_find(std::vector<int> v, int x)
{
int i;
for (i=0; i<v.size() && v[i]!=x; i++);

if (i==v...
Ricerca Binaria di un Elemento

•

•

17

Supponiamo ora che l’elenco sia ordinato
alfabeticamente

Esempio: l’elenco del ...
Codifica in C++

18

bool binary_find(std::vector<int> v, int x)
{
int l = -1;
int r = v.size();
// l, r are the search
//...
quale dei due algoritmi ha
prestazioni migliori?
quali sono le ipotesi di lavoro
alla base dei due algoritmi?

Prof. Pier ...
perchè studiare gli algoritmi
da un punto di vista teorico?

Prof. Pier Luca Lanzi
VignettaLuca Computers and Intractability di Garey and Johnson
Prof. Pier da Lanzi
VignettaLuca Computers and Intractability di Garey and Johnson
Prof. Pier da Lanzi
VignettaLuca Computers and Intractability di Garey and Johnson
Prof. Pier da Lanzi
La ricerca binaria è sempre più efficiente?

Prof. Pier Luca Lanzi
Gli algoritmi lavorano su dati che vengono
organizzati secondo una certa struttura
Se la struttura è efficiente
allora gli...
Limitazioni del Calcolo Sequenziale

•

•

26

Ci sono diverse ragioni che limitano la costruzione di calcolatori
sequenzi...
Prestazione degli (uni)Processori

Prof. Pier Luca Lanzi

27
Calcolo Parallelo
Abbiamo a disposizione più esecutori,
possiamo sfruttarli per risolvere problemi
molto complessi, veloce...
(1)
diversi esecutori, lavorano su diverse
istanze dello stesso problema

(2)
il problema complesso viene suddiviso
in sot...
Calcolo Parallelo

30

•

Più processori (risolvono i sottoproblemi)

•

La rete (collega i processori/risolutori dei sott...
Programmazione Parallela

•

•
•
•
•

31

Decomposizione di un algoritmo in sottoproblemi
o dei suoi dati in parti
Distrib...
Perchè ci Interessa il Calcolo Parallelo?

•

•

•

Simulazione e Modellistica
Maggiore potenza di calcolo,
maggiore l’acc...
Obiettivo del Corso
studio, analisi, sviluppo di algoritmi
sequenziali e paralleli e loro implementazione

Come risolvere ...
Sequenziale vs Parallelo

Se avessi più di un esecutore,
potrei risolvere problemi più grandi?
Avere più esecutori, richie...
Upcoming SlideShare
Loading in...5
×

Algoritmi e Calcolo Parallelo 2012/2013 - Algoritmi

248

Published on

Slide del corso di Algoritmi e Calcolo Parallelo per il corso di laurea magistrale in Ingegneria Matematica 2012/2013 - Politecnico di Milano

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
248
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Se cercassimo di sapere se due puntisonoconnessicambierebbe di molto ilproblema?
  • &quot;Algorism is the art by which at present we use those Indian figures, which number two times five.&quot;
  • http://ideone.com/GnW1i
  • http://flickr.com/photos/himmelskratzer/1789915635/
  • Transcript of "Algoritmi e Calcolo Parallelo 2012/2013 - Algoritmi"

    1. 1. Algoritmi Algoritmi e Calcolo Parallelo Prof. Pier Luca Lanzi
    2. 2. Riferimenti • • 2 Bertossi Alan A., Montresor Alberto. “Algoritmi e strutture di dati” (seconda edizione), CittàStudi 2010 Stanley B. Lippman, Barbara E. Moo, Josee Lajoie “C++ Primer”, 5th Edition Addison-Wesley Prof. Pier Luca Lanzi
    3. 3. http://www.youtube.com/watch?v=06Nf_YVoowQ http://www.youtube.com/watch?v=06Nf_YVoowQ Prof. Pier Luca Lanzi
    4. 4. Come si cucina il tiramisù? Quanto tempo si impiega per prepararlo per due persone? Quanto tempo per dieci persone? Quanto tempo per preparalo per cento persone? Prof. Pier Luca Lanzi
    5. 5. Se un amico vi aiutasse, come cambierebbe la procedura? Sareste più rapidi se due amici vi aiutassero? E se cento amici vi aiutassero? Prof. Pier Luca Lanzi
    6. 6. Calcolo del Cammino Minimo 6 Come si calcola il cammino minimo fra due punti? Quanto tempo vi serve per calcolarlo? Avere più persone aiuterebbe? Prof. Pier Luca Lanzi
    7. 7. Cos’è un Algoritmo? • • • • • 7 “Sequenza finita di passi, definiti con precisione, che portano alla realizzazione di un compito” La sequenza di passi deve essere finita e deve portare ad un risultato Le istruzioni devono essere eseguibili materialmente e devono essere espresse in modo non ambiguo Un algoritmo deve essere comprensibile al suo esecutore, corretto, ed efficiente Forniscono descrizione astratta di un metodo (procedimento) per giungere alla soluzione di un dato problema Prof. Pier Luca Lanzi
    8. 8. Un po’ di storia • • • • 8 Al-Khwārizmī, astronomo e matematico Persiano, nell’825 scrive il trattato “On Calculation with Hindu Numerals” Tradotto in latino nel XII secolo, come “Algoritmi de numero Indorum” “Algoritmi” era la traduzione del nome dell’autore (Al-Khwārizmī) ma il termine è stato frainteso come il plurare Latino algorismus Nel 1240, il termine è usato in nel manuale “Carmen de Algorismo” di Alexandre de Villedieu. Francobollo emesso il 6 Settembre 1983 dall’Unione Sovietica per commemorare il “compleanno di Al-Khwārizmī's (780850), fonte http://www.wikipedia.org Prof. Pier Luca Lanzi
    9. 9. Un Po' di Storia • • • • • 9 Papiro di Ahmes (algoritmo per la moltiplicazione) Algoritmi di tipo numerico furono studiati da matematici babilonesi ed indiani Algoritmi in uso fino a tempi recenti furono studiati dai matematici greci più di 2000 anni fa Algoritmo di Euclide per il Massimo Comune Divisore Algoritmi geometrici (calcolo di tangenti, sezioni di angoli, ...) Prof. Pier Luca Lanzi
    10. 10. qual è l’obiettivo del corso? imparare i principi generali algoritmi, strutture dati, calcolo parallelo impararli a utilizzare ora C++, programmazione a oggetti, MPI, OpenMP, CUDA Prof. Pier Luca Lanzi
    11. 11. Quali sono gli obiettivi del corso? • • • 11 Analisi di algoritmi noti per il design di algoritmi nuovi Analisi degli algoritmi? Performance (velocità) Utilizzo delle risorse (memoria e comunicazione)   Ci sono molti altri aspetti (non trattati qui): Correttezza, robustezza, mantenibilità Modularità, sicurezza, facilità d’uso   Prof. Pier Luca Lanzi
    12. 12. Perché ci interessa la performance? La performance spesso determina il confine tra quello che è possibile e quello che non è possibile fare L’analisi degli algoritmi ci aiuta a capire il concetto di scalabilità Prof. Pier Luca Lanzi
    13. 13. Esempio: N-body simulation & FFT • • • • Simulare le interazioni gravitazionali fra N corpi con un algoritmo “brute-force” richiede un tempo dell’ordine di N2 L’algoritmo di Barnes-Hut richiede un tempo dell’ordine di NlogN L’algoritmo brufe-force per la trasformata di Fourier discreta richiede un tempo dell’ordine N2 La versione FFT, NlogN Prof. Pier Luca Lanzi 13
    14. 14. Che Cosa si Intende per Scalabilità? Prof. Lanzi corre i 100m in 12s Prof. Pier Luca Lanzi 14 In quanto corre la maratona?
    15. 15. Esempio: Ricerca Sequenziale • • Dato un elenco contenente n oggetti, cercare se un oggetto x è presente L’elenco non è ordinato x? • • • 15 x? x? x? x? x! Caso migliore? Quello che cerco è il primo Caso peggiore? Ho n elementi e quello che cerco è l’ultimo Caso medio? Circa n/2 Prof. Pier Luca Lanzi
    16. 16. Codifica in C++ 16 bool linear_find(std::vector<int> v, int x) { int i; for (i=0; i<v.size() && v[i]!=x; i++); if (i==v.size()) return false; else return true; } // http://ideone.com/GnW1i // http://ideone.com/RRiXG Prof. Pier Luca Lanzi
    17. 17. Ricerca Binaria di un Elemento • • 17 Supponiamo ora che l’elenco sia ordinato alfabeticamente Esempio: l’elenco del telefono o un dizionario Rossi? A • • • B C ... N ... ... Caso migliore? Quello che cerco è il primo Caso peggiore? Caso medio? Prof. Pier Luca Lanzi ... Z
    18. 18. Codifica in C++ 18 bool binary_find(std::vector<int> v, int x) { int l = -1; int r = v.size(); // l, r are the search // bounds while (l+1 != r) { // Stop when l, r meet int i = (l+r)/2; // Check middle if (x < v[i]) r = i; // Left half if (x == v[i]) return true; // Found it if (x > v[i]) l = i; // Right half } return false; // Search value not in array } // http://ideone.com/fBTUs // http://ideone.com/e3bXr Prof. Pier Luca Lanzi
    19. 19. quale dei due algoritmi ha prestazioni migliori? quali sono le ipotesi di lavoro alla base dei due algoritmi? Prof. Pier Luca Lanzi
    20. 20. perchè studiare gli algoritmi da un punto di vista teorico? Prof. Pier Luca Lanzi
    21. 21. VignettaLuca Computers and Intractability di Garey and Johnson Prof. Pier da Lanzi
    22. 22. VignettaLuca Computers and Intractability di Garey and Johnson Prof. Pier da Lanzi
    23. 23. VignettaLuca Computers and Intractability di Garey and Johnson Prof. Pier da Lanzi
    24. 24. La ricerca binaria è sempre più efficiente? Prof. Pier Luca Lanzi
    25. 25. Gli algoritmi lavorano su dati che vengono organizzati secondo una certa struttura Se la struttura è efficiente allora gli algoritmi sono più efficienti Ogni struttura dati ha costi/benefici Raramente c’è una soluzione che va bene in tutte le situazioni Prof. Pier Luca Lanzi
    26. 26. Limitazioni del Calcolo Sequenziale • • 26 Ci sono diverse ragioni che limitano la costruzione di calcolatori sequenziali sempre più veloci Velocità di trasmissione La velocità di un calcolatore sequenziale dipende dalla velocità di trasferimento dei dati Il limite è la velocità della luce (30 cm/nanosecondo) e i limiti del rame (9 cm/nanosecondo). Velocità superiori richiedono maggiore vicinanza fra le unità che processano l’informazione    • Limiti della miniaturizzazione • Limitazioni economiche Prof. Pier Luca Lanzi
    27. 27. Prestazione degli (uni)Processori Prof. Pier Luca Lanzi 27
    28. 28. Calcolo Parallelo Abbiamo a disposizione più esecutori, possiamo sfruttarli per risolvere problemi molto complessi, velocemente? Due possibili approcci… Prof. Pier Luca Lanzi
    29. 29. (1) diversi esecutori, lavorano su diverse istanze dello stesso problema (2) il problema complesso viene suddiviso in sottoproblemi più semplici diversi esecutori lavorano simultaneamente sui sottoproblemi (in parallelo) identificare i sottoproblemi, coordinare gli esecutori Prof. Pier Luca Lanzi
    30. 30. Calcolo Parallelo 30 • Più processori (risolvono i sottoproblemi) • La rete (collega i processori/risolutori dei sottoproblemi) • • Ambiente per creare e gestire processi paralleli Sistema Operativo Paradigma di programmazione parallela (Message Passing, Data Parallel, ecc.)   Un algoritmo parallelizzabile e l’ implementazione parallela (la scomposizione del problema in sottoproblemi) Prof. Pier Luca Lanzi
    31. 31. Programmazione Parallela • • • • • 31 Decomposizione di un algoritmo in sottoproblemi o dei suoi dati in parti Distribuzione dei sottoproblemi ai processori che li risolvono contemporaneamente (in parallelo) Coordinamento del lavoro e comunicazione fra i processori Considerazioni Quale architettura usiamo? Quale tipo di comunicazione usiamo?   Inizialmente, vedremo il parallelismo in maniera astratta successivamente vedremo uno dei paradigmi di programmazione parallela Prof. Pier Luca Lanzi
    32. 32. Perchè ci Interessa il Calcolo Parallelo? • • • Simulazione e Modellistica Maggiore potenza di calcolo, maggiore l’accuratezza Problemi con grandi quantità di dati Elaborazione immagini/segnali Rendering Data Mining WWW Grand Challenge Modelli climatici Fluidodinamica Genoma umano …          Prof. Pier Luca Lanzi 32
    33. 33. Obiettivo del Corso studio, analisi, sviluppo di algoritmi sequenziali e paralleli e loro implementazione Come risolvere un problema? Quanto costa una soluzione? Si può fare di meglio? Prof. Pier Luca Lanzi
    34. 34. Sequenziale vs Parallelo Se avessi più di un esecutore, potrei risolvere problemi più grandi? Avere più esecutori, richiede spesso un ripensamento dell’algoritmo Trade-off fra complessità di design e guadagno di performance Prof. Pier Luca Lanzi
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×