Università degli studi di Modena e Reggio Emilia

Slides:



Advertisements
Presentazioni simili
Linguaggio C e C++.
Advertisements

Scheduling (Schedulazione) Susanna Pelagatti – Università di Pisa
…da von Neumann al computer quantistico
CONCLUSIONE - Nucleo (o Kernel) Interagisce direttamente con lhardware Interagisce direttamente con lhardware Si occupa dellesecuzione.
Gestione della memoria centrale
UNIVERSITÀ DEGLI STUDI DI PARMA
Classe III A A.s – 2010 Programma di Informatica
Classe III A A.s – 2011 Programma di Informatica 5 ore settimanali (3 laboratorio) Docenti –Prof. Alberto Ferrari –Prof. Alberto Paganuzzi.
Unità D2 Archivi e file.
L’oscillatore digitale
I linguaggi di programmazione
Referenti: Prof. Anna Antola Ing. Marco Domenico Santambrogio
1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)
Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria – Sede di Modena Corso di Laurea in Ingegneria Informatica – Nuovo Ordinamento Protocolli.
UNIVERSITA DEGLI STUDI DI MODENA E REGGIO EMILIA Facoltà di Ingegneria – Sede di Modena Corso di Laurea in Ingegneria Informatica Progetto e sviluppo di.
Re-engineering del wrapper XML Schema per il sistema MOMIS
Realizzazione di algoritmi video su FPGA
Scheduling in Linux (Kernel 2.6)
Introduzione al calcolo parallelo SISTEMI INFORMATIVI AZIENDALI Pierpaolo Guerra Anno accademico 2009/2010.
Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.
Algoritmi Paralleli e Distribuiti a.a. 2008/09
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Corso di Informatica (Programmazione)
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Problemi e algoritmi Anno Accademico 2009/2010.
Processi e Thread.
Introduzione ai calcolatori
Linguaggi di programmazione
Espressioni condizionali
Università degli studi Roma TRE Dipartimento di Informatica e Automazione Corso di Laurea in Ingegneria Informatica Tesi di Laurea Prototipo per lacquisizione.
Daniel Stoilov Tesi di Laurea
UNIVERSITÀ DEGLI STUDI DI MODENA E REGGIO EMILIA Facoltà di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Scienze dellInformazione Applicazione.
Università degli studi di Modena e Reggio Emilia Facoltà di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Progetto e sviluppo.
Formati e caratteristiche di digitalizzazione
Algoritmi e Programmazione strutturata
INFORMATICA MATTEO CRISTANI.
Software e sistema operativo 19-22/5/08 Informatica applicata B Cristina Bosco.
Lezione 1 Linguaggi di programmazione – Algoritmi –Istruzioni
UNIVERSITÀ DEGLI STUDI DI MODENA E REGGIO EMILIA Facoltà di Ingegneria “Enzo Ferrari” – Sede di Modena Corso di Laurea Specialistica in Ingegneria Informatica.
IPOTESI DI LAVORO GRUPPO n° 3: LEO, RIBATTEZZATO, ROSSI, SCIANGUETTA
Threads.
1 Il Sistema Operativo: Esempio n Le operazioni effettuate sembrano abbastanza semplici ma … n Provocano una serie di eventi in cui vengono coinvolte sia.
I processi.
MODULO 01 Unità didattica 04
Estratto dalle slide di Informatica Industriale - DU - 10
Rappresentazione degli algoritmi
SCHEDA INFORMATIVA DI UNITÀ. Introduzione Esigenze di memoria per un sistema di calcolo –Dati –Istruzioni Obiettivi –Raggiungere i migliori compromessi.
Star Office è una suite di software di produttività personale commercializzata da Sun Microsystems. StarOffice nasce come software commerciale sviluppato.
Gestione del processore (Scheduler)
1 Informatica Generale Alessandra Di Pierro Ricevimento: Giovedì ore presso Dipartimento di Informatica, Via Buonarroti,
Realizzazione software
FI - Algoritmi e Programmazione 1 Variabili Consentono di aumentare notevolmente la potenza espressiva. Una variabile è caratterizzata da:  Un nome 
Informatica Lezione 6 Psicologia dello sviluppo e dell'educazione (laurea magistrale) Anno accademico:
ISIA Duca degli Abruzzi a.s. 2010/2011 prof. Antonella Schiavon
I Sistemi Operativi. Definizione Per Sistemi Operativi (di seguito SO) si intendono quei pacchetti software, a loro volta costituiti da più sottoprogrammi.
La struttura di un computer
Tipi di immagini. Vi sono 3 tipi di formati di immagini molto conosciuti Bitmap (bmp)  Bitmap (bmp)  Gif  Jpg.
Architettura del computer Il computer menù I L C O M P U T E R Il computer, quindi, é una macchina programmabile, cioè una macchina che può essere utilizzata.
Integrazione della visione in un sistema di automazione globale Relatore:Candidato: Giuseppe MengaOctavi Estapé Ortega Relatore:Candidato: Giuseppe MengaOctavi.
UNIVERSITA’ DEGLI STUDI DI MODENA E REGGIO EMILIA Dipartimento di Scienze Fisiche, Informatiche e Naturali Corso di Laurea in Informatica Progetto e Sviluppo.
Unità di apprendimento 6 Dal problema al programma.
SOMMARIO La Digitalizzazione La Compressione LA DIGITALIZZAZIONE La digitalizzazione consiste nella trasformazione di un oggetto in una sequenza di numeri,
Dal problema al programma – ciclo di sviluppo del software La scrittura del programma è solo una delle fasi del processo di sviluppo di un'applicazione.
Di Matteo Arenga Manuela Bonaccorso Giulia Diprossimo.
Unità di apprendimento 6
© 2016 Giorgio Porcu - Aggiornamennto 18/03/2016 I STITUTO T ECNICO SECONDO BIENNIO T ECNOLOGIE E P ROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi.
1 Informatica di Base Facoltà di Lingue e Letterature Straniere Corso di laurea in Relazioni Pubbliche.
ALGORITMI, LINGUAGGI E PROGRAMMI Facoltà di Lingue e Letterature Straniere Corso di laurea in Relazioni Pubbliche.
Breve Storia 3d prima generazione (escludiamo Wolf3d, Doom e Duke3d, che erano una sorta di 2D)  per ogni triangolo che compone una mesh calcoliamo la.
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi Complessità e Trasportabilità Lezione n°3.
Transcript della presentazione:

