• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Algoritmi e Calcolo Parallelo 2012/2013 - Calcolo Parallelo
 

Algoritmi e Calcolo Parallelo 2012/2013 - Calcolo Parallelo

on

  • 343 views

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

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

Statistics

Views

Total Views
343
Views on SlideShare
343
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Se cercassimo di sapere se due puntisonoconnessicambierebbe di molto ilproblema?
  • "Algorism is the art by which at present we use those Indian figures, which number two times five."
  • http://ideone.com/GnW1i
  • http://flickr.com/photos/himmelskratzer/1789915635/

Algoritmi e Calcolo Parallelo 2012/2013 - Calcolo Parallelo Algoritmi e Calcolo Parallelo 2012/2013 - Calcolo Parallelo Presentation Transcript

  • 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