Graphic Processing Unit GPU. ARCHITETTURA DI COMUNICAZIONE.

Slides:



Advertisements
Presentazioni simili
INFORMATICA Altre Istruzioni di I/O
Advertisements

Gestione della memoria centrale
UNIVERSITÀ DEGLI STUDI DI PARMA
Classe III A A.s – 2010 Programma di Informatica
Il Sistema Operativo.
Introduzione a DirectX Diego Colombo Universita di Pisa Dipartimento di Informatica.
Architettura di un sistema informatico Hardware
Off-Screen RENDER TO TEXTURE Prodotto matriciale a blocchi nns s C m x s.
GLUT & OpenGL Ing. Tommaso Coviello Politecnico di Bari
Informatica giuridica Hardware e software: glossario Lucio Maggio Anno Accademico 2000/2001.
MICROCONTROLLORI Di Tiziano Ragazzi.
Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.
2 Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione dati memorizzazione dati trasferimento.
Informatica di base A.A. 2003/2004 Algoritmi e programmi
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 prove.
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2005/06 prove generali.
1 Costruzione di Interfacce Primi passi in OpenGL
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
1 Costruzione di Interfacce Primi passi in OpenGL
Corso di Informatica (Programmazione)
coordinate utente e di finestra
Struttura dei sistemi operativi (panoramica)
Xscale Nicola Rebagliati 2001s135. Cose Xscale Xscale è una microarchitettura per processori che fornisce ottime prestazioni con bassi consumi energetici.
Software di base Il sistema operativo è un insieme di programmi che opera sul livello macchina e offre funzionalità di alto livello Es.organizzazione dei.
INFORMATICA Altre Istruzioni di I/O. © Piero Demichelis 2 Funzioni di I/O Per la lettura e la scrittura da videoterminale il C prevede numerose istruzioni.
3. Architettura Vengono descritte le principali componenti hardware di un calcolatore.
Estensioni allarchitettura di Von Neumann Vito Perrone Corso di Informatica A per Gestionali.
Il sistema operativo Vito Perrone
Fondamenti di Informatica1 Software di base Tra il linguaggio macchina (basso livello) e i linguaggi evoluti (alto livello) esiste uno strato di software.
UNIVERSITA’ STUDI DI ROMA “FORO ITALICO”
SCHEDE Audio e Video.
ARCHITETTURA DEGLI ELABORATORI
COME È FATTO UN COMPUTER
Modulo 1 - Concetti di base della Tecnologia dell'Informazione
STRUTTURA GENERALE DI UN ELABORATORE
L' ARCHITETTURA DI VON NEUMANN
Architettura del calcolatore
Architettura di OGL e pipe-line Daniele Marini Corso Di Programmazione Grafica.
Programmazione grafica 1
Threads.
Il Software Programmare direttamente la macchina hardware è molto difficile: l’utente dovrebbe conoscere l’organizzazione fisica del computer e il suo.
Corso di Programmazione Grafica e Laboratorio Daniele Marini
Corso di Programmazione Grafica e Laboratorio Introduzione a OpenGL Prof. Daniele Marini.
Architettura di OGL e pipe-line Daniele Marini Corso Di Programmazione Grafica.
Corso di Programmazione Grafica e Laboratorio Daniele Marini
Architettura di OGL e pipe-line Daniele Marini Davide Gadia Davide Selmo Corso Di Programmazione Grafica aa2005/2006.
STRUTTURA DI UN COMPUTER
Sistema Operativo (Software di base)
LABVIEW Sommario Che cosa è uno strumento virtuale (VI) creato con LABVIEW Parti di un VI: pannello frontale diagramma a blocchi Confronto tra il principio.
GPGPU General Purpose Computation on GPU Emanuele Ruffaldi 2005 Corso su Elasticità non lineare ed Oggetti Deformabili.
3  Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione  elaborazione dati  memorizzazione dati 
Computer Graphics Marco Tarini Università dell’Insubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione.
Luglio 2004Generalità Hardware1 Luglio Generalità Hardware2 MACCHINA DI VON NEUMAN (1947) BUS Processore Elaborazione Controllo Memoria Ingresso.
Computer Graphics Marco Tarini Università dell’Insubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2005/06 Lezione.
1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo.
Università degli Studi di Bergamo Facoltà di Lingue e Letterature Straniere Facoltà di Lettere e Filosofia A.A Informatica generale 1 Appunti.
Sistema operativo Il Sistema Operativo gestisce le risorse hw e sw del sistema di elaborazione Facilita l'interazione tra utente e sistema Esistono diversi.
Sistemi operativi di rete Ing. A. Stile – Ing. L. Marchesano – 1/18.
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
Costruzione di interfacce Paolo Cignoni
GPU - Graphics Processing Unit Corso di Sistemi Paralleli Luigi La Torre Giugno 2012.
I Microprocessori Unità 3 del libro Internet Working Sistemi e reti.
Tipi di Computer MainframeSupercomputerMinicomputerMicrocomputerHome Computer Personal Computer WorkstationMicrocontrollori Sistemi Barebone.
1 Informatica di Base Facoltà di Lingue e Letterature Straniere Corso di laurea in Relazioni Pubbliche.
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
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.
Transcript della presentazione:

