Strumenti Utente

Strumenti Sito


ccp:lezioni0607

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
ccp:lezioni0607 [23/04/2007 alle 16:51 (17 anni fa)]
Massimo Coppola
ccp:lezioni0607 [21/05/2007 alle 08:30 (17 anni fa)] (versione attuale)
Massimo Coppola aggiornamento lezione 16-5
Linea 1: Linea 1:
 ====== CCP 06-07: elenco delle lezioni ====== ====== CCP 06-07: elenco delle lezioni ======
-La struttura del corso e' abbastanza naturalmente suddivisa in piu' moduli, ma i rimandi ed i collegamenti tra di essi sono essenziali. Gli esempi di problemi da parallelizzare sono suddivisi tra i vari moduli del corso.+La struttura del corso e' abbastanza naturalmente suddivisa in piu' moduli, ma i rimandi ed i collegamenti tra di essi sono essenziali. <del>Gli esempi di problemi da parallelizzare sono suddivisi tra i vari moduli del corso.</del> Diversamente da quanto pianificato all'inizio del corso, per anticipare la descrizione dell'ambiente di programmazione ASSIST gli spunti di ricerca ed i problemi obiettivo di parallelizzazione sono stati concentrati, per la maggior parte, nel terzo modulo del corso.
  
 ==== MPI : Message Passing Interface ==== ==== MPI : Message Passing Interface ====
Linea 21: Linea 21:
   * **11/04** __ASSIST: esecuzione delle applicazioni__\\ 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;    * **11/04** __ASSIST: esecuzione delle applicazioni__\\ 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; 
   * **16/04** __ASSIST: supporto alla memoria virtuale condivisa__\\ Concetto di distributed virtual shared memory (DVSM) [capitolo 9 del libro]. Vantaggi e svantaggi (protabilità, 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). Eager and lazy release consistency (associata alle operazioni), entry consistency (data dalla struttura dei dati), scope consistency (data dalla struttura del programma). Libreria smReference di interfacciamento ad una DVSM, modello di consistenza esplicita, suo uso da ASSIST.   * **16/04** __ASSIST: supporto alla memoria virtuale condivisa__\\ Concetto di distributed virtual shared memory (DVSM) [capitolo 9 del libro]. Vantaggi e svantaggi (protabilità, 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). Eager and lazy release consistency (associata alle operazioni), entry consistency (data dalla struttura dei dati), scope consistency (data dalla struttura del programma). Libreria smReference di interfacciamento ad una DVSM, modello di consistenza esplicita, suo uso da ASSIST.
 +  * **18/04** __Libreria smReference__ \\ Modello di memoria (separazione dello spazio condiviso da quello locale), modello di accesso ai dati (handle come oggetti opachi che puntano a segmenti condivisi, allocazione esplicita e dinamica, segmenti di dimensioni non limitate dallo spazio di memoria fisica/virtuale). Condivisione regolata dalla struttura dei programmi. Primitive base (REF_New, REF_Delete, REF_Read, REF_Write), con displacement (REF_D_Read, REF_D_Write) e per la condivisione via locking (REF_Lock, REF_Unlock). Cenni di implementazione sui supporti DVSA e adHOC. Esempio di implementazione di strutture dati complesse in memoria condivisa come classi C++ (Shared_Tree) e cenni alle memorie condivise orientate agli oggetti.
  
 ====Problemi, ambienti di programmazione, strumenti teorici==== ====Problemi, ambienti di programmazione, strumenti teorici====
 Questa parte del programma e' dedicata all'analisi di strumenti teorici, problemi specifici e ambienti di programmazione parallela. Il programma e' suscettibile di modifiche. Questa parte del programma e' dedicata all'analisi di strumenti teorici, problemi specifici e ambienti di programmazione parallela. Il programma e' suscettibile di modifiche.
