Computer Graphics Hardware specializzato per il...

9
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 CPU ALU (central) RAM Disk Scheda video bus interno (scheda video) RAM (sch. video) GPU

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…