Entrambe le parti precedenti la revisioneRevisione precedenteProssima revisione | Revisione precedente |
apd:lezioni0809 [23/04/2009 alle 17:58 (16 anni fa)] – aggiunta lezioni di recupero Massimo Coppola | apd:lezioni0809 [20/04/2010 alle 17:57 (15 anni fa)] (versione attuale) – Massimo Coppola |
---|
* ** Esercitazione: implementare una applicazione basata su pipeline e farm in MPI ** | * ** Esercitazione: implementare una applicazione basata su pipeline e farm in MPI ** |
| |
* **12/03** __MPI: comunicatori e gruppi__ Creazione, modifica e distruzione di gruppi e comunicatori (completamento locale vs globale). Operazioni collettive in MPI: semantica, ordinamento totale, indipendenza dall'implementazione, esempi di implementazione e di stallo. Eccezione: MPI_Barrier.\\ (MPI_Group_size, MPI_Group_rank, MPI_Group_translate_ranks, MPI_Group_compare, MPI_Comm_group, MPI_Group_union, MPI_Group_intersection, MPI_Group_difference, MPI_Group_incl, MPI_Group_excl, MPI_Group_free; MPI_Comm_size, MPI_Comm_rank, MPI_Comm_compare, MPI_Comm_dup) | * **12/03** __MPI: comunicatori e gruppi__ \\ Creazione, modifica e distruzione di gruppi e comunicatori (completamento locale vs globale). Operazioni collettive in MPI: semantica, ordinamento totale, indipendenza dall'implementazione, esempi di implementazione e di stallo. Eccezione: MPI_Barrier.\\ (MPI_Group_size, MPI_Group_rank, MPI_Group_translate_ranks, MPI_Group_compare, MPI_Comm_group, MPI_Group_union, MPI_Group_intersection, MPI_Group_difference, MPI_Group_incl, MPI_Group_excl, MPI_Group_free; MPI_Comm_size, MPI_Comm_rank, MPI_Comm_compare, MPI_Comm_dup) |
| |
^Rif. | MPI standard 2.1 sezioni 6 -> 6.2, 6.3.1, 6.3.2 (parte), 6.3.3, 6.4.1, 6.4.2 (parte), 6.4.3, 5.1 | | ^Rif. | MPI standard 2.1 sezioni 6 -> 6.2, 6.3.1, 6.3.2 (parte), 6.3.3, 6.4.1, 6.4.2 (parte), 6.4.3, 5.1 | |
| |
* **13/03** __MPI: operazioni collettive__ Significato, semantica non sincronizzante, ordinamento dei messaggi. Collettive per intra-comunicatori. MPI_Barrier, MPI_Broadcast, MPI_Gather, MPI_Scatter, MPI_Gatherv, MPI_Scatterv, MPI_Allgather, MPI_Allgatherv, MPI_Alltoall, MPI_Alltoallv, MPI_Alltoallw | * **13/03** __MPI: operazioni collettive__ \\ Significato, semantica non sincronizzante, ordinamento dei messaggi. Collettive per intra-comunicatori. MPI_Barrier, MPI_Broadcast, MPI_Gather, MPI_Scatter, MPI_Gatherv, MPI_Scatterv, MPI_Allgather, MPI_Allgatherv, MPI_Alltoall, MPI_Alltoallv, MPI_Alltoallw |
| |
^Rif. | MPI standard 2.1 sezioni 5 -> 5.2 (non 5.2.2), 5.3 - 5.8 | | ^Rif. | MPI standard 2.1 sezioni 5 -> 5.2 (non 5.2.2), 5.3 - 5.8 | |
| |
* **19/03** __MPI: operazioni collettive__ Collettive con comunicazione e calcolo: reduce e parallel prefix. Operatori predefiniti; Minloc e Maxloc. Definizione di operatori utente. Primitive MPI: MPI_Reduce e MPI_Allreduce, MPI_Reduce_scatter, MPI_Scan | * **19/03** __MPI: operazioni collettive__ \\ Collettive con comunicazione e calcolo: reduce e parallel prefix. Operatori predefiniti; Minloc e Maxloc. Definizione di operatori utente. Primitive MPI: MPI_Reduce e MPI_Allreduce, MPI_Reduce_scatter, MPI_Scan |
| |
^Rif. | MPI standard 2.1 sezioni 5.9 - 5.12 (non 5.11.2)| | ^Rif. | MPI standard 2.1 sezioni 5.9 - 5.12 (non 5.11.2)| |
| |
* **20/03** __Esempi di applicazioni__ Sample sort parallelo. Algoritmo di Strassen. Calcolo dell'insieme di Mandelbrot (cenni); algoritmo K-means e sua parallelizzazione elementare. | * **20/03** __Esempi di applicazioni__ \\ Sample sort parallelo. Algoritmo di Strassen. Calcolo dell'insieme di Mandelbrot (cenni); algoritmo K-means e sua parallelizzazione elementare. |
| |
^Rif. | [[http://www.di.unipi.it/~coppola/didattica/ccp0506/papers/Kumar-textbook-samplesort.pdf|Sample sort parallelo]] | dal testo //Introduction to Parallel Computing// A. Grama, A. Gupta, G. Karypis, V. Kumar. | | ^Rif. | [[http://www.di.unipi.it/~coppola/didattica/ccp0506/papers/Kumar-textbook-samplesort.pdf|Sample sort parallelo]] | dal testo //Introduction to Parallel Computing// A. Grama, A. Gupta, G. Karypis, V. Kumar. | |
==== Programmazione a skeleton paralleli, ASSIST ==== | ==== Programmazione a skeleton paralleli, ASSIST ==== |
| |
* **17/04** __Skeleton Paralleli e Programmazione Parallela Strutturata__ Richiami agli skeleton paralleli, caratteristiche dei linguaggi/ambienti di programmazione a skeleton. Discussione sulle fondamentali per l'espressività e l'implementazione (linguaggi funzionali/imperativi; approccio procedurale/oggetti/componenti; gradi di separazione degli aspetti parallelo e sequenziale del programma; supporto su macchine virtuali JVM, mono/.NET). Sistemi a skeleton di seconda generazione. \\ Due alternative di implementazione: template e data-flow. Muskel, approccio macro-dataflow, strategia di compilazione ed esecuzione, estendibilità dell'insieme di skeleton, possibilità di implementazione di token repository distribuiti. \\ ASSIST : obiettivi, approccio a linguaggio di coordinamento parallelo + linguaggi sequenziali ospiti; compilazione e meta-compilazione. | * **17/04** __Skeleton Paralleli e Programmazione Parallela Strutturata__ \\ Richiami agli skeleton paralleli, caratteristiche dei linguaggi/ambienti di programmazione a skeleton. Discussione sulle fondamentali per l'espressività e l'implementazione (linguaggi funzionali/imperativi; approccio procedurale/oggetti/componenti; gradi di separazione degli aspetti parallelo e sequenziale del programma; supporto su macchine virtuali JVM, mono/.NET). Sistemi a skeleton di seconda generazione. \\ Due alternative di implementazione: template e data-flow. Muskel, approccio macro-dataflow, strategia di compilazione ed esecuzione, estendibilità dell'insieme di skeleton, possibilità di implementazione di token repository distribuiti. \\ ASSIST : obiettivi, approccio a linguaggio di coordinamento parallelo + linguaggi sequenziali ospiti; compilazione e meta-compilazione. |
| |
^ Rif. | [[http://homepages.inf.ed.ac.uk/mic/Pubs/manifesto.pdf|Bringing]] -- M. Cole, //Bringing skeletons out of the closet: a pragmatic manifesto for skeletal parallel programming//, Parallel Computing 30 (2004) 389–406| | ^ Rif. | [[http://homepages.inf.ed.ac.uk/mic/Pubs/manifesto.pdf|Bringing]] -- M. Cole, //Bringing skeletons out of the closet: a pragmatic manifesto for skeletal parallel programming//, Parallel Computing 30 (2004) 389–406| |
| |
| |
* **23/04** //(preliminare)// \\ //ASSIST : semantica essenziale.// ASSIST: approccio a moduli paralleli e canali, con parallel skeleton “generico” configurabile. Grafo di moduli di programma non ristretto: cicli e archi multipli. Panoramica della semantica base del parmod : sezioni di ingresso e uscita con guardie, distribuzioni e collezioni, set di processori virtuali. Composizione di costrutti paralleli e livelli di annidamento, collegamento a formalismi a componenti. Approccio a linguaggio di coordinamento: meccanismo di compilazione a due fasi, integrazione di linguaggi sequenziali diversi in compilazione. Blocchi fondamentali: moduli sequenziali e proc. Parmod, esempi: input e output section; topologia (array, none, one) e concetto di processore virtuale (VP); distribuzioni (broadcast, on demand, scatter) e collezioni (from any, from all); parallelismo task-parallel (topologia none) e data-parallel (topologia array), definizioni dei VP associate. | * **23/04** __ASSIST : panoramica e semantica essenziale__ \\ Evoluzione dell'approccio parallelo strutturato legata alle griglie ed all'adattività: da P3L, a SkIE, ad ASSIST. Semantica funzionale pura, skeleton rigidi. Processo di compilazione due fasi, uso di compilatori convenzionali (gcc) come back-end e/o librerie (MPI) per il supporto al parallelismo. ASSIST: approccio a moduli paralleli e canali, con parallel skeleton “generico” configurabile. Grafo di moduli di programma non ristretto: cicli e archi multipli. Concetto di parmod come skeleton "configurabile" (meta-skeleton). Meccanismo di compilazione a due fasi e integrazione di linguaggi sequenziali diversi in compilazione. Blocchi fondamentali: moduli sequenziali e proc. Implementazione delle interfacce tra linguaggi, uso del sistema di tipi CORBA in ASSIST. |
| |
^ Rif. | [[http://www2.computer.org/portal/web/computingnow/0409/whatsnew/cise|Un articolo recente da Computing Now]]| Joel Falcou //Parallel Programming with Skeletons// | | ^ Rif. | [[http://www2.computer.org/portal/web/computingnow/0409/whatsnew/cise|Un articolo recente da Computing Now]]| Joel Falcou //Parallel Programming with Skeletons// | |
| |
* **24/04** //(preliminare)// \\ //ASSIST: Processori Virtuali e Deployment// Struttura dell'applicazione multi architettura come albero di directory; metadati di descrizione dell'applicazione, elementi del linguaggio ALDL; processi, attributi dei processi (vincoli hardware e software), vincoli collettivi (coallocazione), esistenza di vincoli specifici di ASSIST. Server di deployment: GEA, accenni alle versioni precedenti, confronto con i caricatori MPI; obiettivi (generalità, portabilità, eterogeneità dei supporti) e schema base (parse/query/filter/map/deploy); cenni di deployment tramite middleware di griglia. | * **24/04, 28/04** //(preliminare per le due lezioni)// \\ //ASSIST: // Panoramica della semantica base del parmod : sezioni di ingresso e uscita con guardie, distribuzioni e collezioni, set di processori virtuali. Composizione di costrutti paralleli e livelli di annidamento, collegamento a formalismi a componenti. Parmod, esempi: input e output section; topologia (array, none, one) e concetto di processore virtuale (VP); distribuzioni (broadcast, on demand, scatter) e collezioni (from any, from all); parallelismo task-parallel (topologia none) e data-parallel (topologia array), definizioni dei VP associate. Processori Virtuali e Deployment. Struttura dell'applicazione multi architettura come albero di directory; metadati di descrizione dell'applicazione, elementi del linguaggio ALDL; processi, attributi dei processi (vincoli hardware e software), vincoli collettivi (coallocazione), esistenza di vincoli specifici di ASSIST. Server di deployment: GEA, accenni alle versioni precedenti, confronto con i caricatori MPI; obiettivi (generalità, portabilità, eterogeneità dei supporti) e schema base (parse/query/filter/map/deploy); cenni di deployment tramite middleware di griglia. |
* **30/04** //(preliminare)// \\ //Esempi di programmazione in ASSIST// | * **30/04** //(preliminare)// \\ //Esempi di programmazione in ASSIST// |
| |
| * **05/05** |
| |
| * **08/05** //Data Mining Parallelo : componenti algoritmiche, regole di associazione, classificazione, clustering// |
| * **14/05** |
==== Sistemi operativi distribuiti, Grid e Cloud ==== | ==== Sistemi operativi distribuiti, Grid e Cloud ==== |
| * **15/05** Sistemi operativi distribuiti e di griglia. Il progetto XtreemOS |
| * **19/05** Il progetto XtreemOS (2) |
| * **21/05** |
| * **22/05** |
| |
| |
==== Parallelismo su chip: CPU multi-core e GPU computing ==== | ==== Parallelismo su chip: CPU multi-core e GPU computing ==== |
| |
---- | ---- |
==== Elenco delle lezioni previste ancora da effettuarsi==== | ==== Elenco delle lezioni previste ancora da effettuarsi ==== |
| |
I giorni 26 e 27/3 __NON__ ci sarà lezione. | I giorni 26 e 27/3 __NON__ ci sarà lezione. |
* <del>02/04</del> | * <del>02/04</del> <del>16/04</del> <del>07/05</del> |
* <del>**16/04**</del> | |
| |
* **28/04** | |
* **30/04** | |
* **05/05** | |
* **07/05** | |
* **08/05** | |
* **14/05** | |
* **15/05** | |
* **19/05** | |
* **21/05** | |
* **22/05** | |