Università degli studi di Modena e Reggio Emilia Facoltà di Scienze Matematiche Fisiche e Naturali Studio e Sviluppo di un metodo di parallelizzazione in ambiente grafico di algoritmi seriali Rabitti Andrea Relatore: Prof. Riccardo Martoglia Anno accademico 2011/2012

Introduzione Limite di velocità raggiunto dai processori Soluzione: aumento del numero di core di elaborazione Soluzione già ampiamente utilizzata dai processori grafici!

Introduzione Struttura delle GPU sempre più simile a quella delle CPU Il numero di core di una GPU è molto maggiore di quello di una CPU Sarebbe utile sfruttare tutta questa potenza di calcolo

Introduzione Scopo del tirocinio è quello di portare la maggior parte di elaborazione di una serie di algoritmi su GPU Il tirocinio è stato svolto presso l’azienda Infomobility con sede a Concordia sulla Secchia L’ambito di applicazione degli algoritmi scritti è quello del riconoscimento delle targhe in autostrada e il relativo salvataggio delle immagini scattate

Roadmap Strumenti Utilizzati Algoritmi Studiati Soluzioni Adottate Risultati

Roadmap Strumenti Utilizzati Algoritmi Studiati Soluzioni Adottate Risultati

Strumenti Utilizzati Sono stati valutati i due produttori di GPU presenti nel mercato consumer: Nvidia e AMD Entrambe forniscono gli strumenti necessari per sviluppare applicazioni General Purpose sfruttando la potenza di calcolo della/e GPU Nvidia mette a disposizione CUDA, un framework proprietario che comprende, tra le altre cose, un compilatore ed una serie di librerie e funzioni primitive AMD sfrutta la libreria OpenCL, libreria multipiattaforma che ben si confà ad un ambiente multithread

