Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoGraziella Grimaldi Modificato 9 anni fa
1
Graphic Processing Unit GPU
2
ARCHITETTURA DI COMUNICAZIONE
3
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
4
Architettura PIPELINE GRAFICA
5
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 …)
6
Recent Recent Graphics Pipeline Multi-Pass Algorithm MIMD SIMD
7
Recent Recent Graphics Pipeline Off-Screen L’estensione Framebuffer object (FBO) permette il multi-RENDER TO TEXTUREs MULTIPASS Algorithm RENDER TO TEXTURE (PING PONG)
8
New New Graphics Pipeline FBO
9
New New Graphics Pipeline MIMD
10
VERTEX Processing
11
Vertex Processing Trasform Vertex 3D Vertex 2D 3D Model 2D Image glu Perspective glu LookAt Lighting glu Perspective glu LookAt gl Lightfv
12
Vertex Processing
13
Vertex Processor – I/O
14
FRAGMENT Processing
15
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
16
Fragment Processor – I/O
17
Architettura SIMD
18
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 U2U2 6 3 0 7 4 1 8 5 2 SIMD Processor KERNEL: opera su ogni elemento dello stream indipendentemente K K K uniform vec3 LightPosition; const float SpecularContribution = 0.3; const float DiffuseContribution = 1.0 - 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 6 3 0 7 4 1 8 5 2 Letture Ordinate Input Ordinato oppure Scritture Ordinate Output Ordinato oppure Flussi INDIPENDENTI
19
Fragment Streaming FU 765 4 3 2 12 1 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 7 4 1 8 5 2 9 6 3 765 4 3 2 12 1 FBO based Fragment Processor
20
Architettura Gerarchia di Memoria
21
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
22
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)
23
Architettura PROGRAMMABILE
24
Programmabilità della GPU
25
Pipeline GPU 1 - 8 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
26
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.
27
GPU Linguaggi di programmazione
28
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
29
Linguaggi di Shading - GLSL vs Cg
30
OpenGL/Direct3D Interfacce: OpenGL / Direct3D La vera differenza sta nella portabilità.
31
OpenGL/Direct3D Interfacce: OpenGL / Direct3D
32
Compilazione Dinamica OpenGL
33
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
34
Shader ver. 2.0 PIXEL Shader 2.0 PIXEL Shader 1.0 VERTEX Shader 2.0
35
NVIDIA G80 Architecture
36
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.
37
NVIDIA G80 Architecture
38
Destinata ad appassionati di videogame NVIDIA GeForce 8800 GTX 700 dollari
39
Set di Driver specificamente Indirizzato ad applicazioni professionali 3.000 dollari 3000 dollari
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.