La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Università degli Studi di Napoli – “Parthenope” Dipartimento di Scienze e Tecnologie Corso di Laurea in Informatica TESI DI LAUREA TRIENNALE Relatore:

Presentazioni simili


Presentazione sul tema: "Università degli Studi di Napoli – “Parthenope” Dipartimento di Scienze e Tecnologie Corso di Laurea in Informatica TESI DI LAUREA TRIENNALE Relatore:"— Transcript della presentazione:

1 Università degli Studi di Napoli – “Parthenope” Dipartimento di Scienze e Tecnologie Corso di Laurea in Informatica TESI DI LAUREA TRIENNALE Relatore: Dott. Livia MarcellinoLaureando: Ivan Osato (0124/250) Anno Accademico 2013/2014

2  La struttura delle immagini DWI  Il metodo PCA locale overcomplete  Introduzione al GP-GPU  Ambiente di sviluppo CUDA  Il software parallelo sviluppato  Test e risultati  Conclusioni e Sviluppi futuri Ivan Osato - Università degli Studi di Napoli "Parthenope" 2

3 3 Le immagini DWI (Diffusion Weighted Images) sono immagini di risonanza magnetica (MRI) pesate in diffusione, capaci di misurare il moto microscopico delle molecole di acqua in un tessuto biologico, permettendo quindi l’analisi della microstruttura bianca cerebrale sia in condizioni normali che patologiche.  La diffusione rappresenta il moto caotico e disordinato delle molecole di un mezzo, dovuto all’agitazione termica.  L’elemento preponderante è l’acqua che comprende il % in volume dei tessuti biologici e svolge la funzione di mezzo di trasporto dei composti biochimici.  Strutture con diffusione normale sono rappresentate convenzionalmente più scure (segnale di risonanza più attenuato) mentre laddove la velocità di diffusione è minore (ischemia) sono rappresentate più chiare.

4  Il più recente sviluppo della DWI è rappresentato dall’imaging in tensore di diffusione (Diffusion Tensor Imaging, DTI), che è una tecnica che mette in evidenza non soltanto l’entità della diffusione delle molecole di acqua nei tessuti ma anche la direzione consentendo di superare i limiti di direzionalità di DWI.  Le immagini DTI si ottengono attraverso l’acquisizione di immagini pesate in diffusione lungo diverse direzioni tramite l’applicazione di una sequenza EPI (Echo Planar Imaging), cui viene fatta seguire in successione una serie di gradienti con orientazioni variabili. Ivan Osato - Università degli Studi di Napoli "Parthenope" 4 slice (3D) direzioni (4D)

5  Le immagini DWI hanno per natura, un basso SNR (Signal to Noise Ratio) a causa della scarsa ampiezza del segnale ed il pronunciato rumore termico.  Questo basso rapporto rende l’analisi estremamente complessa, pregiudicando la stima dei parametri di diffusione quantitativi. Ivan Osato - Università degli Studi di Napoli "Parthenope" 5 Esistono diverse tecniche di denoising che possono migliorare la qualità dei dati DWI come step di post- elaborazione

6 Ivan Osato - Università degli Studi di Napoli "Parthenope" 6 Il metodo PCA locale per la rimozione del rumore Rician da immagini DWI, sfrutta la ridondanza multi-direzionale delle immagini pesate in diffusione multicomponente, per ridurre localmente le componenti principali meno significative attraverso un approccio overcomplete. L’elaborazione di ogni singolo voxel avviene localmente, all’interno di finestre locali che possono sovrapporsi a quelle dei voxel adiacenti. In seguito alla sovrapposizione delle patch (overlapping), elaborate separatamente, si ottengono diverse stime per alcuni voxel da processare attraverso una media (overcomplete).

7 Ivan Osato - Università degli Studi di Napoli "Parthenope" 7 La Principal Component Analysis (PCA, Analisi per Componenti Principali) è una trasformazione lineare ortogonale dei dati che vengono mappati in un nuovo sistema di riferimento ortogonale in modo da massimizzare la varianza (rispetto ad ogni altra proiezione) associata alla prima coordinata, poi quella associata alla seconda coordinata e così via. Le proiezioni, considerate nell’ordine, prendono il nome di componenti principali.. La PCA consiste nel calcolo degli autovalori e degli autovettori della matrice di covarianza X T X dei dati centrati:.  Il primo autovettore di X T X è la prima componente principale, mentre il primo autovalore è la varianza associata a tale componente principale, che è la massima possibile.  La varianza che rimane, è associata alle altre direzioni e quindi alle restanti componenti principali.

