SlideShare uma empresa Scribd logo
1 de 34
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 2010

Stanley B. Lippman, Barbara E. Moo, Josee Lajoie
“C++ Primer”, 5th Edition Addison-Wesley

Prof. Pier Luca Lanzi
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?
Quanto tempo per preparalo per cento
persone?
Prof. Pier Luca Lanzi
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
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
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
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
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
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
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
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
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
Che Cosa si Intende per Scalabilità?

Prof. Lanzi corre i 100m in 12s

Prof. Pier Luca Lanzi

14

In quanto corre la maratona?
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
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
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
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
quale dei due algoritmi ha
prestazioni migliori?
quali sono le ipotesi di lavoro
alla base dei due algoritmi?

Prof. Pier Luca Lanzi
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 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
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
Prestazione degli (uni)Processori

Prof. Pier Luca Lanzi

27
Calcolo Parallelo
Abbiamo a disposizione più esecutori,
possiamo sfruttarli per risolvere problemi
molto complessi, velocemente?
Due possibili approcci…

Prof. Pier Luca Lanzi
(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
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
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
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
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
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

Mais conteúdo relacionado

Semelhante a Algoritmi e Calcolo Parallelo 2012/2013 - Calcolo Parallelo

Laboratorio di Informatica - Lezione 2 (Classi V)
Laboratorio di Informatica - Lezione 2 (Classi V)Laboratorio di Informatica - Lezione 2 (Classi V)
Laboratorio di Informatica - Lezione 2 (Classi V)
informaticaOriani
 

Semelhante a Algoritmi e Calcolo Parallelo 2012/2013 - Calcolo Parallelo (20)

Manuale python
Manuale pythonManuale python
Manuale python
 
Coding
CodingCoding
Coding
 
Algoritmi e Calcolo Parallelo 2012/2013 - Tecniche di Analisi
Algoritmi e Calcolo Parallelo 2012/2013 - Tecniche di AnalisiAlgoritmi e Calcolo Parallelo 2012/2013 - Tecniche di Analisi
Algoritmi e Calcolo Parallelo 2012/2013 - Tecniche di Analisi
 
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
 
Laboratorio di Informatica - Lezione 2 (Classi V)
Laboratorio di Informatica - Lezione 2 (Classi V)Laboratorio di Informatica - Lezione 2 (Classi V)
Laboratorio di Informatica - Lezione 2 (Classi V)
 
Web usability - 1 | WebMaster & WebDesigner
Web usability - 1 | WebMaster & WebDesignerWeb usability - 1 | WebMaster & WebDesigner
Web usability - 1 | WebMaster & WebDesigner
 
Asd 00 Introduzione Al Corso
Asd 00 Introduzione Al CorsoAsd 00 Introduzione Al Corso
Asd 00 Introduzione Al Corso
 
Algoritmi e Calcolo Parallelo 2012/2013 - Algoritmi e Strutture Dati
Algoritmi e Calcolo Parallelo 2012/2013 - Algoritmi e Strutture DatiAlgoritmi e Calcolo Parallelo 2012/2013 - Algoritmi e Strutture Dati
Algoritmi e Calcolo Parallelo 2012/2013 - Algoritmi e Strutture Dati
 
Asd 01 Algoritmi E Strutture Dati
Asd 01 Algoritmi E Strutture DatiAsd 01 Algoritmi E Strutture Dati
Asd 01 Algoritmi E Strutture Dati
 
Lab psychopy
Lab psychopyLab psychopy
Lab psychopy
 
01 1 introduzione_a_ges
01 1 introduzione_a_ges01 1 introduzione_a_ges
01 1 introduzione_a_ges
 
Web Usability - 1 | WebMaster & WebDesigner
Web Usability - 1 | WebMaster & WebDesignerWeb Usability - 1 | WebMaster & WebDesigner
Web Usability - 1 | WebMaster & WebDesigner
 
Analizza i tuoi dati con Intelligenza Artificiale
Analizza i tuoi dati con Intelligenza ArtificialeAnalizza i tuoi dati con Intelligenza Artificiale
Analizza i tuoi dati con Intelligenza Artificiale
 
Matematica, un approccio algoritmico
Matematica, un approccio algoritmicoMatematica, un approccio algoritmico
Matematica, un approccio algoritmico
 
"Come è piccolo il mondo" - Seminario: Matematica, un approccio algoritmico
"Come è piccolo il mondo" - Seminario: Matematica, un approccio algoritmico"Come è piccolo il mondo" - Seminario: Matematica, un approccio algoritmico
"Come è piccolo il mondo" - Seminario: Matematica, un approccio algoritmico
 
Progettazione e sviluppo di interfaccia in Natural Language Generation per la...
Progettazione e sviluppo di interfaccia in Natural Language Generation per la...Progettazione e sviluppo di interfaccia in Natural Language Generation per la...
Progettazione e sviluppo di interfaccia in Natural Language Generation per la...
 
Algoritmi e Calcolo Parallelo 2012/2013 - Analisi degli Algoritmi
Algoritmi e Calcolo Parallelo 2012/2013 - Analisi degli AlgoritmiAlgoritmi e Calcolo Parallelo 2012/2013 - Analisi degli Algoritmi
Algoritmi e Calcolo Parallelo 2012/2013 - Analisi degli Algoritmi
 
Le 12 pratiche
Le 12 praticheLe 12 pratiche
Le 12 pratiche
 
Modello Puzzle per l'AppQuiz
Modello Puzzle per l'AppQuizModello Puzzle per l'AppQuiz
Modello Puzzle per l'AppQuiz
 
Intelligenza Artificiale e Chatbot: Limiti Attuali e Sviluppi Futuri
Intelligenza Artificiale e Chatbot: Limiti Attuali e Sviluppi FuturiIntelligenza Artificiale e Chatbot: Limiti Attuali e Sviluppi Futuri
Intelligenza Artificiale e Chatbot: Limiti Attuali e Sviluppi Futuri
 

Mais de Pier Luca Lanzi

Mais de Pier Luca Lanzi (20)

11 Settembre 2021 - Giocare con i Videogiochi
11 Settembre 2021 - Giocare con i Videogiochi11 Settembre 2021 - Giocare con i Videogiochi
11 Settembre 2021 - Giocare con i Videogiochi
 
Breve Viaggio al Centro dei Videogiochi
Breve Viaggio al Centro dei VideogiochiBreve Viaggio al Centro dei Videogiochi
Breve Viaggio al Centro dei Videogiochi
 
Global Game Jam 19 @ POLIMI - Morning Welcome
Global Game Jam 19 @ POLIMI - Morning WelcomeGlobal Game Jam 19 @ POLIMI - Morning Welcome
Global Game Jam 19 @ POLIMI - Morning Welcome
 
Data Driven Game Design @ Campus Party 2018
Data Driven Game Design @ Campus Party 2018Data Driven Game Design @ Campus Party 2018
Data Driven Game Design @ Campus Party 2018
 
GGJ18 al Politecnico di Milano - Presentazione che precede la presentazione d...
GGJ18 al Politecnico di Milano - Presentazione che precede la presentazione d...GGJ18 al Politecnico di Milano - Presentazione che precede la presentazione d...
GGJ18 al Politecnico di Milano - Presentazione che precede la presentazione d...
 
GGJ18 al Politecnico di Milano - Presentazione di apertura
GGJ18 al Politecnico di Milano - Presentazione di aperturaGGJ18 al Politecnico di Milano - Presentazione di apertura
GGJ18 al Politecnico di Milano - Presentazione di apertura
 
Presentation for UNITECH event - January 8, 2018
Presentation for UNITECH event - January 8, 2018Presentation for UNITECH event - January 8, 2018
Presentation for UNITECH event - January 8, 2018
 
DMTM Lecture 20 Data preparation
DMTM Lecture 20 Data preparationDMTM Lecture 20 Data preparation
DMTM Lecture 20 Data preparation
 
DMTM Lecture 19 Data exploration
DMTM Lecture 19 Data explorationDMTM Lecture 19 Data exploration
DMTM Lecture 19 Data exploration
 
DMTM Lecture 18 Graph mining
DMTM Lecture 18 Graph miningDMTM Lecture 18 Graph mining
DMTM Lecture 18 Graph mining
 
DMTM Lecture 17 Text mining
DMTM Lecture 17 Text miningDMTM Lecture 17 Text mining
DMTM Lecture 17 Text mining
 
DMTM Lecture 16 Association rules
DMTM Lecture 16 Association rulesDMTM Lecture 16 Association rules
DMTM Lecture 16 Association rules
 
DMTM Lecture 15 Clustering evaluation
DMTM Lecture 15 Clustering evaluationDMTM Lecture 15 Clustering evaluation
DMTM Lecture 15 Clustering evaluation
 
DMTM Lecture 14 Density based clustering
DMTM Lecture 14 Density based clusteringDMTM Lecture 14 Density based clustering
DMTM Lecture 14 Density based clustering
 
DMTM Lecture 13 Representative based clustering
DMTM Lecture 13 Representative based clusteringDMTM Lecture 13 Representative based clustering
DMTM Lecture 13 Representative based clustering
 
DMTM Lecture 12 Hierarchical clustering
DMTM Lecture 12 Hierarchical clusteringDMTM Lecture 12 Hierarchical clustering
DMTM Lecture 12 Hierarchical clustering
 
DMTM Lecture 11 Clustering
DMTM Lecture 11 ClusteringDMTM Lecture 11 Clustering
DMTM Lecture 11 Clustering
 
DMTM Lecture 10 Classification ensembles
DMTM Lecture 10 Classification ensemblesDMTM Lecture 10 Classification ensembles
DMTM Lecture 10 Classification ensembles
 
DMTM Lecture 09 Other classificationmethods
DMTM Lecture 09 Other classificationmethodsDMTM Lecture 09 Other classificationmethods
DMTM Lecture 09 Other classificationmethods
 
DMTM Lecture 08 Classification rules
DMTM Lecture 08 Classification rulesDMTM Lecture 08 Classification rules
DMTM Lecture 08 Classification rules
 

Último

Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
lorenzodemidio01
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....
giorgiadeascaniis59
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
lorenzodemidio01
 

Último (19)

Lorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxLorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptx
 
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxLorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
 
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxLorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
 
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxLorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
 
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptxProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
 
Aristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxAristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptx
 
Tosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxTosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptx
 
Quadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoQuadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceo
 
Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................
 
Descrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxDescrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptx
 
discorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxdiscorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptx
 
Presentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaPresentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione Civica
 
LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................
 
descrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxdescrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptx
 
Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.
 
Scrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileScrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibile
 

Algoritmi e Calcolo Parallelo 2012/2013 - Calcolo Parallelo

  • 1. Algoritmi Algoritmi e Calcolo Parallelo Prof. Pier Luca Lanzi
  • 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
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Che Cosa si Intende per Scalabilità? Prof. Lanzi corre i 100m in 12s Prof. Pier Luca Lanzi 14 In quanto corre la maratona?
  • 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. 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. 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. 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. quale dei due algoritmi ha prestazioni migliori? quali sono le ipotesi di lavoro alla base dei due algoritmi? Prof. Pier Luca Lanzi
  • 20. perchè studiare gli algoritmi da un punto di vista teorico? Prof. Pier Luca Lanzi
  • 21. VignettaLuca Computers and Intractability di Garey and Johnson Prof. Pier da Lanzi
  • 22. VignettaLuca Computers and Intractability di Garey and Johnson Prof. Pier da Lanzi
  • 23. VignettaLuca Computers and Intractability di Garey and Johnson Prof. Pier da Lanzi
  • 24. La ricerca binaria è sempre più efficiente? Prof. Pier Luca Lanzi
  • 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. 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
  • 28. Calcolo Parallelo Abbiamo a disposizione più esecutori, possiamo sfruttarli per risolvere problemi molto complessi, velocemente? Due possibili approcci… Prof. Pier Luca Lanzi
  • 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. 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. 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. 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. 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. 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

Notas do Editor

  1. Se cercassimo di sapere se due puntisonoconnessicambierebbe di molto ilproblema?
  2. &quot;Algorism is the art by which at present we use those Indian figures, which number two times five.&quot;
  3. http://ideone.com/GnW1i
  4. http://flickr.com/photos/himmelskratzer/1789915635/