Computer Graphics Hardware specializzato per il...
Transcript of Computer Graphics Hardware specializzato per il...
1
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/s
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: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
CPUALU
(central)RAM
Disk
Scheda video
…bus internobus interno(scheda video)
RAM(sch. video)
GPU
2
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
3
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
CONTROLALU 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
vertici3D
fragmentprocess
pixelsfinali
"frammenti"(fragments)
transform
z x
v0v1
v2
rasterizer
y
triangolo 2Da schermo(2D screen
triangle)
v0v1
v2
carico 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-limitedsinonimo: 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é è importantescoprirlo?
come si può predirre(in teoria)?
come si può verificarein pratica?
4
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'ideaM 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ò produrre20 * 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
fram
men
ti(c
andi
dati
pixe
ls)
Verti
ci
(pun
ti in
R3 ) pixel
finali(nello
screen-buffer)
Verti
cipr
oiet
tati
(pun
ti in
R2 )
Z com
puta
zion
ipe
r ver
tice
rasterizer
com
puta
zion
ipe
r fra
mm
ento
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
fram
men
ti(c
andi
dati
pixe
ls)
Verti
ci
(pun
ti in
R3 ) pixel
finali(nello
screen-buffer)
Verti
cipr
oiet
tati
(pun
ti in
R2 )
Z com
puta
zion
ipe
r ver
tice
rasterizer
com
puta
zion
ipe
r fra
mm
ento
z
y
x
v0v1
v2
set-up
v0v1
v2
5
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
mm
enti
(can
dida
ti pi
xels
)
3 Ve
rtici
(p
unti
in R
3 ) pixelfinali
(nello screen-buffer)3
Verti
cipr
oiet
tati
(pun
ti in
R2 )
Z com
puta
zion
ipe
r ver
tice
rasterizer triangoli
com
puta
zion
ipe
r fra
mm
ento
z
y
x
v0v1
v2
set-up
v0v1
v2
Rasterization-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
fram
men
ti(c
andi
dati
pixe
ls)
2 Ve
rtici
(p
unti
in R
3 ) pixelfinali
(nello screen-buffer)2
Verti
cipr
oiet
tati
(pun
ti in
R2 )
Z com
puta
zion
ipe
r ver
tice
rasterizer triangoli
com
puta
zion
ipe
r fra
mm
ento
z
y
x
v0
v1
set-up
v0
v1
rasterizersegmenti
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
fram
men
ti(c
andi
dati
pixe
ls)
Verti
ce
(pun
to in
R3 ) pixel
finali(nello
screen-buffer)
Verti
cepr
oiet
tato
(pun
to in
R2 )
Z com
puta
zion
ipe
r ver
tice
rasterizer triangoli
com
puta
zion
ipe
r fra
mm
ento
z
y
x
v1
set-up
v1
rasterizersegmenti
set-up
rasterizerpunti
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
aral
lelo
(in c
asca
ta)
(in p
ipel
ine)
(a c
aten
a di
mon
tagg
io)
6
Rasterization-based HW-supported rendering
• posso disegnare solo triangoli (3D)– o al limite da punti, o segmenti
• come sfruttare al meglioquesta 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
tecnologiaruota
tecnologiastrada
tecn
iche
alg
oritm
iche
svilu
ppi h
ardw
are
continuacontaminazionefra 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
7
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 displayper 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
8
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 unanuova funzionalità ha successo può venire incluso a livello dell’API.• decide chi la scrive:
per DirectX decide Microsoftper 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� ...
9
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
Scheda Grafica
Driver Scheda grafica
API
Applicazioni
Monitor
Algoritmi
SDK
• stand alone – (“desktop”)
• web based – (“3D on the browser”)– Soluzioni emegenti:
• WebG• Unity…