8 Ivan Osato - Università degli Studi di Napoli "Parthenope" 8 Per ogni punto x p con p = (i, j, z, k) nel dominio dell’immagine 4D, le patch 3D circostanti x p in ogni direzione K, sono riordinate come vettore colonna di una matrice X di (N x K) componenti (N elementi della patch x K direzioni). PCA LOCALE PER OGNI MATRICE X  C = X T X  Calcolo autovettori di C in W  Y = XW  Thresholding di Y in Ŷ con τ = γ * σ  XD = ŶW -1 + μ PER OGNI MATRICE X  C = X T X  Calcolo autovettori di C in W  Y = XW  Thresholding di Y in Ŷ con τ = γ * σ  XD = ŶW -1 + μ Le colonne della matrice sono riposizionate nell’immagine di output (sommate ai valori già presenti), nella posizione dove erano state estratte come patch 3D dall’immagine rumorosa. OVERLAPPING DI XD MEDIA

9 Ivan Osato - Università degli Studi di Napoli "Parthenope" 9

10 10 L’unità di elaborazione grafica (Graphics Processing Unit, GPU) è una tipologia particolare di coprocessore composto da più multiprocessori paralleli, organizzati secondo uno schema architetturale finalizzato al paradigma SIMD (Single Instruction Multiple Data). La GP-GPU (General Purpose Computing on GPU), si propone di impiegare le GPU per applicazioni parallele High Performance General Purpose, sfruttando le loro capacità di elaborazione in parallelo per compiti che vanno oltre la Computer Graphics. Queste unità nascono nell’ambito della Computer Graphics per l’esecuzione di operazioni grafiche (rendering) che lavorano su una grande quantità di dati.

11 Ivan Osato - Università degli Studi di Napoli "Parthenope" 11 Come usare un ambiente ideato per la grafica in applicazioni General Purpose? NVIDIA ha modificato la GPU rendendola interamente programmabile per le applicazioni scentifiche e aggiungendovi il supporto per linguaggi ad alto livello come C e C++ nell’ambiente di sviluppo CUDA. Il modello architetturale CUDA considera la CPU e la GPU come due macchine distinte dette host e device, che eseguono rispettivamente la parte di codice sequenziale e parallela (kernel).

12 Ivan Osato - Università degli Studi di Napoli "Parthenope" 12 L’algoritmo parallelo sviluppato, prevede una griglia computazionale 3D in cui ad ogni thread di un blocco è associato un voxel di competenza (i, j, z, k) in tutte le K direzioni dell’immagine DWI.

13 Ivan Osato - Università degli Studi di Napoli "Parthenope" 13 Versione 1 - full shared memory: uso totale di memoria condivisa in tutte le principali operazioni di PCA locale. KERNEL computeCovariance >> computePCA >> weightedAverage >> Versione 2 - shared and global memory combination: gestione oculata della shared memory in combinazione all’utilizzo della global memory. KERNEL computeCovariance >> computeProdYEXW >> computeProdXDEYWT >> weightedAverage >> VANTAGGISVANTAGGI 1. Bassa latenza 2. Risparmio maggiore di tempo Capienza ridotta VANTAGGISVANTAGGI Capienza maggioreTempi d’accesso più alti

14 Ivan Osato - Università degli Studi di Napoli "Parthenope" 14 Ogni thread del blocco, in parallelo, copia i dati di propria competenza dall’immagine rumorosa per costruire la matrice X in shared memory, poi calcola la media di ciascuna colonna della propria X (per normalizzare X) e per finire esegue il prodotto righe per colonne per il calcolo della matrice di covarianza C. Questo kernel ha il compito di calcolare la matrice di covarianza C per ogni voxel (i, j, z). La configurazione di thread utilizzata è la seguente: BlockDim = GridDim =

