Computer Graphics
Marco Tarini
GRAPHIC HARDWARE
Università dell’Insubria
Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2014/15
Hardware specializzato per il rendering
• "GPU":
– Graphics Processing Unit – La CPU della scheda video – Instruction Set specializzato!
• Architettura a pipeline
– a "catena di montaggio"
• Modello di computazione SIMD
– sfrutta l'alto grado di parallelismo insito nel problema
• Possiede la propria memoria RAM a bordo – "RAM CPU" vs "RAM GPU"
– grandi copie di memoria da una all'altra dispendiose
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Visione di insieme:
Hardware specializzato per il rendering
• principali produttori:
– NVidia e AMD (ATI)
(e Intel - schede integrate) – e anche: Qualcomm, Matrox
– supercomp: SUN
• potenza di calcolo – migliaia di GFlops!
• bus molto performante – e.g. PCI-express: ~
16 GB/sM a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Visione di insieme:
Schema (semplificato) di: “PC con scheda video”
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
BUS
CPU
ALU
(central)
RAM
Disk Scheda video
…
bus interno bus interno
(scheda video)
(sch. video) RAM
GPU
Hardware dedicato alla grafica : storia
– ~30 anni:
• dalla metà degli '80 (e.g.: SGI Iris - 1986)
– dalla metà dei '90, la fiaccola passa dai mainframes ai PC
– progressi enormi
• nella efficienza
– ancora più velocemente che in altri campi dell’IT
• nella funzionalità
– aumentano i task che è possibile demandare all'HW spec.
– filosofia di fondo rimasta la stessa
• paradigma di rendering:
basato principalmente su rasterizzazione di triangoli
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
CPU vs GPU: Giga FLOPS / sec (single prec)
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
img by Karl Rupp
CPU vs GPU: Giga FLOPS / sec (dobule prec)
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
img by Karl Rupp
(main reason: GP GPU )
CPU vs GPU: how many proc. elements
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
CPU
• Transistors:
<20% ALU
>80% control più flessibilità
GPU
• Transistors:
~90% ALU
~10% control più potenza!
CPU vs GPU
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a CONTROL
ALU ALU ALU ALU
CHACHE
1.4 G transistors 1 TeraFLOP
Hardware specializzato per il rendering
• Vantaggio: efficienza
• instruction set specializzato
– (computazioni più comuni sono hard-wired)
• computazioni in parallelo:
1. fra CPU e GPU
» rendering demandato alla scheda grafica
» resto dell'applicazione libera di utilizzare la CPU e RAM base
2. a volte: fra GPU distinte (es. più schede sullo stesso BUS) 3. fra le fasi del pipeline (vanno tutte in parallelo)
4. dentro ogni fase del pipeline (più sottoprocess. per fase) 5. instruction level: operazioni operano su vettori di 4 operandi
• Svantaggio: rigidità
• scelta quasi obbligata dell'approccio al rendering utilizzato
• ... quali approcci al rendering?
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
... Rasterization-Based Rendering
• più specificatamente...
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
vertici 3D
fragment process pixels
finali
"frammenti"
(fragments) transform
z x
v
0v
1v
2rasterizer y
triangolo 2D a schermo
(2D screen triangle)
v
0v
1v
2carico di lavoro per vertice (sottosistema geometrico)
carico di lavoro per frammento (~per pixel)
(sottosistema raster)
... Rasterization-Based Rendering
• Dove è il collo di bottiglia?
– nel sistema geometrico?
• (l'applicaizone è transofrm-limited sinonimo: geometry-limited ) – nel sistema raster?
• (applicaizone è fill-limited ) – nel bus?
• (applicaizone è bus-limited sin: bandwidth-limited ) – nella CPU?
• (applicaizone è CPU-limited )
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
perché è importante scoprirlo?
come si può predirre (in teoria)?
come si può verificare
in pratica?
Note sulla GPU odierne
• Stima delle prestazioni:
i produttori scrivono tanti numeri, tra i quali:
– Trasformazioni per secondo (sottosistema geometrico) – Fill-rate
(MB al sec, o in frammenti al secondo) – Dimensioni Memoria Video
• I primi due sono da prendersi con le molle
– Sono prestazioni picco,
(nella pratica valgono solo su apposito esempio)
– ma danno un'idea
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Esercizio
• State effettuando il rendering di un modello composto da un milione di triangoli su un display con risoluzione 1280 x1024 pixel. Il rendering finale occupa l'80% del display. La scheda che state utilizzando ha una
performance di 20 milioni di triangoli al secondo ed un fill-rate di 20 Mpixel al secondo.
• Qual'è il numero massimo di fotogrammi al secondo (fps) che potete ottenere?
• Il sistema è fill-limited o geometry-limited?
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Soluzione:
– 1280x1024x0.8 = 838.860,8 numero di pixels da accendere per un rendering – 20*2^20=20.571.920 numero di pixels che la scheda può rasterizzare al sec – Il sottosistema raster può produrre:
20.571.920 / 838.860,8 = 25 fotogrammi al secondo – Il sottositema geometrico può produrre
20 * 10^6 / 10^6 = 20 fotogrammi al secondo Quindi la risposta è 20, e il sistema è transform-limited.
Rasterization-Based HW-Supported Rendering
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
fra m m en ti (ca nd id at i p ixe ls)
Ve rti ci (p un ti in R
3) pixel
finali
(nello screen-buffer)
Ve rti ci pr oi et ta ti (p un ti in R
2)
Zco m pu ta zi on i pe r v er tic e
rasterizer
co m pu ta zi on i pe r f ra m m en to set- up
componenti fisiche dell'HW!
Pipeline → Parallelismo → Efficienza
inoltre, molte componenti sono replicate
(negli stages collo di bottiglia)
Fragment proces.
Vertex porcessor
Rasterization-Based HW-Supported Rendering:
triangoli
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
fra m m en ti (ca nd id at i p ixe ls)
Ve rti ci (p un ti in R
3) pixel
finali
(nello screen-buffer)
Ve rti ci pr oi et ta ti (p un ti in R
2)
Zco m pu ta zi on i pe r v er tic e
rasterizer
co m pu ta zi on i pe r f ra m m en to
z y
x
v
0v
1v
2set- up
v
0v
1v
2Rasterization-Based HW-Supported Rendering:
triangoli
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
fra m m en ti (ca nd id at i p ixe ls)
3 Ve rti ci (p un ti in R
3) pixel
finali
(nello screen-buffer)
3 Ve rti ci pr oi et ta ti (p un ti in R
2)
Zco m pu ta zi on i pe r v er tic e
rasterizer triangoli
co m pu ta zi on i pe r f ra m m en to
z y
x
v
0v
1v
2set- up
v
0v
1v
2Rasterization-Based HW-Supported Rendering:
segmenti
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
fra m m en ti (ca nd id at i p ixe ls)
2 Ve rti ci (p un ti in R
3) pixel
finali
(nello screen-buffer)
2 Ve rti ci pr oi et ta ti (p un ti in R
2)
Zco m pu ta zi on i pe r v er tic e
rasterizer triangoli
co m pu ta zi on i pe r f ra m m en to
z y
x v
0v
1set- up
v
0v
1rasterizer segmenti set- up
Rasterization-Based HW-Supported Rendering:
punti
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
fra m m en ti (ca nd id at i p ixe ls)
Ve rti ce (p un to in R
3) pixel
finali
(nello screen-buffer)
Ve rti ce pr oi et ta to (p un to in R
2)
Zco m pu ta zi on i pe r v er tic e
rasterizer triangoli
co m pu ta zi on i pe r f ra m m en to
z y
x v
1set- up
v
1rasterizer segmenti set- up
rasterizer punti set- up
esempio di point "splat"
(point splatting)
Rasterization-Based HW-Supported Rendering:
alcune regole
1. Ogni vertice viene trasformato
– proiettato da spazio 3D (spazio “oggetto”) a spazio 2D (spazio “schermo”) – indipendentemente dagli altri vertici
• (deve poter avvenire in parallelo!)
– indipendentemente da quale primitiva fa parte 2. Ogni primitiva viene rasterizzata in 2D
– primitiva = triangolo, segmento, o punto
• rasterizzatore distinti per ogni tipo di primitiva – indipendentemente dalle altre primitive – rasterizzare = produrre i frammenti corrispondenti 3. Ogni frammento in pos [X,Y] viene processato
– indipendentemente dagli altri frammenti
– indipendentemente da quale primitiva lo ha generato – output della computazione: un pixel nello screen buffer (RGB)
• quello a pos [X,Y] (prefissata, la computazione decide solo RGB, non X,Y) M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
in p ar al le lo (in c as ca ta ) (in p ip el in e) (a c at en a di m on ta gg io )
Rasterization-based HW-supported rendering
• posso disegnare solo triangoli (3D) – o al limite da punti, o segmenti
• come sfruttare al meglio questa primitiva?
• see next lecture!
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Computer Graphics
Marco Tarini
Lezione 2.5: CG abstraction layers
Università dell’Insubria
Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2014/15
Evoluzione dell’HW dedicato alla grafica
• Progresso congiunto HW e Algoritmi – Un po' come ruota e strada
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
tecnologia ruota
tecnologia strada
te cn ic he a lg or itm ic he sv ilu pp i h ar dw ar e
continua contaminazione fra livelli diversi!
Livelli di astrazione (abstraction layers)
Scheda Grafica Driver Scheda grafica
API Applicazioni
Monitor Algoritmi
SDK
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Livelli di astrazione (abstraction layers)
Scheda Grafica Driver Scheda grafica
API Applicazioni
Monitor
Bomb jack - Tehkan 1984
es: tubo catodico :
Display vettoriali:
Display raster CRT : Algoritmi
SDK
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Livelli: Monitor
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Scheda Grafica Driver Scheda grafica
API Applicazioni
Monitor
Display raster LCD (Liquid Crystal Display) liquido + polarizzazione luce
Plasma display per pixel:
xeno ionizzato via elettrodi
Proiettori LCD o DLP.
Specchietti controllati che riflettono luce Algoritmi
SDK
Livelli: Scheda grafica
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Scheda Grafica Driver Scheda grafica
API Applicazioni
Hardware specializzato per CG
Monitor Algoritmi
SDK
Livelli: Driver
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Scheda Grafica Driver Scheda grafica
API Applicazioni
Monitor
Driver:
- insieme di routine - controlla le periferiche HW - basso livello
fornito dai produttori HW
Algoritmi
SDK
Livelli: API
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Scheda Grafica Driver Scheda grafica
API Applicazioni
Monitor
Application Program Interface
Insieme di routines - (sotto forma di libreria) - medio livello - per lo sviluppatore
le due principali:
• OpenGL
(e OpenGL-ES, e WebGL)
• Direct3D
es: routines dell’API OpenGL
glBegin(GL_LINES);
glVertex2f(0.0,0.0);
glVertex2f(1.0,1.0);
glEnd();
Algoritmi SDK
Livelli: Algoritmi
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Scheda Grafica Driver Scheda grafica
API Applicazioni
Monitor Algoritmi
SDK
Il dominio dello sviluppatore!
L’esempio precendente è l’implementaz dell’algo algoritmo (*) per disegnare la diagonale dello schermo
(*) molto banale
Livelli: Algoritmi
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Scheda Grafica Driver Scheda grafica
API Applicazioni
Monitor Algoritmi
SDK
Quando un algoritmo che implementa una nuova funzionalità ha successo può venire incluso a livello dell’API.
• decide chi la scrive:
per DirectX decide Microsoft per OpenGL decide il Khronos Group (consorizio non-profit di industrie)
...
API
Scheda Grafica Driver Scheda grafica
Livelli: SDK
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Scheda Grafica Driver Scheda grafica
API Algoritmi
SDK Applicazioni
Monitor
Software Development Kit
tutto quel che serve per sviluppare un’applicazione
ambiente di sviluppo (es: .net, devcpp) librerie
strumenti per la
condivisione/sincronizzazione del codice
manualistica, guide online
esempi, benchmarks
...
Livelli: applicazioni
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a