Theory Flashcards
(41 cards)
Cosa si intende per parallelismo?
Esecuzione di diverse parti di un programma allo stesso tempo. Su unità computazionali differenti (es . threads, processori, cores di gpu)
Definizione di Throughput
Tasks completati per unità di tempo
Definizione di sequential task
Insieme di operazioni eseguibili su un computing device.
Definizione di overhead
Tempo per setuppare la computazione parallela (es. possono essere tempo per dividere un programma sequenziale in task paralleli, ecc.) questo valore non è ovviamente presente quando effettuiamo stessi task in modo sequenziale.
Definizione Latenza
Tempo tra invio di un task ed effettivo output. L
Definizione di Service Time
Tempo per completare un task, da quando inizia elaborazione, quindi non considero tutto discorso di merge e split. Ts
Definizione di completion time
Data una serie di task, è tempo tra invio del primo task e completamento dell’ultimo. Tc
Come viene misurato throughput
Misurato come 1/Ts. Ossia numero di tasks completati per unità di tempo.
Definizione Speedup
sp(n) = sequential time/ parallel time(con n workers)
Definizione di scalabilità
scalab(n) = Tpar(1)/Tpar(n) dove valutiamo esecuzione parallela con 1 worker.
Come misurare Efficienza
e(n) = tempo ideale/T par(n) . Dove tempo ideale è dato da T sequenziale/numero di workers. dato che nella formula finale Tempo sequenziale/Tempo parallelo = speedUp possiamo trasformare formula in speedup(n)/n
Spiega Amdahl law
In un’applicazione amount di lavoro non parallelizzabile determina massimo speedup per parallelizzare applicazione.
Spiega Gustaffsomn law
Se Amdahl law ci da un upper limit per lo speedup che possiamo ottenere. Con Gustaffsomn invece sappiamo che possiamo aumentare la dimensione del problema per poter diminuire portata della parte non parallelizzabile.
Cosa è work span model
Un’applicazione può essere vista come un grafo , in cui i nodi sono porzioni di codice e gli archi rappresentano le dipendenze tra i vari nodi. Il modello viene chiamato work span, dove gli span rappresentano il cammino + lungo tra inizio e fine di un lavoro. Corrispondente al tempo totale per completare il lavoro.
Cosa migliorano design patterns?
Data parallel decrementa latenza, stream parallel incrementa throughput.
Cosa fanno data parallel patterns?
Dividono dati, computano pezzi e poi ricompongono.
Analisi del map pattern
Prendo dati da una collezione, divido il lavoro ed ogni unità computazionale eseguirà la stessa operazione in modo indipendente sui dati. La latenza è uguale a numero di elementi*Tempo applicazione funzione diviso numero di workers + tempo di merge + tempo di split. mentre service time = max tra tempo di split, tempo per applicare funzione e tempo per mergiare.
Analisi del reduce pattern
Il reduce pattern permette la sommarizzazione degli input in un unico oggetto. La latenza è uguale al tempo di split + log in base 2 del numero di tasks * tempo di completamento di un task. Questo perchè andiamo a creare struttura ad albero. Service time invece = max tra tempo per split e tempo di esecuzione di un task.
Analisi stencil pattern
Prendiamo una funzione che prende come input un elemento + vicini e una funzione che sarà eseguita su questi elementi.
Implementazione:
Metodo 1: uso due buffer uno per lettura altro per applicare funzioni.
Metodo 2: Un solo buffer, che implica managment diverso, come sezioni del buffer indipendenti ecc…
Latenza= tempo per splittare + numero di iterazioni * ( m / nworkers * tempo operazione interna stencil + tempo merge) se usiamo metodo 2 contiamo anche gestione del buffer, mentre con metodo 1 tempo per swap buffer. Service time invece = max tra Tempo split, tempo work e tempo merge.
Analyze map reduce
Con map reduce noi prendiamo un file di input per esempio, con i vari dati effettuiamo un operazione di mapping che all’inizio restituisce key value, ordiniamo i risultati in modo da rendere piu efficiente fase successiva di reducing che grazie alle coppie key value effettua velocemente operazioni, infine calcoliamo risultato finale.
Analizza Pipeline
Nella pipeline abbiamo vari stages, input di ogni stage è output di un altro stage
Analizza Farm
Nella farm abbiamo n workers che eseguono stessa funzione su elementi di input stream. Gli elementi sono assegnati da un emitter e ed infine collezionati da un collector c.
Trade off da tenere in considerazione quando facciamo parallel programming?
Tempo speso per setup, tempo guadagnato con parallelismo. Aumentano/diminuiscono in base al numero di workers.
Se Tset > Tpar è inutile parallelismo.
Quali overhead abbiamo?
Thread, NUMA, cache coherence, false sharing, Migration due over heat,communication.