15 Ivan Osato - Università degli Studi di Napoli "Parthenope" 15 Nella fase di inizializzazione, i thread del blocco in parallelo costruiscono la matrice X, il vettore di media Mean e gli autovettori W in shared memory. Successivamente, eseguono tutte le operazioni di PCA locale e memorizzano i dati restaurati nell’immagine di output (overlapping).  Calcola la Principal Component Analysis in maniera overcomplete usando la shared memory.  La configurazione di griglia è la medesima del kernel precedente.  Agisce in global memory sull’immagine di output per eseguire l’overlapping.

16 Ivan Osato - Università degli Studi di Napoli "Parthenope" 16  computeProdYEXW >> Ciascun thread di un blocco, in parallelo, prima effettua il prodotto tra matrici per generare Y, poi esegue il thresholding per la rimozione del rumore. Il prodotto fa un uso combinato di shared memory (X, W) e global memory (Y).  computeProdXDEYWT >> Ciascun thread di un blocco, in parallelo, prima esegue il prodotto tra matrici per la determinazione della matrice XD restaurata, poi effettua overlapping per collocare i dati restaurati nell’immagine di output. Il prodotto fa un uso combinato di shared memory (MEAN, W) e global memory (Y, XD). Nella versione 2, il kernel computePCA >> è splittato in due kernel che eseguono separatamente i prodotti per occupare meno spazio in shared memory.

17 Ivan Osato - Università degli Studi di Napoli "Parthenope" 17 Ogni thread di un blocco accede in memoria globale ai suoi K voxel di competenza ed esegue la media dividendo il valore del voxel (calcolato come somma delle stime di voxel dal processo di overlapping) per il numero di sovrapposizioni.  Calcola la media pesata per ogni voxel dell’immagine di output restaurata.  La configurazione di griglia è la medesima dei kernel precedenti.  Non fa uso di shared memory.

18 Ivan Osato - Università degli Studi di Napoli "Parthenope" 18 In questo primo test, si riportano i risultati numerici dell’errore di approssimazione commesso sulle immagine restaurate rispetto alle immagini originali (ground-truth). L’errore viene calcolato attraverso l’indice PSNR (Peak Signal-Noise Ratio) che è in grado di valutare la qualità delle immagini. ground-truth (z = 0, k = 0) ground-truth (z = 0, k = 5) ground-truth (z = 0, k = 9) Simulated DW-MRI Brain Data Sets:

19 Ivan Osato - Università degli Studi di Napoli "Parthenope" 19 Si riportano i valori di PSNR per le tre immagini campione utilizzate, al variare del livello di rumore. I valori tabellari dimostrano che l’algoritmo è in grado di produrre risultati di output con un discreto grado di accuratezza. Aumentando il livello di rumore, il PSNR tende a diminuire poichè l’immagine è più degradata. I valori (Truth/Denoise) sono più alti rispetto a (Truth/Noise) dato che l’immagine è restaurata ed ha una qualità maggiore.

20 Ivan Osato - Università degli Studi di Napoli "Parthenope" 20 Risultati di output che si ottengono dall’esecuzione dell’algoritmo per un z fissato (z = 0), esaminando le direzioni k = 0, 5, 9 con i livelli di rumore 3% e 5%. LIVELLO RUMORE 3% LIVELLO RUMORE 5%

21 Ivan Osato - Università degli Studi di Napoli "Parthenope" 21 Lo strumento di profiling nvprof consente di raccogliere e visualizzare i dati relativi alle caratteristiche di esecuzione di un software parallelo eseguito su GPU in ambiente CUDA. nvprof --print-gpu-trace./myApp Output del tool, eseguendo la prima versione dell’algoritmo parallelo su 10 direzioni, con l’unica configurazione possibile di (2, 2, 3) thread per blocco e (88, 88, 7) blocchi. Output del tool, eseguendo la seconda versione dell’algoritmo parallelo su 10 direzioni, con la configurazione di (2, 2, 3) thread per blocco e (88, 88, 7) blocchi per un confronto diretto con la prima versione. La differenza sostanziale tra le due versioni dell’algoritmo parallelo, sta nel numero di kernel utilizzati per ottenere il risultato, nella quantità di shared memory utilizzata e nel numero di copie dati da host a device e viceversa.

