13/03 Data Mining, K-means; introduzione ad ASSIST da completare
19/03 Programmazione Parallela Strutturata e ASSIST
Evoluzione dei modelli di programmazione parallela: approccio a linguaggio sequenziale + direttive, approccio a librerie di comunicazione message passing, approcci a parallelismo strutturato.
Fortran e HPF, parallelizzazione del data parallel tramite direttive e owner-computes rule.
Skeleton paralleli : definizione di Murray Cole, utilizzo in linguaggi imperativi e funzionali, possibilità di implementazione (librerie, linguaggi specializzati, linguaggi di coordinamento). Skeleton e template, corrispondenza 1-1 e 1-molti con modelli di costo, skeleton come programmi macro-dataflow parametrici. Esempi rispetto a P3L, SkIE, ASSIST.
ASSIST: approccio modulare con linguaggio di coordinamento a skeleton. Uso di skeleton paralleli flessibili e tradeoff tra espressività e semplicita di implementazione.
Il linguaggio: moduli sequenziali, incapsulamento, interazione a stream, generazione degli stub (comunicazioni, gestione del parallelismo); coordinamento e linguaggi ospiti, compilazione a due fasi, inclusione di codice e macroespansione, direttive di compilazione (inc, lib, path).
21/03 ASSIST: il parmod
semantica di base: più forme di parallelismo in alternativa e controllo del non determinismo, maggiore potenza espressiva rispetto a scheleton semplici, compromesso tra espressività e semplicità di implementazione; schema generale (input section, output section, processori virtuali), distribuzioni (on_demand
, broadcast
) e collezioni (from any
, from all
), topologie (none
, one
, array
); attributi, attributi replicati e partizionati.
28/03 ASSIST: il parmod
concetto di guardia e controllo del nondeterminismo (priorità, variabili di condizione, espressioni di input); stream interni; distribuzione scheduled; topologie e condizioni di bordo, descrizione di insiemi di parmod non omogenei; compatibilità tra topologie e distribuzioni; analisi di esempi tratti dal tutorial.
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.
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.