Strumenti Utente

Strumenti Sito


ccp:lezioni0708

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisione Revisione precedente
Prossima revisione
Revisione precedente
Ultima revisione Entrambe le parti successive la revisione
ccp:lezioni0708 [16/03/2008 alle 22:48 (16 anni fa)]
Massimo Coppola
ccp:lezioni0708 [29/05/2008 alle 08:48 (16 anni fa)]
Massimo Coppola altri link aggiunti
Linea 13: Linea 13:
   * **3/03** __MPI operazioni collettive e operatori MPI__ \\ Primitive collettive Reduce, ReduceAll. Operatori MPI predefiniti, operatori utente, loro definizione ed applicazione, polimorfismo e meccanismi per la gestione dei datatype. Operazione di scan (parallel prefix). Varianti della semantica delle comunicazione: approfondimento su send sincrona e buffered. Ready-send ed esempio di utilizzo: emettitore di un farm. Operazioni di comunicazione incomplete (receive e varianti della send); meccanismo delle ''MPI_request''. Controllo delle comunicazioni in sospeso e primitive ''WAIT'' e ''TEST''. Varianti multiple ''WAIT_ANY'', ''TEST_ANY'', ''WAIT_ALL'', ''TEST_ALL''. Primitive ''CANCEL'' e ''MPI_FREE_REQUEST''. Introduzione al controllo del nondeterminismo ed alle primitive ''MPI_WAIT_SOME'' ed ''MPI_TEST_SOME''.   * **3/03** __MPI operazioni collettive e operatori MPI__ \\ Primitive collettive Reduce, ReduceAll. Operatori MPI predefiniti, operatori utente, loro definizione ed applicazione, polimorfismo e meccanismi per la gestione dei datatype. Operazione di scan (parallel prefix). Varianti della semantica delle comunicazione: approfondimento su send sincrona e buffered. Ready-send ed esempio di utilizzo: emettitore di un farm. Operazioni di comunicazione incomplete (receive e varianti della send); meccanismo delle ''MPI_request''. Controllo delle comunicazioni in sospeso e primitive ''WAIT'' e ''TEST''. Varianti multiple ''WAIT_ANY'', ''TEST_ANY'', ''WAIT_ALL'', ''TEST_ALL''. Primitive ''CANCEL'' e ''MPI_FREE_REQUEST''. Introduzione al controllo del nondeterminismo ed alle primitive ''MPI_WAIT_SOME'' ed ''MPI_TEST_SOME''.
   * **6/03** __MPI - primitive incomplete e persistenti e controllo del nondeterminismo__ \\ ''MPI_TEST_SOME'', ''MPI_WAIT_ALL''. Operazioni persistenti, semantica, ''MPI_START'' e ''MPI_STARTALL''. MPI_request attive e non attive relazione con le varianti di ''MPI_WAIT'' ed ''MPI_TEST'', e con la ''MPI_CANCEL''. Implementazione di meccanismi di comunicazione a canali tramite MPI, differenze nella semantica. Esempi con il linguaggio LC: implementazione del canale, delle primitive sincrone ed asincrone (via buffered send e processo buffer), del comando alternativo (variante con send incomplete e permanenti, ''MPI_TEST_SOME'').   * **6/03** __MPI - primitive incomplete e persistenti e controllo del nondeterminismo__ \\ ''MPI_TEST_SOME'', ''MPI_WAIT_ALL''. Operazioni persistenti, semantica, ''MPI_START'' e ''MPI_STARTALL''. MPI_request attive e non attive relazione con le varianti di ''MPI_WAIT'' ed ''MPI_TEST'', e con la ''MPI_CANCEL''. Implementazione di meccanismi di comunicazione a canali tramite MPI, differenze nella semantica. Esempi con il linguaggio LC: implementazione del canale, delle primitive sincrone ed asincrone (via buffered send e processo buffer), del comando alternativo (variante con send incomplete e permanenti, ''MPI_TEST_SOME'').
 +==== Programmazione a skeleton paralleli, ASSIST ====
   * **10/03** __Applicazioni; skeleton e programmazione parallela__ \\ Costrutto //farm// in MPI, varianti di implementazione, uso di comunicatori e struttura del programma SPMD. Uso di comunicatori per strutturare programmi più complessi (annidamento di forme di parallelismo) mantenendo la portabilità del codice.  Un benchmark "classico", il calcolo dell'insieme di Mandelbrot: proprietà matematiche, parallelismo e bilanciamento del carico. Introduzione ai Parallel Skeletons e formalismi di programmazione parallela strutturata.   * **10/03** __Applicazioni; skeleton e programmazione parallela__ \\ Costrutto //farm// in MPI, varianti di implementazione, uso di comunicatori e struttura del programma SPMD. Uso di comunicatori per strutturare programmi più complessi (annidamento di forme di parallelismo) mantenendo la portabilità del codice.  Un benchmark "classico", il calcolo dell'insieme di Mandelbrot: proprietà matematiche, parallelismo e bilanciamento del carico. Introduzione ai Parallel Skeletons e formalismi di programmazione parallela strutturata.