-  * **18/04** __ __ + 
-  * **23/04** __Modelli algoritmici paralleli__ \\ Modelli astratti di calcolo parallelo. Il modello PRAM, caratteristiche fondamentali (programma comune, meoria a registri + memoria comune, sincronia dell'esecuzione).  Operazioni elementari, HALT, FORK. Modelli di conflitto in lettura e scrittura (EREW, cenni a CREW, CRCW e sottovarianti). Esempio di programma elementare (somma parallela), concetto di complessità parallela in tempo e numero di processori, concetto di Work, work-optimality e relazione con l'efficienza. Esempio di riduzione (logaritmicadel numero di processori tramite utilizzo dell'algoritmo sequenziale su sottoinsiemi, che porta all'algoritmo work-optimal generale per riduzioni con operazioni associative. Cenni alla complessità e work-optimality di alcuni algoritmi comuni.  Implementabilità del modello (assunzioni non realistiche, cenni all'emulazione su architetture reali), validità dei risultati di non work-optimality, impossibilità di superlinearità sul modello teorico. Cenni ad altri modelli paralleli (modelli circuitali, modelli con topologia di comunicazione assegnata).\\ Modelli a parallelismo discreto: cenni ai coarse grain models [Valiant] e cenni ai parallel bridging models [Cormen]. Modello BSP, schema e parametri, valutazione del costo algoritmico. Realisticità del modello, cenni alle estensioni. Cenni a CGM e LogP. Implementabilità, cenni a BSPlib. +  * **23/04** __Modelli algoritmici paralleli__ \\ Modelli astratti di calcolo parallelo. Il modello PRAM, caratteristiche fondamentali (programma comune, meoria a registri + memoria comune, sincronia dell'esecuzione).  Operazioni elementari, HALT, FORK. Modelli di conflitto in lettura e scrittura (EREW, cenni a CREW, CRCW e sottovarianti). Esempio di programma elementare (somma parallela), concetto di complessità parallela in tempo e numero di processori, concetto di Work, work-optimality e relazione con l'efficienza. Riduzione logaritmica del numero di processori (lemma di Brent) con l'uso dell'algoritmo sequenziale su sottoinsiemi (algoritmo work-optimal generale per riduzioni con operazioni associative). Cenni alla complessità e work-optimality di alcuni algoritmi comuni.  Implementabilità del modello (assunzioni non realistiche, cenni all'emulazione su architetture reali), validità dei risultati di non work-optimality, impossibilità di superlinearità sul modello teorico. Cenni ad altri modelli paralleli (modelli circuitali, modelli con topologia di comunicazione assegnata).\\ Modelli a parallelismo discreto: cenni ai coarse grain models e cenni ai parallel bridging models [[http://portal.acm.org/citation.cfm?id=79181|Articolo di Valiant sui Parallel Bridging Models]] [[http://www.acm.org/pubs/citations/journals/surveys/1996-28-4es/a208-cormen/|Link al position paper di T.H.Cormen]] [[http://www.cs.dartmouth.edu/~thc/papers.html|Pagina degli articoli di Cormen]]. Modello BSP, schema e parametri, valutazione del costo algoritmico. Realisticità del modello, cenni alle estensioni. Cenni a CGM e LogP. Implementabilità, cenni a BSPlib. 
-  * **2/05** __ __ +  * **2/05** __Modelli algoritmici per memoria secondaria / gerarchie di memoria__ \\ Panoramica generale dei collegamenti tra modelli paralleli fine grain (PRAM), coarse-grain o bulk parallel (BSP, GCM, LogP, QSM), modelli per memoria esterna (PDM ed altri) e Parallel Bridging Model. Cenni a problemi memory-intensive su piattaforme parallele (indicizzazione per web search, bioinformatica, data mining, streaming multimediale). \\ Modelli di calcolo per memoria esterna; motivazioni pratiche, forte gap di prestazioni tra i livelli di memoria (p.es. latenza disco vs RAM : circa 10^6), necessità di misure di costo algoritmico realistiche per problemi I/O intensive, inadeguatezza dell'approccio a memoria virtuale per pattern arbitrari di accesso ai dati. Modello PDM; definizione, parametri, operazioni sui blocchi, modello di costo come numero di I/O; distinzione tra problemi batch/online; complessità delle operazioni fondamentali (scan, sort) e conseguenze (log -> quasi costante nella pratica, permutazione generale e sort sono equivalenti); cenni agli effetti dello striping su dischi multipli (P=1, D>1). Uso prevalente del modello PDM con P=1. Analogia tra PDM con P>1 e BSP. Cenni a BSP* e D-BSP.\\ Riferimenti: survey di J.S.Vitter //"External Memory Algorithms and Data Structures: Dealing with MASSIVE DATA"//, ACM Computing Survey 33(2), vedi link sulla vecchia pagina del corso [[http://www.di.unipi.it/~coppola/didattica/ccp0506/index.html|Pagina CCP 05/06]]; M.Coppola, M.Schmollinger //"Hierarchical Models and Software Tools for Parallel Programming"// [[http://www.springerlink.com/content/0wpxd6j3l63w/ |LNCS 2625, cap 15]] \\ Cenni ad ambienti di programmazione basati sul modello PDM: TPIE, VIC*, FG. 
-  * **7/05** __ __ +  * **7/05** __Ambienti di programmazione per memoria esterna__\\ Confronto tra tre sistemi diversi per astrazione fornita, metodologia di implementazione (run-time, compilatore, libreria), tipo di problemi e piattaforma di esecuzione. TPIE; modello di programmazione concreto derivato da PDM, implementazione ad alto livello. VIC*. FG come approccio che unisce parallelismo e gestione della memoria esterna; parallelismo pipeline/Dag, concetto di buffer gestito dal supporto, thumbnail come puntatore e meccanismo di controllo del trasferimento dati. Moduli funzionali e replicazione automatica (farm implicito). Confronto con l'approccio ASSIST in termini di espressività e complessità del supporto dell'ambiente. \\ Modelli derivati dal BSP con costo di comunicazione più realistico: modello BSP*, concetto di critical block size, misura del costo in termini del numero di blocchi scambiati. Modello D-BSP, parametri di costo G(n) e L(n) funzioni della dimensione della (sotto)macchina e decomponibilità in insiemi di processi indipendenti. Cenni alla simulabilità in memoria esterna del BSP-*, ed al modello EdD-BSP (decomponibilità associata a skeleton).  
-  * **9/05** __ __ +  * <del>**9/05** Lezione cancellata</del>
-  * **14/05** __ __ +  * **11/05** __Data Mining Parallelo - Parallelizzazione dell'algoritmo DBSCAN__ \\ Metodo di clustering per densità. Approccio, problemi per //dataset// e //spazi// di dimensioni elevate. Strutture dati per indicizzazione spaziale: gli R-tree come classe di strutture efficienti, struttura generale ed operazioni base, lo R*-tree, proprietà specifiche. Il concetto di range e neighborhood query. Utilizzo nell'algoritmo DBSCAN: algoritmo sequenziale; procedura ExpandCluster; complessità; costo computazionale in pratica. Cenni alle parallelizazioni basate sul partizionamento del dataset (pDBSCAN), sull'esplorazione in parallelo di più punti; il problema della ricostruzione dei cluster. Decomposizione master-slave, con replicazione dello R*-tree (esecuzione delle query con un farm). Collo di bottiglia e ridondanza dei risultati, strategie di filtraggio distribuito dei dati. Prestazioni.\\ Introduzione al problema della classificazione per induzione di alberi.\\ Trovate vari link ad articoli sull'algoritmo DBSCAN sulla mia pagina personale (corso di CCP  05-05) 
-  * **16/05** __ __+ 
 +| [[http://www.di.unipi.it/~coppola/didattica/ccp0506/papers/SpatialDM.invited.pdf|Articolo introduttivo al Data Mining Spaziale]] | 
 +| [[http://www.di.unipi.it/~coppola/didattica/ccp0506/papers/p322-beckmann.pdf|La struttura dati R*-tree]] | 
 +| [[http://www.di.unipi.it/~coppola/didattica/ccp0506/papers/kdd-96.pdf|Algoritmo DBSCAN]] | 
 +| [[http://www.di.unipi.it/~coppola/didattica/ccp0506/papers/LNCS2150_21500326.pdf|Parallelizzazione a skeleton di DBSCAN]] | 
 +| [[http://www.di.unipi.it/~coppola/didattica/ccp0506/papers/p25-chakrabarti.pdf|Gestione della concorrenza in metodi di accesso spaziale]] | 
 + 
 +  * **14/05** __Problemi dividi e conquista__ \\ I problemi dividi e conquista (D&C) in parallelo, ipotesi generali (cardinalità arbitraria e/o variabile di divisione, alberi non bilanciati, peso computazionale non omogeneo). N-body, algoritmo esatto, O(N²) per passo; quad-tree e oct-tree, decomposizione spaziale dei dati; algoritmo Barnes-Hut, approssimazione con centro di massa, informazioni riassuntive nell'oct-tree; ricostruzione dell'albero ad ogni passo, costo computazionale O(N log N) per passo. \\ Classificazione come problema di data mining (supervised learning), modello di riferimento dei dati (casi/attributi nominali e continui), il modello di classificazione ad albero; C4.5; test su singolo attributo, esplorazione esaustiva dei test nell'intorno della soluzione parziale, ricerca greedy, formulazione D&C; espressione formale del criterio di split (information gain), algoritmo sequenziale per attributi nominali O(N) e continui O(N log N). Conseguenze del sorting per l'applicazione sequenziale e il caso parallelo. Possibili strategie di parallelizzazione di problemi D&C e loro problemi nel caso di D&C irregolare. \\ Alcuni riferimenti: 
 + 
 +| [[http://www.di.unipi.it/~coppola/didattica/ccp0506/papers/ML_1.1.81_Quinlan.pdf|Introduzione alla classificazione]] | 
 + 
 +  * **16/05** __C 4.5 parallelo, DM parallelo e gestione dei dati__ \\ Analisi dell'algoritmo C4.5 e delle implementazioni in  parallelo (SLIQ, SPRINT, ScalParC). Criterio di costo e necessità di calcolare gli istogrami delle classi sulle partizioni. Strategie di espansione in parallelo per task, per sottoalberi, per livelli; vantaggi e svantaggi, rispetto al massimo parallelismo esplicitabile, alla maggiore o minore sincronizzazione tra i nodi di calcolo, alla quantità di comunicazioni necessarie. Partizionamento del database verticale (sugli attributi) e orizzontale (sui casi), conseguenze sulle comunicazioni necessarie al calcolo degli istogrammi. \\ Meccanismi di gestione dei dati nel Data Mining: flat files, sistemi di DBMS, introduzione di primitive dedicate nei due casi; vantaggi e svantaggi delle diverse scelte tecnologiche e pratiche (complessità di implementazione degli algoritmi, delle primitive di accesso ai dati, overhead di accesso). Meccanismi di Parallel data management, cenni alle scelte fatte nel prototipo Parallel Data Repository (portabilità inter applicazione ma non inter-architetturale, orientamento ai blocchi, primitive di accesso type-aware ottimizzate per il DM). \\ Riferimenti: 
 + 
 +| //TO DO// |  
 + 
 +  * **18/05** __Architetture Multicore__ \\ Introduzione ai multicore, richiami alle motivazioni tecnologiche. Multicore simmetrici e asimmetrici. Core multipli, hypertreading, cenni ad approcci differenti (architettura Tera, Transputer). Architetture multicore asimmetriche: IBM CELL, Intel IXP2400; descrizione (in particolare la differene struttura di interconnessione nelle due CPU), discussione delle scelte di progettazione determinanti nelle due architetture (elavata banda di calcolo vs bassa potenza di calcolo rispetto alla banda di trasferimento). Cenni alle problematiche di programmazione a basso livello, e framework di programmazione più astratti. Architetture multicore simmetriche ad elevato parallelismo: Sun Niagara, Azul Vega 2; utilizzo prevalente per applicazioni multithread, database, supporto a macchine virtuali (Java, .Net) senza modifiche al modello di programmazione.
   * **21/05** __ __   * **21/05** __ __
   * **23/05** __ __   * **23/05** __ __
 +  * **25/05** __ __
ccp/lezioni0607.1177347117.txt.gz · Ultima modifica: 27/06/2007 alle 12:16 (17 anni fa) (modifica esterna)