22 Ivan Osato - Università degli Studi di Napoli "Parthenope" 22 Per 10 direzioni, le performance della CPU sono pari a 7 GFlops mentre per la GPU sono 83,14 GFlops, ovvero circa 12 volte maggiori rispetto a quelle della CPU ottenendo un guadagno prestazionale pari a 91,6%. Sono stati effettuati vari test, variando per ogni esecuzione il numero di direzioni dell’immagine DWI (partendo da 2 direzioni ed arrivando fino a un massimo di 10 direzioni entro i limiti di memoria della macchina utilizzata).

23 Ivan Osato - Università degli Studi di Napoli "Parthenope" 23 Nei diversi test, si è variato il numero di direzioni dell’immagine DWI (numero di voxel processati). Le due versioni parallele sono state eseguite con la stessa configurazione confrontabile (per motivi di spazio) di (2, 2, 3) thread per blocco e (88, 88, 7) blocchi di griglia. Con 10 direzioni, il tempo impiegato dalla CPU è di 95 secondi contro i 24 secondi della GPU (i tempi delle due versioni sono approssimativamente uguali). Pertanto, il tempo impiegato dalla GPU è circa 4 volte minore rispetto al tempo impiegato dalla CPU, con un guadagno pari al 75%.

24 Ivan Osato - Università degli Studi di Napoli "Parthenope" 24 Aumentando le direzioni, il carico di lavoro aumenta a prescindere dalla configurazione utilizzata. Per ogni direzione, la configurazione ottimale è sempre quella che utilizza 2 x 2 x 3 thread per blocco. L’algoritmo parallelo è stato eseguito al variare delle direzioni, processando i voxel dell’immagine con diverse configurazioni di griglia, nei limiti dello spazio a disposizione sulla macchina utilizzata.

25  Implementazione multi-GPU per incrementare ulteriormente il guadagno.  Testing del software parallelo su schede video con memorie più capienti. Ivan Osato - Università degli Studi di Napoli "Parthenope" 25 CONCLUSIONI Con il lavoro svolto in questa tesi, si è realizzata una implementazione parallela del metodo “PCA Locale Overcomplete (OLPCA)” per la rimozione del rumore Rician da immagini pesate in diffusione, in ambiente GPU-CUDA. Sono state sviluppate due versioni parallele, per sopperire alle limitazioni dell’architettura utilizzata. I risultati sperimentali, di confronto con l’algoritmo sequenziale, hanno evidenziato un guadagno in termini di GFlops addirittura pari al 91,6% ed una riduzione del tempo di esecuzione uguale al 75%. SVILUPPI FUTURI

26

27

28 Ivan Osato - Università degli Studi di Napoli "Parthenope" 28  La differenza nei tempi d’esecuzione tra le due versioni è decisamente bassa.  I tempi della seconda versione parallela, sono influenzati dalla quantità maggiore di trasferimenti dati in memoria e dall’accesso alla global memory.  I risultati confermano ancora una volta che la configurazione ottimale è certamente quella che prevede l’uso di blocchi da 2 x 2 x 3 thread.  La differenza nei tempi d’esecuzione tra le due versioni è decisamente bassa.  I tempi della seconda versione parallela, sono influenzati dalla quantità maggiore di trasferimenti dati in memoria e dall’accesso alla global memory.  I risultati confermano ancora una volta che la configurazione ottimale è certamente quella che prevede l’uso di blocchi da 2 x 2 x 3 thread.

29 Ivan Osato - Università degli Studi di Napoli "Parthenope" 29 Il tempo d’esecuzione aumenta all’aumentare delle direzioni dell’immagine DWI con un andamento quadratico! L’algoritmo è stato eseguito al variare delle direzioni, rilevando per ogni test il tempo di esecuzione necessario alla computazione degli autovettori su host.


Scaricare ppt "Università degli Studi di Napoli – “Parthenope” Dipartimento di Scienze e Tecnologie Corso di Laurea in Informatica TESI DI LAUREA TRIENNALE Relatore:"

Presentazioni simili


Annunci Google