Caratteristiche Nvidia AMD Framework proprietario monopiattaforma Più maturo e rodato Librerie perfettamente ottimizzate per l’hardware sottostante Grande comunity dalla quale trovare soluzioni Grande disponibilità di strumenti che si integrano coi vari SO, quali debugger od estensioni per IDE Librerie open multipiattaforma Ancora giovane e acerbo Librerie generiche che difficilmente raggiungono una perfetta ottimizzazione Nessuna comunity ufficiale o comunque ampia Pochi strumenti a disposizione e poca integrazione con i vari ambienti

Cuda Per questi motivi si è scelto di utilizzare una scheda Nvidia ed il relativo framework Avendo a disposizione moltissimi nuclei di elaborazione (in una GPU moderna superano anche i 2’000) l’idea di base è quella di suddividere il lavoro in parti indipendenti tra di loro

Cuda La filosofia alla base della programmazione CUDA è quella di creare una griglia virtuale in cui suddividere l’algoritmo, ognuna delle quali eseguirà l’elaborazione su una parte dei dati Ogni cella della griglia, chiamata blocco, è suddivisa a sua volte in thread esecutivi

Roadmap Strumenti Utilizzati Algoritmi Studiati Soluzioni Adottate Risultati

Algoritmi Studiati L’algoritmo principale studiato è la compressione JPEG Partendo da un’immagine raw, cioè contenente solo i dati effettivi dell’immagine, l’obiettivo è quello di produrre un file compresso secondo la codifica JPEG leggibile da un generico software di visualizzazione delle immagini

Algoritmo di Compressione JPEG L’algoritmo si compone di varie fasi: 1) Modifica dello Spazio di Colore 2) Trasformata Discreta Coseno (DCT) 3) Quantizzazione 4) Ordinamento a ZigZag 5) Codifica di Huffman

Algoritmo di Compressione JPEG Le varie fasi sono intrinsecamente seriali: il prodotto della prima fase sarà l’ingresso della seconda e così via La parallelizzazione dell’algoritmo deve avvenire all’interno di ogni fase Ogni fase lavora su una matrice 8x8 di pixel Abbiamo il nostro modello di parallelizzazione!

Roadmap Strumenti Utilizzati Algoritmi Studiati Soluzioni Adottate Risultati

Implementazione Ogni quadrato 8x8 verrà elaborato indipendentemente dagli altri Le risoluzioni standard sono tutte multiple di 8x8 quindi non ci sono rischi di quadrati incompleti L'immagine di riferimento ha risoluzione 1600x1200, dunque i quadrati da elaborare saranno 200x150

Implementazione Il numero di thread e blocchi su cui suddividere la computazione è dunque, in questo primo approccio, abbastanza immediato da decidere 200x150 blocchi, indipendenti l'uno dall'altro, e 8x8 trhead, uno per pixel, i quali si scambieranno internamente le informazioni

Roadmap Strumenti Utilizzati Algoritmi Studiati Soluzioni Adottate Risultati

Risultati Nelle fasi che sono state implementate interamente su GPU si è sperimentato uno speedup di circa 10 rispetto alla controparte seriale I punti critici sono le operazioni sulla memoria e la fase di “compressione” che, tra le altre cose, effettua una scansione completa dell’intera immagine sequenzialmente Immagine in Toni di Grigio GPU CPU Allocazione 63.5 ms N/A MemCopy HtD 7.5 ms Modifica dello SdC 2.5 ms ~ 20 ms DCT 2.4 ms Quantizzazione e ZigZag 1.2 ms ~ 10 ms Codifica di Huffman 8.1 ms ~ 50 ms MemCopy DtH 8.5 ms “Compressione” 31.9 ms Scrittura su File 2.8 ms Totale (Senza Allocazione) 65.1 ms ~ 100 ms