Graphic Processing Unit GPU

ARCHITETTURA DI COMUNICAZIONE

Display Architettura di Comunicazione AGP 2x, 4x e 8x (banda massima 528 MB/sec) PCI Express PCI Express (la banda massima teorica è di 4 GB/sec in ingresso e di 4 GB/sec in uscita contemporaneamente) Efficiente Co-Processore Off-Screen Multi-Pass Algorithm

Architettura PIPELINE GRAFICA

Traditional Traditional Graphics Pipeline Le operazioni sono eseguite in relativo isolamento. Questo significa che l'elaborazione di un dato vertice o fragment non influisce sugli altri. Primitive Assembly ( 2D ) Position (x,y,z) Normal (x,y,z) Color (r,g,b,a) Vertex Model ( 3D ) Pixel colorati Render ( 2D ) fragment Rasterizzazione ( 2D ) Vertex Model Position (x,y,z) Normal (x,y,z) Color (r,g,b,a) Multi-Pass Algorithm La Pipeline Grafica è una pipeline di processori con differenti caratteristiche (tipicamente processori SIMD o MIMD) che operano su stream di primitive grafiche (vertici, frammenti, texture …)

Recent Recent Graphics Pipeline Multi-Pass Algorithm MIMD SIMD

Recent Recent Graphics Pipeline Off-Screen L’estensione Framebuffer object (FBO) permette il multi-RENDER TO TEXTUREs MULTIPASS Algorithm RENDER TO TEXTURE (PING PONG)

New New Graphics Pipeline FBO

New New Graphics Pipeline MIMD

VERTEX Processing

Vertex Processing Trasform Vertex 3D Vertex 2D 3D Model 2D Image glu Perspective glu LookAt Lighting glu Perspective glu LookAt gl Lightfv

Vertex Processing

Vertex Processor – I/O

FRAGMENT Processing

Fragment Processor - Shading y1y1 x1x1 (r1,g1,b1,a1) y2y2 x2x2 (r2,g2,b2,a2) (r2,g2,b2,a2) = F ( (r1,g1,b1,a1), TEX ) TEX F è il fragment shader (il programma che colora il frammento corrente utilizzando una o più texture) Multi-Pass Algorithm Immagine 2D RASTERIZZATA Immagine 2D RENDERIZZATA INPUTOUTPUT NB: L’I/O è una lettura / scrittura ordinata

Fragment Processor – I/O

Architettura SIMD

Streaming – elaborazione SIMD INPUT Stream OUTPUT Stream p0p0 p1p1 p2p2 p3p3 pnpn p0p0 p1p1 p2p2 p3p3 pnpn STREAM: vettore ordinato di dati (vertici o frammenti) U0U0 U1U1 U2U SIMD Processor KERNEL: opera su ogni elemento dello stream indipendentemente K K K uniform vec3 LightPosition; const float SpecularContribution = 0.3; const float DiffuseContribution = SpecularContribution; varying float LightIntensity; varying vec2 MCposition; void main(void) { vec3 ecPosition = vec3(gl_ModelViewMatrix * gl_Vertex); vec3 tnorm = normalize(gl_NormalMatrix * gl_Normal); vec3 lightVec = normalize(LightPosition - ecPosition); vec3 reflectVec = reflect(-lightVec, tnorm); vec3 viewVec = normalize(-ecPosition); float diffuse = max(dot(lightVec, tnorm), 0.0); float spec = 0.0; if (diffuse > 0.0) { spec = max(dot(reflectVec, viewVec), 0.0); spec = pow(spec, 16.0); } LightIntensity = DiffuseContribution * diffuse + SpecularContribution * spec; MCposition = gl_Vertex.xy; gl_Position = ftransform(); } Kernel Letture Ordinate Input Ordinato oppure Scritture Ordinate Output Ordinato oppure Flussi INDIPENDENTI

Fragment Streaming FU Letture Ordinate Scritture Ordinate Letture Random Input Ordinato Output Ordinato oppure Texture (r,g,b,a) Multi-Pass Algorithm Una texture può essere vista come un array bidimensionale o tridimensionale Display FBO based Fragment Processor

Architettura Gerarchia di Memoria