-  * **13/03** __Parallel Skeletons __ +  * **13/03** __Parallel Skeletons __ \\ Breve storia della programmazione parallela strutturata. Parallel skeletons di Cole, applicabilità a vari modelli di programmazione (funzionale, imperativo) di esecuzione (completamente compilato, a libreria di template, interpretato, a macchina virtuale) e di supporto del parallelismo (a template, macro-dataflow, via librerie di supporto standard come MPI). \\ Brevi cenni a vari gruppi di ricerca e sistemi: SCL/Fortran S, Skipper, BMF, Skil, Muesli. La ricerca a Pisa: P3L, SkiE, ASSIST; Lithium e Muskel. 
-  * **17/03** __ __ + 
-  * **20/03** __ __+| [[http://|aggiungere riferimenti]] | 
 + 
 +  * **17/03** __Sistemi a Skeleton di prima e seconda generazione: Muskel, ASSIST__ \\ Processo di compilazione di meccanismi a skeleton / template in reti di processi, //a la// P3L / SkIE. Ottimizzazioni a livello degli skeleton: composizione di skeleton, valutazione delle composizioni e regole di riscrittura;  forma normale di composizioni farm/pipeline. Ottimizzazione statica e dinamica. Cenni alle ottimizzazioni a livello di template. Cenni all'aspect programming ed aspetti individuabili: parallelismo, gestione di dinamicità, sicurezza, fault tolerance. Integrazione del codice utente e del codice di supporto, tramite linker o tramite bytecode e macchine virtuali. \\ Parallel skeleton di seconda generazione. Muskel, approccio macro-dataflow, strategia di compilazione ed esecuzione, estendibilità dell'insieme di skeleton. Accenni agli esperimenti sulla dinamicità e la fault tolerance, possibilità di implementazione di toke repository distribuiti. \\ 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.  
 + 
 +| ** Tutorial di ASSIST ** | 
 +| {{ccp:tutorial_assist_03_2007.pdf|Tutorial ASSIST Febbraio 2007}} | 
 +| {{:ccp:descrizioneloader1.1.pdf| GEA, versione Novembre 2006}} | 
 +| {{:ccp:assisttutorial_02_2008.pdf|Tutorial ASSIST Febbraio 2008}} |  
 + 
 +  * **20/03** __ASSIST : semantica essenziale__ \\ 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.
   * **27/03** //non ci sarà lezione//   * **27/03** //non ci sarà lezione//
-  * **7/04** __ __ +  * **7/04** __ASSIST: Processori Virtuali e Deployment__ \\ 
-  * **10/04** __ __ +  * **10/04** __Modelli astratti di calcolo parallelo ed in memoria secondaria__ \\ La PRAM (Parallel Random Access Machine). Assunzioni (parallelismo e memoria illimitati, sincronia, scalabilità); scopo del modello e varianti standard (EREW, CREW, CRCW e regole di risoluzione dei conflitti). Modelli di calcolo per memoria secondaria. Il PDM (Parallel Disk Model). Struttura essenziale, parametri M,B,N,Z e derivati m=(M/B), n=(N/B), z=(Z/B). Misura di complessità orientata ai blocchi, algoritmi base e loro complessità. Effetto pratico dei termini logaritmici a base elevata (M/B) nella complessità algoritmica.   
-  * **14/04** __ __ +  * **17/04** //lezione annullata// 
-  * **17/04** __ __ +  * **21/04** __Modelli astratti di calcolo parallelo e in memoria secondaria__ \\ PRAM, esempi di algoritmi, complessità in processori e tempo, work ed efficienza. Aumento di efficienza con riduzione del numero di processori (esempio di riduzione logaritmica). Modello PDM, complessità di operazioni di permutazione e sort, relazione con il modello BSP. 
-  * **21/04** __ __ +  * **24/04** __Modelli di calcolo Bulk - Synchronous__ \\ Modelli coarse parallel (o bulk-synchronous). Modello BSP, schema e parametri, valutazione del costo algoritmico. Bridging models: Cenni a CGM e LogP. Realisticità del modello BSP, cenni alle estensioni: BSP*, D-BSP. Implementabilità, cenni a BSPlib. Cenni all'uso di modelli BSP-like per la valutazione del costo di skeleton paralleli [Tesi di dottorato di Andrea Zavanella]. Cenni alla possibilità di simulazione efficiente in memoria esterna di algoritmi BSP-* (vedi riferimenti su  M.Coppola, M.Schmollinger //"Hierarchical Models and Software Tools for Parallel Programming"// LNCS 2625, cap 15 ). 
-  * **24/04** __ __ + 
-  * **28/04** __ __ +| [[http://portal.acm.org/citation.cfm?id=79181|Articolo di Valiant sui Parallel Bridging Models]] | 
-  * **5/05** __ __ +| [[http://www.acm.org/pubs/citations/journals/surveys/1996-28-4es/a208-cormen/|Link al position paper di T.H.Cormen]] | 
-  * **8/05** __ __ +| [[http://www.cs.dartmouth.edu/~thc/papers.html|Pagina degli articoli di Cormen]]. | 
-  * **12/05** __ __ +| [[http://www.springerlink.com/content/0wpxd6j3l63w/ |LNCS 2625, cap 15]] | 
-  * **15/05** __ __ +  
-  * **19/05** __ __ + 
-  * **22/05** __ __ +  * **29/04** __Memorie Condivise Distribuite__ \\ Concetto di DSM (distributed shared memory). [** capitolo 9 del libro, escluso 9.6.3 **] \\ Vantaggi e svantaggi (portabilità, prestazioni, scalabilità). Modelli di consistenza (weak, strict / sequential), unità di coerenza (pagine, variabili, oggetti), livello dei meccanismi di implementazione (hardware, sistema operativo, libreria, linguaggio di programmazione). Problema del false sharing. Eager and lazy release consistency (associata alle operazioni), entry consistency (data dalla struttura dei dati), scope consistency (data dalla struttura del programma). [Tesi Dottorato Marco Aldinucci , Capitolo 3] \\ Implementazione su meccanismi (hw/sw) di tipo message passing. Supporto ad hardware, supporto tramite librerie, supporto tramite thread/ processi serventi. Uso del supporto DSM in Assist: libreria smReference per l'interfacciamento ad una DVSM. Astrazione esposta, modello di consistenza esplicita, suo uso da ASSIST.  Primitive, confronto tra due implementazioni: la DSM DVSA, il supporto DSM AdHoc. Impatto sulla gestione di strutture dati dinamiche, sulla dimensione dello spazio condiviso, sulla riconfigurabilità dinamica dell'insieme di nodi che supportano l'astrazione DSM. Strutture dati in memoria condivisa ed algoritmi out-of core; esempio: implementazione di Shared Tree in SkIE / ASSIST. 
-  * **26/05** __ __+  * **5/05** // lezione annullata // 
 +  * **8/05** __Introduzione al Data Mining__ 
 +  * **12/05** __Clustering Parallelo : K-means__  
 + 
 +| [[http://www.di.unipi.it/~coppola/didattica/ccp0506/papers/dhillon-modha-corretto_parkmeans.ps|Dhillon, Modha Technical Report su K-means parallelo]] | A Data-Clustering Algorithm On Distributed Memory Multiprocessors. I.S. Dhillon, D.S.Modha, LNAI 1759, pag 245. **Nota:** la versione disponibile online via LNCS riporta un algoritmo errato, il technical report è corretto. | 
 +| [[http://www.di.unipi.it/~coppola/didattica/ccp0506/papers/i0871.pdf|Ottimizzazioni sequenziali e parallele per K-means]] | Large-Scale Parallel Data Clustering. Dan Judd, Philip K. Mckinley, Anil K. Jain. Ieee Transaction On Pattern Analysis And Machine Intelligence, Vo. 20, No. 8 August 1998. | 
 + 
 +  * **15/05** __Context-aware High Performance Computing__ 
 + 
 +| {{:ccp:seminario_insyeme.pdf| Lucidi sul progetto InSyEme }} | Prima versione delle slide in pdf; N.B. le animazioni non si vedono correttamente. | 
 + 
 +  * **19/05** __Multi-core CPUs__ 
 + 
 +| [[http://download.intel.com/design/network/ProdBrf/27905302.pdf|Intel IXP 2400]]| Documentazione dal sito Intel | 
 +| [[|IBM Cell]]| 
 +| [[http://doi.ieeecomputersociety.org/10.1109/MM.2006.49| Articolo sul Cell ]]| Kistler, Perrone, Petrini, IEEE Micro May/June 2006 (Vol. 26, No. 3) "Cell Multiprocessor Communication Network: Built for Speed"
 + 
 +  * **22/05** __GPU programming__ 
 + 
 +| | GPU Programming GEMS 2, fotocopie distribuite a lezione| 
 + 
 +  * **26/05** __Data Mining : Parallel Tree Induction__
   * **29/05** __ __   * **29/05** __ __
  
  
ccp/lezioni0708.txt · Ultima modifica: 29/05/2008 alle 09:03 (16 anni fa) da Massimo Coppola