Risultati Nelle fasi che sono state implementate interamente su GPU si è sperimentato uno speedup di circa 10 rispetto alla controparte seriale I punti critici sono le operazioni sulla memoria e la fase di “compressione” che, tra le altre cose, effettua una scansione completa dell’intera immagine sequenzialmente Immagine in Toni di Grigio GPU CPU Allocazione 63.5 ms N/A MemCopy HtD 7.5 ms Modifica dello SdC 2.5 ms ~ 20 ms DCT 2.4 ms Quantizzazione e ZigZag 1.2 ms ~ 10 ms Codifica di Huffman 8.1 ms ~ 50 ms MemCopy DtH 8.5 ms “Compressione” 31.9 ms Scrittura su File 2.8 ms Totale (Senza Allocazione) 65.1 ms ~ 100 ms

Risultati Nelle fasi che sono state implementate interamente su GPU si è sperimentato uno speedup di circa 10 rispetto alla controparte seriale I punti critici sono le operazioni sulla memoria e la fase di “compressione” che, tra le altre cose, effettua una scansione completa dell’intera immagine sequenzialmente Immagine in Toni di Grigio GPU CPU Allocazione 63.5 ms N/A MemCopy HtD 7.5 ms Modifica dello SdC 2.5 ms ~ 20 ms DCT 2.4 ms Quantizzazione e ZigZag 1.2 ms ~ 10 ms Codifica di Huffman 8.1 ms ~ 50 ms MemCopy DtH 8.5 ms “Compressione” 31.9 ms Scrittura su File 2.8 ms Totale (Senza Allocazione) 65.1 ms ~ 100 ms

Risultati In generale, difficilmente si trovano dei dati interessanti sui tempi di esecuzione dell’algoritmo di compressione JPEG I tempi che si possono ricavare consistono nell’esecuzione totale dell’algoritmo e non dei singoli passaggi Un tempo abbastanza indicativo è attorno ai 100ms per l’intero algoritmo con un’immagine in toni di grigio Immagine in Toni di Grigio GPU CPU Allocazione 63.5 ms N/A MemCopy HtD 7.5 ms Modifica dello SdC 2.5 ms ~ 20 ms DCT 2.4 ms Quantizzazione e ZigZag 1.2 ms ~ 10 ms Codifica di Huffman 8.1 ms ~ 50 ms MemCopy DtH 8.5 ms “Compressione” 31.9 ms Scrittura su File 2.8 ms Totale (Senza Allocazione) 65.1 ms ~ 100 ms

Risultati In generale, difficilmente si trovano dei dati interessanti sui tempi di esecuzione dell’algoritmo di compressione JPEG I tempi che si possono ricavare consistono nell’esecuzione totale dell’algoritmo e non dei singoli passaggi Un tempo abbastanza indicativo è attorno ai 100ms per l’intero algoritmo con un’immagine in toni di grigio Immagine in Toni di Grigio GPU CPU Allocazione 63.5 ms N/A MemCopy HtD 7.5 ms Modifica dello SdC 2.5 ms ~ 20 ms DCT 2.4 ms Quantizzazione e ZigZag 1.2 ms ~ 10 ms Codifica di Huffman 8.1 ms ~ 50 ms MemCopy DtH 8.5 ms “Compressione” 31.9 ms Scrittura su File 2.8 ms Totale (Senza Allocazione) 65.1 ms ~ 100 ms

Conclusioni e Sviluppi Futuri I punti cruciali e direttamente collegati allo sviluppo su GPU sono sicuramente i due passaggi nella e dalla memoria video Cuda permette di interpretare i dati anche in un modo differente, usando delle strutture chiamate Texture che permettono una maggiore velocità sia di passaggio di dati sia di elaborazione al costo di maggior complessità implementativa La fase di “compressione”, nonostante comprenda più passaggi, esula, in questo primo approccio, dall’ambito di parallelizzazione: ottimo campo di studio futuro