Ho quattro tipi astrazioni grafiche in corrispondenza dei seguenti stream: · Vertex stream · Texture stream · Fragment stream · Framebuffer stream ( Il Framebuffer stream comincia e termina all’interno della GPU) Mem.CENTRALE Cache Registri Mem.VIDEO ALU GRAFICAGRAFICA INTERFACCIAINTERFACCIA Utilizzano particolari accessi a memoria utilizzando specifiche primitive come vertici, fragment, texture e framebuffer OpenGL Direct3D

Texture Stream + FB Stream FB Stream Texture Stream Multipass Algorirhm Render to Texture E’ necessaria L’estensione GLEW delle OpenGL per gestire il Framebuffer Object (FBO)

Architettura PROGRAMMABILE

Programmabilità della GPU

Pipeline GPU unità parallele z-cull scarta i pixel che sono occlusi da oggetti Assemble primitives I vertici sono poi raggruppati in primitive: punti, linee e triangoli. Rasterizzazione calcola quanti fragment compongono ogni primitiva Fragment è un “possibile” pixel I fragment lasciano i fragment processor nell'ordine in cui sono stati rasterizzati e fluiscono all'unità z-compare e all'unità blend, che eseguono vari test, quindi il colore finale viene scritto sul render target o sul framebuffer. Cull / Clip / Setup esegue le operazioni pre-primitiva, rimuovendo le primitive che non sono visibili perché dietro la visuale e ritagliando le primitive che intersecano il riquadro visualizzabile. Quad / RGBA 1 – 128 unità parallele

Riepilogo sulla Programmabilità Le zone non programmabili, posso comunque sfruttarle, come blocchi decisionali, per scartare determinate porzioni dello stream in input senza ricorrere a codice aggiuntivo. Tale tecnica sicuramente alleggerisce il codice degli shader file ma il vero vantaggio risiede nel guadagno ottenuto in fase di esecuzione.

GPU Linguaggi di programmazione

I Metalinguaggi non sono linguaggi veri e propri ma delle librerie che incluse in un linguaggio di programmazione aggiungono nuovi comandi di facile lettura e scrittura che facilitano il lavoro del programmatore. Sia Sh che Brook sono metalinguaggi che si appoggiano al C++, e permettono l'utilizzo della GPU come coprocessore. La differenza principale tra Sh e Brook è che il primo si propone per un utilizzo grafico, ma facilita la stesura anche di applicazioni general purpose mentre Brook è specializzato per la general purpose computation. Inoltre Brook ha un suo compilatore che traduce il codice in Cg che poi deve essere ricompilato, mentre Sh viene compilato direttamente insieme al codice C++, saltando questa fase intermedia. Linguaggi di Shading Le differenze spesso sono puramente sintattiche mentre l'insieme delle funzioni disponibili è praticamente identico. Gestiscono array ed è possibile definire strutture, prevedono controlli di flusso quali le condizioni, i cicli e infine le chiamate di funzioni. Data la natura dei dati che devono gestire, il supporto a vettori e matrici e relativi operatori matematici sono fortemente ottimizzati ed è prevista tutta una serie di funzioni tipiche dell'ambiente grafico. GLSL

Linguaggi di Shading - GLSL vs Cg

OpenGL/Direct3D Interfacce: OpenGL / Direct3D La vera differenza sta nella portabilità.

OpenGL/Direct3D Interfacce: OpenGL / Direct3D

Compilazione Dinamica OpenGL

Gestori di finestre: GLUT / SDL La visualizzazione avviene in una finestra messa a disposizione dal window system: Il frame buffer viene mappato sulla finestra Utilizza il paradigma event driven programming Gestione interazione applicazione utente tramite callback (message handlers ecc.) attivate in risposta a vari eventi (messaggi) gestiti dal sistema operativo (pressione di un tasto del mouse o della tastiera, reshape della finestra, ecc.) Il flusso principale dell’applicazione è in mano all’utente, o meglio al sistema operativo che intercetta le azioni dell’utente OpenGL è indipendente dallo specifico window system, quindi non ha modo di fare da solo questa mappatura

Shader ver. 2.0 PIXEL Shader 2.0 PIXEL Shader 1.0 VERTEX Shader 2.0

NVIDIA G80 Architecture

Interconnessione SLI Link Interface Scalabile SLI Frame Rendering: Combina due schede grafiche PCI Express con un connettore SLI per scalare in modo trasparente le prestazioni delle applicazioni su un singolo display, presentandole al sistema operativo come un’unica scheda grafica SLI Multi View: Combina la potenza di due schede grafiche NVIDIA Quadro PCI Express per estendere su più display una singola finestra di un’applicazione OpenGL ad accelerazione hardware, eseguire una singola applicazione per GPU con più output su display, o abilitare altri usi flessibili di due schede grafiche PCI Express.

NVIDIA G80 Architecture

Destinata ad appassionati di videogame NVIDIA GeForce 8800 GTX 700 dollari

Set di Driver specificamente Indirizzato ad applicazioni professionali dollari 3000 dollari