• Non ci sono risultati.

3 ) (punti in R 2 ) (punti in R (candidati pixels) 3 ) (punti in R 2 ) (punti in R (candidati pixels)

N/A
N/A
Protected

Academic year: 2021

Condividi "3 ) (punti in R 2 ) (punti in R (candidati pixels) 3 ) (punti in R 2 ) (punti in R (candidati pixels)"

Copied!
9
0
0

Testo completo

(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 bus interno

(scheda video)

(sch. video) RAM

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 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

0

v

1

v

2

rasterizer y

triangolo 2D a schermo

(2D screen triangle)

v

0

v

1

v

2

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-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?

(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'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

)

Z

co 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

)

Z

co 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

0

v

1

v

2

set- up

v

0

v

1

v

2

(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 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

)

Z

co 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

0

v

1

v

2

set- up

v

0

v

1

v

2

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

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

)

Z

co 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

0

v

1

set- up

v

0

v

1

rasterizer 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

)

Z

co 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

1

set- up

v

1

rasterizer 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 )

(6)

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

(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 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

(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 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

...

(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…

Riferimenti

Documenti correlati

D’altra parte la successione {f n } non ha

Universit` a degli Studi di Roma Tor Vergata.. Corso di Laurea

Si pu` o considerare la naturale estensione di insiemi di punti di un piano (spazio a due dimensioni) cio` e, riferendo il piano a due assi cartesiani ortogonali, insiemi di

Lo svolgimento di questo esercizio va consegnato presso l’ufficio servizi Generali entro venerd`ı 9 Novem- bre (l’ufficio chiude

(1) Le coordinate dei punti medi dei segmenti sono la media delle rispettive coordinate... Utilizziamo “∼” per indicare che due matrici hanno lo

L’intersezione dei 3 piani equidistanti dai punti A, B e C (vertici di un triangolo rettangolo ABC) è perciò la retta perpendicolare al piano del triangolo passante per il

Ad esempio utilizzando lo sviluppo di Laplace rispetto all’ultima colonna, rapida- mente si vede che det(A) = 0.. Tuttavia considerando la sottomatrice A(2, 3, 4|2, 3, 4), notiamo

Il fatto che una tale composizione venga un’isometria lineare con matrice speciale ortogonale (e non pi` u ortogonale non-speciale) ` e chiaramente conseguenza del Teorema di Binet