+ All Categories
Home > Documents > Graphic Processing Unit GPU. ARCHITETTURA DI COMUNICAZIONE.

Graphic Processing Unit GPU. ARCHITETTURA DI COMUNICAZIONE.

Date post: 02-May-2015
Category:
Upload: graziella-grimaldi
View: 215 times
Download: 0 times
Share this document with a friend
Popular Tags:
32
Graphic Processing Unit GPU
Transcript
Page 1: Graphic Processing Unit GPU. ARCHITETTURA DI COMUNICAZIONE.

Graphic Processing Unit

GPU

GPUARCHITETTURA DI COMUNICAZIONE

Display

Architettura di ComunicazioneAGP 2x 4x e 8x (banda massima 528 MBsec)

PCI ExpressPCI Express (la banda massima teorica egrave di 4 GBsec in ingresso e di 4 GBsec in uscita contemporaneamente)

EfficienteCo-Processore

Off-ScreenMulti-PassAlgorithm

ArchitetturaPIPELINE GRAFICA

TraditionalTraditional Graphics Pipeline

Le operazioni sono eseguite in relativo isolamento Questo significa che lelaborazione di

un dato vertice o fragment non influisce sugli altri

Primitive Primitive AssemblyAssembly

( 2D )( 2D )

Position (xyz)Normal (xyz)Color (rgba)

Vertex ModelVertex Model

( 3D )( 3D )

Pixel colorati

RenderRender

( 2D )( 2D )

fragment

RasterizzazioneRasterizzazione

( 2D )( 2D )( 2D )( 2D )

Vertex ModelVertex Model

Position (xyz)Normal (xyz)

Color (rgba)

Multi-PassAlgorithm

La Pipeline Grafica egrave una pipeline di processori con differenti caratteristiche (tipicamente

processori SIMD o MIMD) che operano su stream di primitive grafiche (vertici frammenti texture

hellip)

RecentRecent Graphics Pipeline

Multi-Pass Algorithm

MIMD

SIMD

RecentRecent Graphics Pipeline

Off-Screen

Lrsquoestensione Framebuffer object (FBO) permette il

multi-RENDER TO TEXTUREs

MULTIPASS Algorithm RENDER TO TEXTURE

(PING PONG)

NewNew Graphics Pipeline

MIMD

VERTEX Processing

Vertex ProcessingVertex ProcessingTrasform

Vertex 3DVertex 2D

3D Model 2D Image

gluPerspectivegluLookAt

Lighting

gluPerspective

gluLookAt

glLightfv

FRAGMENT Processing

Fragment Processor - Fragment Processor - ShadingShading

y1

x1

(r1g1b1a1)

y2

x2

(r2g2b2a2)

(r2g2b2a2) = F( (r1g1b1a1) TEX )

TEXF egrave il fragment shader (il programma che colora il

frammento corrente utilizzando una o piugrave texture)

Multi-PassAlgorithm

Immagine 2DRASTERIZZATA

Immagine 2DRENDERIZZATA

INPUT OUTPUT

NB LrsquoIO egrave una lettura scrittura ordinata

ArchitetturaSIMD

Streaming ndash elaborazione SIMD

INPUT Stream

OUTPUT Stream

p0p1p2p3pn p0p1p2p3pn

STREAM vettore ordinato di dati (vertici o frammenti)

U0

U1

U2

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

const float DiffuseContribution = 10 - 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) 00)

float spec = 00

if (diffuse gt 00)

spec = max(dot(reflectVec viewVec) 00)

spec = pow(spec 160)

LightIntensity = DiffuseContribution diffuse +

SpecularContribution spec

MCposition = gl_Vertexxy

gl_Position = ftransform()

Kernel

6 3 0

7 4 1

8 5 2LettureOrdinate

InputOrdinato

oppure

ScrittureOrdinate

OutputOrdinato

oppure

FlussiINDIPENDENTI

Fragment Streaming

FU

FU

FU7 6 5 4 3 2 1

LettureOrdinate

ScrittureOrdinate

LettureRandom

InputOrdinato

OutputOrdinato

oppure oppure

Texture

(rgba)

Multi-PassAlgorithm

Una texture puograve essere vistacome un array bidimensionale

o tridimensionale

Display

7 4 1

8 5 2

9 6 37 6 5 4 3 2 1

FBO based

Fragment Processor

ArchitetturaGerarchia di Memoria

Gerarchia di Memoria

Ho quattro tipi astrazioni grafiche in corrispondenza dei seguenti streammiddot Vertex streammiddot Texture streammiddot Fragment streammiddot Framebuffer stream (Il Framebuffer stream comincia e termina allrsquointerno della GPU)

MemCENTRALE Cache Registri

MemVIDEO

ALU

GRAFICA

INTERFACCIA

Utilizzano particolari accessi a memoria utilizzando specifiche primitive come vertici fragment texture e framebuffer

OpenGLDirect3D

Texture Stream + FB Stream

FB Stream

TextureStreamMultipass Algorirhm

Render to Texture

Ersquo necessaria Lrsquoestensione GLEW delle OpenGL per gestire il Framebuffer

Object (FBO)

ArchitetturaPROGRAMMABILE

Programmabilitagrave della GPU

Pip

elin

e G

PU

1 - 8 unitagrave parallele

z-cull scarta i pixel che sono occlusi da

oggetti

Assemble primitivesI vertici sono poi raggruppati in primitive

punti linee e triangoli

Rasterizzazione calcola quanti fragment compongono ogni

primitivaFragment egrave un ldquopossibilerdquo pixel

I fragment lasciano i fragment processor

nellordine in cui sono stati rasterizzati

e fluiscono allunitagravez-compare e allunitagrave blend che eseguono

vari test quindiil colore finale viene

scritto sul render target o sul framebuffer

Cull Clip Setupesegue le operazioni pre-primitiva

rimuovendo le primitive che non sono visibili percheacute dietro la visuale e

ritagliando le primitive che intersecano il riquadro visualizzabile

Quad RGBA

1 ndash 128 unitagrave parallele

Riepilogo sulla Programmabilitagrave

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

GPULinguaggi di

programmazione

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 programmatoreSia Sh che Brook sono metalinguaggi che si appoggiano al C++ e permettono lutilizzo della GPU come coprocessore La differenza principale tra Sh e Brook egrave che il primo si propone per un utilizzo grafico ma facilita la stesura anche di applicazioni general purpose mentre Brook egrave 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 linsieme delle funzioni disponibili egrave praticamente identico

Gestiscono array ed egrave 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 egrave prevista tutta una serie di funzioni tipiche dellambiente grafico

GLSLGLSL

Linguaggi di Shading - GLSL vs Cg

Interfacce OpenGLOpenGL Direct3DDirect3D

La vera differenza sta nella portabilitagrave

Interfacce OpenGLOpenGL Direct3DDirect3D

Compilazione Dinamica

OpenGL

Gestori di finestre GLUT SDLLa visualizzazione avviene in una finestramessa a disposizione dal window system1048729 Il frame buffer viene mappato sulla finestra

Utilizza il paradigma event driven programming1048729 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)1048729 Il flusso principale dellrsquoapplicazione egrave in mano allrsquoutente o meglio al sistema operativo che intercetta le azioni dellrsquoutente

OpenGL egrave indipendente dallo specifico window system quindi non ha modo di fare da solo questa mappatura

NVIDIAG80 Architecture

Interconnessione SLI Link InterfaceScalabile

SLI Frame Rendering Combina due schede grafiche PCI Expresscon un connettore SLI per scalare in modo trasparente le prestazionidelle applicazioni su un singolo display presentandole al sistemaoperativo come unrsquounica scheda grafica

SLI Multi View Combina la potenza di due schede grafiche NVIDIAQuadro PCI Express per estendere su piugrave display una singola finestradi unrsquoapplicazione OpenGL ad accelerazione hardware eseguire unasingola applicazione per GPU con piugrave output su display o abilitarealtri usi flessibili di due schede grafiche PCI Express

NVIDIA G80 Architecture

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 14
  • Slide 15
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 35
  • Slide 36
  • Slide 37
Page 2: Graphic Processing Unit GPU. ARCHITETTURA DI COMUNICAZIONE.

GPUARCHITETTURA DI COMUNICAZIONE

Display

Architettura di ComunicazioneAGP 2x 4x e 8x (banda massima 528 MBsec)

PCI ExpressPCI Express (la banda massima teorica egrave di 4 GBsec in ingresso e di 4 GBsec in uscita contemporaneamente)

EfficienteCo-Processore

Off-ScreenMulti-PassAlgorithm

ArchitetturaPIPELINE GRAFICA

TraditionalTraditional Graphics Pipeline

Le operazioni sono eseguite in relativo isolamento Questo significa che lelaborazione di

un dato vertice o fragment non influisce sugli altri

Primitive Primitive AssemblyAssembly

( 2D )( 2D )

Position (xyz)Normal (xyz)Color (rgba)

Vertex ModelVertex Model

( 3D )( 3D )

Pixel colorati

RenderRender

( 2D )( 2D )

fragment

RasterizzazioneRasterizzazione

( 2D )( 2D )( 2D )( 2D )

Vertex ModelVertex Model

Position (xyz)Normal (xyz)

Color (rgba)

Multi-PassAlgorithm

La Pipeline Grafica egrave una pipeline di processori con differenti caratteristiche (tipicamente

processori SIMD o MIMD) che operano su stream di primitive grafiche (vertici frammenti texture

hellip)

RecentRecent Graphics Pipeline

Multi-Pass Algorithm

MIMD

SIMD

RecentRecent Graphics Pipeline

Off-Screen

Lrsquoestensione Framebuffer object (FBO) permette il

multi-RENDER TO TEXTUREs

MULTIPASS Algorithm RENDER TO TEXTURE

(PING PONG)

NewNew Graphics Pipeline

MIMD

VERTEX Processing

Vertex ProcessingVertex ProcessingTrasform

Vertex 3DVertex 2D

3D Model 2D Image

gluPerspectivegluLookAt

Lighting

gluPerspective

gluLookAt

glLightfv

FRAGMENT Processing

Fragment Processor - Fragment Processor - ShadingShading

y1

x1

(r1g1b1a1)

y2

x2

(r2g2b2a2)

(r2g2b2a2) = F( (r1g1b1a1) TEX )

TEXF egrave il fragment shader (il programma che colora il

frammento corrente utilizzando una o piugrave texture)

Multi-PassAlgorithm

Immagine 2DRASTERIZZATA

Immagine 2DRENDERIZZATA

INPUT OUTPUT

NB LrsquoIO egrave una lettura scrittura ordinata

ArchitetturaSIMD

Streaming ndash elaborazione SIMD

INPUT Stream

OUTPUT Stream

p0p1p2p3pn p0p1p2p3pn

STREAM vettore ordinato di dati (vertici o frammenti)

U0

U1

U2

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

const float DiffuseContribution = 10 - 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) 00)

float spec = 00

if (diffuse gt 00)

spec = max(dot(reflectVec viewVec) 00)

spec = pow(spec 160)

LightIntensity = DiffuseContribution diffuse +

SpecularContribution spec

MCposition = gl_Vertexxy

gl_Position = ftransform()

Kernel

6 3 0

7 4 1

8 5 2LettureOrdinate

InputOrdinato

oppure

ScrittureOrdinate

OutputOrdinato

oppure

FlussiINDIPENDENTI

Fragment Streaming

FU

FU

FU7 6 5 4 3 2 1

LettureOrdinate

ScrittureOrdinate

LettureRandom

InputOrdinato

OutputOrdinato

oppure oppure

Texture

(rgba)

Multi-PassAlgorithm

Una texture puograve essere vistacome un array bidimensionale

o tridimensionale

Display

7 4 1

8 5 2

9 6 37 6 5 4 3 2 1

FBO based

Fragment Processor

ArchitetturaGerarchia di Memoria

Gerarchia di Memoria

Ho quattro tipi astrazioni grafiche in corrispondenza dei seguenti streammiddot Vertex streammiddot Texture streammiddot Fragment streammiddot Framebuffer stream (Il Framebuffer stream comincia e termina allrsquointerno della GPU)

MemCENTRALE Cache Registri

MemVIDEO

ALU

GRAFICA

INTERFACCIA

Utilizzano particolari accessi a memoria utilizzando specifiche primitive come vertici fragment texture e framebuffer

OpenGLDirect3D

Texture Stream + FB Stream

FB Stream

TextureStreamMultipass Algorirhm

Render to Texture

Ersquo necessaria Lrsquoestensione GLEW delle OpenGL per gestire il Framebuffer

Object (FBO)

ArchitetturaPROGRAMMABILE

Programmabilitagrave della GPU

Pip

elin

e G

PU

1 - 8 unitagrave parallele

z-cull scarta i pixel che sono occlusi da

oggetti

Assemble primitivesI vertici sono poi raggruppati in primitive

punti linee e triangoli

Rasterizzazione calcola quanti fragment compongono ogni

primitivaFragment egrave un ldquopossibilerdquo pixel

I fragment lasciano i fragment processor

nellordine in cui sono stati rasterizzati

e fluiscono allunitagravez-compare e allunitagrave blend che eseguono

vari test quindiil colore finale viene

scritto sul render target o sul framebuffer

Cull Clip Setupesegue le operazioni pre-primitiva

rimuovendo le primitive che non sono visibili percheacute dietro la visuale e

ritagliando le primitive che intersecano il riquadro visualizzabile

Quad RGBA

1 ndash 128 unitagrave parallele

Riepilogo sulla Programmabilitagrave

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

GPULinguaggi di

programmazione

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 programmatoreSia Sh che Brook sono metalinguaggi che si appoggiano al C++ e permettono lutilizzo della GPU come coprocessore La differenza principale tra Sh e Brook egrave che il primo si propone per un utilizzo grafico ma facilita la stesura anche di applicazioni general purpose mentre Brook egrave 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 linsieme delle funzioni disponibili egrave praticamente identico

Gestiscono array ed egrave 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 egrave prevista tutta una serie di funzioni tipiche dellambiente grafico

GLSLGLSL

Linguaggi di Shading - GLSL vs Cg

Interfacce OpenGLOpenGL Direct3DDirect3D

La vera differenza sta nella portabilitagrave

Interfacce OpenGLOpenGL Direct3DDirect3D

Compilazione Dinamica

OpenGL

Gestori di finestre GLUT SDLLa visualizzazione avviene in una finestramessa a disposizione dal window system1048729 Il frame buffer viene mappato sulla finestra

Utilizza il paradigma event driven programming1048729 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)1048729 Il flusso principale dellrsquoapplicazione egrave in mano allrsquoutente o meglio al sistema operativo che intercetta le azioni dellrsquoutente

OpenGL egrave indipendente dallo specifico window system quindi non ha modo di fare da solo questa mappatura

NVIDIAG80 Architecture

Interconnessione SLI Link InterfaceScalabile

SLI Frame Rendering Combina due schede grafiche PCI Expresscon un connettore SLI per scalare in modo trasparente le prestazionidelle applicazioni su un singolo display presentandole al sistemaoperativo come unrsquounica scheda grafica

SLI Multi View Combina la potenza di due schede grafiche NVIDIAQuadro PCI Express per estendere su piugrave display una singola finestradi unrsquoapplicazione OpenGL ad accelerazione hardware eseguire unasingola applicazione per GPU con piugrave output su display o abilitarealtri usi flessibili di due schede grafiche PCI Express

NVIDIA G80 Architecture

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 14
  • Slide 15
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 35
  • Slide 36
  • Slide 37
Page 3: Graphic Processing Unit GPU. ARCHITETTURA DI COMUNICAZIONE.

Display

Architettura di ComunicazioneAGP 2x 4x e 8x (banda massima 528 MBsec)

PCI ExpressPCI Express (la banda massima teorica egrave di 4 GBsec in ingresso e di 4 GBsec in uscita contemporaneamente)

EfficienteCo-Processore

Off-ScreenMulti-PassAlgorithm

ArchitetturaPIPELINE GRAFICA

TraditionalTraditional Graphics Pipeline

Le operazioni sono eseguite in relativo isolamento Questo significa che lelaborazione di

un dato vertice o fragment non influisce sugli altri

Primitive Primitive AssemblyAssembly

( 2D )( 2D )

Position (xyz)Normal (xyz)Color (rgba)

Vertex ModelVertex Model

( 3D )( 3D )

Pixel colorati

RenderRender

( 2D )( 2D )

fragment

RasterizzazioneRasterizzazione

( 2D )( 2D )( 2D )( 2D )

Vertex ModelVertex Model

Position (xyz)Normal (xyz)

Color (rgba)

Multi-PassAlgorithm

La Pipeline Grafica egrave una pipeline di processori con differenti caratteristiche (tipicamente

processori SIMD o MIMD) che operano su stream di primitive grafiche (vertici frammenti texture

hellip)

RecentRecent Graphics Pipeline

Multi-Pass Algorithm

MIMD

SIMD

RecentRecent Graphics Pipeline

Off-Screen

Lrsquoestensione Framebuffer object (FBO) permette il

multi-RENDER TO TEXTUREs

MULTIPASS Algorithm RENDER TO TEXTURE

(PING PONG)

NewNew Graphics Pipeline

MIMD

VERTEX Processing

Vertex ProcessingVertex ProcessingTrasform

Vertex 3DVertex 2D

3D Model 2D Image

gluPerspectivegluLookAt

Lighting

gluPerspective

gluLookAt

glLightfv

FRAGMENT Processing

Fragment Processor - Fragment Processor - ShadingShading

y1

x1

(r1g1b1a1)

y2

x2

(r2g2b2a2)

(r2g2b2a2) = F( (r1g1b1a1) TEX )

TEXF egrave il fragment shader (il programma che colora il

frammento corrente utilizzando una o piugrave texture)

Multi-PassAlgorithm

Immagine 2DRASTERIZZATA

Immagine 2DRENDERIZZATA

INPUT OUTPUT

NB LrsquoIO egrave una lettura scrittura ordinata

ArchitetturaSIMD

Streaming ndash elaborazione SIMD

INPUT Stream

OUTPUT Stream

p0p1p2p3pn p0p1p2p3pn

STREAM vettore ordinato di dati (vertici o frammenti)

U0

U1

U2

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

const float DiffuseContribution = 10 - 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) 00)

float spec = 00

if (diffuse gt 00)

spec = max(dot(reflectVec viewVec) 00)

spec = pow(spec 160)

LightIntensity = DiffuseContribution diffuse +

SpecularContribution spec

MCposition = gl_Vertexxy

gl_Position = ftransform()

Kernel

6 3 0

7 4 1

8 5 2LettureOrdinate

InputOrdinato

oppure

ScrittureOrdinate

OutputOrdinato

oppure

FlussiINDIPENDENTI

Fragment Streaming

FU

FU

FU7 6 5 4 3 2 1

LettureOrdinate

ScrittureOrdinate

LettureRandom

InputOrdinato

OutputOrdinato

oppure oppure

Texture

(rgba)

Multi-PassAlgorithm

Una texture puograve essere vistacome un array bidimensionale

o tridimensionale

Display

7 4 1

8 5 2

9 6 37 6 5 4 3 2 1

FBO based

Fragment Processor

ArchitetturaGerarchia di Memoria

Gerarchia di Memoria

Ho quattro tipi astrazioni grafiche in corrispondenza dei seguenti streammiddot Vertex streammiddot Texture streammiddot Fragment streammiddot Framebuffer stream (Il Framebuffer stream comincia e termina allrsquointerno della GPU)

MemCENTRALE Cache Registri

MemVIDEO

ALU

GRAFICA

INTERFACCIA

Utilizzano particolari accessi a memoria utilizzando specifiche primitive come vertici fragment texture e framebuffer

OpenGLDirect3D

Texture Stream + FB Stream

FB Stream

TextureStreamMultipass Algorirhm

Render to Texture

Ersquo necessaria Lrsquoestensione GLEW delle OpenGL per gestire il Framebuffer

Object (FBO)

ArchitetturaPROGRAMMABILE

Programmabilitagrave della GPU

Pip

elin

e G

PU

1 - 8 unitagrave parallele

z-cull scarta i pixel che sono occlusi da

oggetti

Assemble primitivesI vertici sono poi raggruppati in primitive

punti linee e triangoli

Rasterizzazione calcola quanti fragment compongono ogni

primitivaFragment egrave un ldquopossibilerdquo pixel

I fragment lasciano i fragment processor

nellordine in cui sono stati rasterizzati

e fluiscono allunitagravez-compare e allunitagrave blend che eseguono

vari test quindiil colore finale viene

scritto sul render target o sul framebuffer

Cull Clip Setupesegue le operazioni pre-primitiva

rimuovendo le primitive che non sono visibili percheacute dietro la visuale e

ritagliando le primitive che intersecano il riquadro visualizzabile

Quad RGBA

1 ndash 128 unitagrave parallele

Riepilogo sulla Programmabilitagrave

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

GPULinguaggi di

programmazione

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 programmatoreSia Sh che Brook sono metalinguaggi che si appoggiano al C++ e permettono lutilizzo della GPU come coprocessore La differenza principale tra Sh e Brook egrave che il primo si propone per un utilizzo grafico ma facilita la stesura anche di applicazioni general purpose mentre Brook egrave 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 linsieme delle funzioni disponibili egrave praticamente identico

Gestiscono array ed egrave 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 egrave prevista tutta una serie di funzioni tipiche dellambiente grafico

GLSLGLSL

Linguaggi di Shading - GLSL vs Cg

Interfacce OpenGLOpenGL Direct3DDirect3D

La vera differenza sta nella portabilitagrave

Interfacce OpenGLOpenGL Direct3DDirect3D

Compilazione Dinamica

OpenGL

Gestori di finestre GLUT SDLLa visualizzazione avviene in una finestramessa a disposizione dal window system1048729 Il frame buffer viene mappato sulla finestra

Utilizza il paradigma event driven programming1048729 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)1048729 Il flusso principale dellrsquoapplicazione egrave in mano allrsquoutente o meglio al sistema operativo che intercetta le azioni dellrsquoutente

OpenGL egrave indipendente dallo specifico window system quindi non ha modo di fare da solo questa mappatura

NVIDIAG80 Architecture

Interconnessione SLI Link InterfaceScalabile

SLI Frame Rendering Combina due schede grafiche PCI Expresscon un connettore SLI per scalare in modo trasparente le prestazionidelle applicazioni su un singolo display presentandole al sistemaoperativo come unrsquounica scheda grafica

SLI Multi View Combina la potenza di due schede grafiche NVIDIAQuadro PCI Express per estendere su piugrave display una singola finestradi unrsquoapplicazione OpenGL ad accelerazione hardware eseguire unasingola applicazione per GPU con piugrave output su display o abilitarealtri usi flessibili di due schede grafiche PCI Express

NVIDIA G80 Architecture

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 14
  • Slide 15
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 35
  • Slide 36
  • Slide 37
Page 4: Graphic Processing Unit GPU. ARCHITETTURA DI COMUNICAZIONE.

ArchitetturaPIPELINE GRAFICA

TraditionalTraditional Graphics Pipeline

Le operazioni sono eseguite in relativo isolamento Questo significa che lelaborazione di

un dato vertice o fragment non influisce sugli altri

Primitive Primitive AssemblyAssembly

( 2D )( 2D )

Position (xyz)Normal (xyz)Color (rgba)

Vertex ModelVertex Model

( 3D )( 3D )

Pixel colorati

RenderRender

( 2D )( 2D )

fragment

RasterizzazioneRasterizzazione

( 2D )( 2D )( 2D )( 2D )

Vertex ModelVertex Model

Position (xyz)Normal (xyz)

Color (rgba)

Multi-PassAlgorithm

La Pipeline Grafica egrave una pipeline di processori con differenti caratteristiche (tipicamente

processori SIMD o MIMD) che operano su stream di primitive grafiche (vertici frammenti texture

hellip)

RecentRecent Graphics Pipeline

Multi-Pass Algorithm

MIMD

SIMD

RecentRecent Graphics Pipeline

Off-Screen

Lrsquoestensione Framebuffer object (FBO) permette il

multi-RENDER TO TEXTUREs

MULTIPASS Algorithm RENDER TO TEXTURE

(PING PONG)

NewNew Graphics Pipeline

MIMD

VERTEX Processing

Vertex ProcessingVertex ProcessingTrasform

Vertex 3DVertex 2D

3D Model 2D Image

gluPerspectivegluLookAt

Lighting

gluPerspective

gluLookAt

glLightfv

FRAGMENT Processing

Fragment Processor - Fragment Processor - ShadingShading

y1

x1

(r1g1b1a1)

y2

x2

(r2g2b2a2)

(r2g2b2a2) = F( (r1g1b1a1) TEX )

TEXF egrave il fragment shader (il programma che colora il

frammento corrente utilizzando una o piugrave texture)

Multi-PassAlgorithm

Immagine 2DRASTERIZZATA

Immagine 2DRENDERIZZATA

INPUT OUTPUT

NB LrsquoIO egrave una lettura scrittura ordinata

ArchitetturaSIMD

Streaming ndash elaborazione SIMD

INPUT Stream

OUTPUT Stream

p0p1p2p3pn p0p1p2p3pn

STREAM vettore ordinato di dati (vertici o frammenti)

U0

U1

U2

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

const float DiffuseContribution = 10 - 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) 00)

float spec = 00

if (diffuse gt 00)

spec = max(dot(reflectVec viewVec) 00)

spec = pow(spec 160)

LightIntensity = DiffuseContribution diffuse +

SpecularContribution spec

MCposition = gl_Vertexxy

gl_Position = ftransform()

Kernel

6 3 0

7 4 1

8 5 2LettureOrdinate

InputOrdinato

oppure

ScrittureOrdinate

OutputOrdinato

oppure

FlussiINDIPENDENTI

Fragment Streaming

FU

FU

FU7 6 5 4 3 2 1

LettureOrdinate

ScrittureOrdinate

LettureRandom

InputOrdinato

OutputOrdinato

oppure oppure

Texture

(rgba)

Multi-PassAlgorithm

Una texture puograve essere vistacome un array bidimensionale

o tridimensionale

Display

7 4 1

8 5 2

9 6 37 6 5 4 3 2 1

FBO based

Fragment Processor

ArchitetturaGerarchia di Memoria

Gerarchia di Memoria

Ho quattro tipi astrazioni grafiche in corrispondenza dei seguenti streammiddot Vertex streammiddot Texture streammiddot Fragment streammiddot Framebuffer stream (Il Framebuffer stream comincia e termina allrsquointerno della GPU)

MemCENTRALE Cache Registri

MemVIDEO

ALU

GRAFICA

INTERFACCIA

Utilizzano particolari accessi a memoria utilizzando specifiche primitive come vertici fragment texture e framebuffer

OpenGLDirect3D

Texture Stream + FB Stream

FB Stream

TextureStreamMultipass Algorirhm

Render to Texture

Ersquo necessaria Lrsquoestensione GLEW delle OpenGL per gestire il Framebuffer

Object (FBO)

ArchitetturaPROGRAMMABILE

Programmabilitagrave della GPU

Pip

elin

e G

PU

1 - 8 unitagrave parallele

z-cull scarta i pixel che sono occlusi da

oggetti

Assemble primitivesI vertici sono poi raggruppati in primitive

punti linee e triangoli

Rasterizzazione calcola quanti fragment compongono ogni

primitivaFragment egrave un ldquopossibilerdquo pixel

I fragment lasciano i fragment processor

nellordine in cui sono stati rasterizzati

e fluiscono allunitagravez-compare e allunitagrave blend che eseguono

vari test quindiil colore finale viene

scritto sul render target o sul framebuffer

Cull Clip Setupesegue le operazioni pre-primitiva

rimuovendo le primitive che non sono visibili percheacute dietro la visuale e

ritagliando le primitive che intersecano il riquadro visualizzabile

Quad RGBA

1 ndash 128 unitagrave parallele

Riepilogo sulla Programmabilitagrave

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

GPULinguaggi di

programmazione

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 programmatoreSia Sh che Brook sono metalinguaggi che si appoggiano al C++ e permettono lutilizzo della GPU come coprocessore La differenza principale tra Sh e Brook egrave che il primo si propone per un utilizzo grafico ma facilita la stesura anche di applicazioni general purpose mentre Brook egrave 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 linsieme delle funzioni disponibili egrave praticamente identico

Gestiscono array ed egrave 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 egrave prevista tutta una serie di funzioni tipiche dellambiente grafico

GLSLGLSL

Linguaggi di Shading - GLSL vs Cg

Interfacce OpenGLOpenGL Direct3DDirect3D

La vera differenza sta nella portabilitagrave

Interfacce OpenGLOpenGL Direct3DDirect3D

Compilazione Dinamica

OpenGL

Gestori di finestre GLUT SDLLa visualizzazione avviene in una finestramessa a disposizione dal window system1048729 Il frame buffer viene mappato sulla finestra

Utilizza il paradigma event driven programming1048729 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)1048729 Il flusso principale dellrsquoapplicazione egrave in mano allrsquoutente o meglio al sistema operativo che intercetta le azioni dellrsquoutente

OpenGL egrave indipendente dallo specifico window system quindi non ha modo di fare da solo questa mappatura

NVIDIAG80 Architecture

Interconnessione SLI Link InterfaceScalabile

SLI Frame Rendering Combina due schede grafiche PCI Expresscon un connettore SLI per scalare in modo trasparente le prestazionidelle applicazioni su un singolo display presentandole al sistemaoperativo come unrsquounica scheda grafica

SLI Multi View Combina la potenza di due schede grafiche NVIDIAQuadro PCI Express per estendere su piugrave display una singola finestradi unrsquoapplicazione OpenGL ad accelerazione hardware eseguire unasingola applicazione per GPU con piugrave output su display o abilitarealtri usi flessibili di due schede grafiche PCI Express

NVIDIA G80 Architecture

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 14
  • Slide 15
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 35
  • Slide 36
  • Slide 37
Page 5: Graphic Processing Unit GPU. ARCHITETTURA DI COMUNICAZIONE.

TraditionalTraditional Graphics Pipeline

Le operazioni sono eseguite in relativo isolamento Questo significa che lelaborazione di

un dato vertice o fragment non influisce sugli altri

Primitive Primitive AssemblyAssembly

( 2D )( 2D )

Position (xyz)Normal (xyz)Color (rgba)

Vertex ModelVertex Model

( 3D )( 3D )

Pixel colorati

RenderRender

( 2D )( 2D )

fragment

RasterizzazioneRasterizzazione

( 2D )( 2D )( 2D )( 2D )

Vertex ModelVertex Model

Position (xyz)Normal (xyz)

Color (rgba)

Multi-PassAlgorithm

La Pipeline Grafica egrave una pipeline di processori con differenti caratteristiche (tipicamente

processori SIMD o MIMD) che operano su stream di primitive grafiche (vertici frammenti texture

hellip)

RecentRecent Graphics Pipeline

Multi-Pass Algorithm

MIMD

SIMD

RecentRecent Graphics Pipeline

Off-Screen

Lrsquoestensione Framebuffer object (FBO) permette il

multi-RENDER TO TEXTUREs

MULTIPASS Algorithm RENDER TO TEXTURE

(PING PONG)

NewNew Graphics Pipeline

MIMD

VERTEX Processing

Vertex ProcessingVertex ProcessingTrasform

Vertex 3DVertex 2D

3D Model 2D Image

gluPerspectivegluLookAt

Lighting

gluPerspective

gluLookAt

glLightfv

FRAGMENT Processing

Fragment Processor - Fragment Processor - ShadingShading

y1

x1

(r1g1b1a1)

y2

x2

(r2g2b2a2)

(r2g2b2a2) = F( (r1g1b1a1) TEX )

TEXF egrave il fragment shader (il programma che colora il

frammento corrente utilizzando una o piugrave texture)

Multi-PassAlgorithm

Immagine 2DRASTERIZZATA

Immagine 2DRENDERIZZATA

INPUT OUTPUT

NB LrsquoIO egrave una lettura scrittura ordinata

ArchitetturaSIMD

Streaming ndash elaborazione SIMD

INPUT Stream

OUTPUT Stream

p0p1p2p3pn p0p1p2p3pn

STREAM vettore ordinato di dati (vertici o frammenti)

U0

U1

U2

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

const float DiffuseContribution = 10 - 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) 00)

float spec = 00

if (diffuse gt 00)

spec = max(dot(reflectVec viewVec) 00)

spec = pow(spec 160)

LightIntensity = DiffuseContribution diffuse +

SpecularContribution spec

MCposition = gl_Vertexxy

gl_Position = ftransform()

Kernel

6 3 0

7 4 1

8 5 2LettureOrdinate

InputOrdinato

oppure

ScrittureOrdinate

OutputOrdinato

oppure

FlussiINDIPENDENTI

Fragment Streaming

FU

FU

FU7 6 5 4 3 2 1

LettureOrdinate

ScrittureOrdinate

LettureRandom

InputOrdinato

OutputOrdinato

oppure oppure

Texture

(rgba)

Multi-PassAlgorithm

Una texture puograve essere vistacome un array bidimensionale

o tridimensionale

Display

7 4 1

8 5 2

9 6 37 6 5 4 3 2 1

FBO based

Fragment Processor

ArchitetturaGerarchia di Memoria

Gerarchia di Memoria

Ho quattro tipi astrazioni grafiche in corrispondenza dei seguenti streammiddot Vertex streammiddot Texture streammiddot Fragment streammiddot Framebuffer stream (Il Framebuffer stream comincia e termina allrsquointerno della GPU)

MemCENTRALE Cache Registri

MemVIDEO

ALU

GRAFICA

INTERFACCIA

Utilizzano particolari accessi a memoria utilizzando specifiche primitive come vertici fragment texture e framebuffer

OpenGLDirect3D

Texture Stream + FB Stream

FB Stream

TextureStreamMultipass Algorirhm

Render to Texture

Ersquo necessaria Lrsquoestensione GLEW delle OpenGL per gestire il Framebuffer

Object (FBO)

ArchitetturaPROGRAMMABILE

Programmabilitagrave della GPU

Pip

elin

e G

PU

1 - 8 unitagrave parallele

z-cull scarta i pixel che sono occlusi da

oggetti

Assemble primitivesI vertici sono poi raggruppati in primitive

punti linee e triangoli

Rasterizzazione calcola quanti fragment compongono ogni

primitivaFragment egrave un ldquopossibilerdquo pixel

I fragment lasciano i fragment processor

nellordine in cui sono stati rasterizzati

e fluiscono allunitagravez-compare e allunitagrave blend che eseguono

vari test quindiil colore finale viene

scritto sul render target o sul framebuffer

Cull Clip Setupesegue le operazioni pre-primitiva

rimuovendo le primitive che non sono visibili percheacute dietro la visuale e

ritagliando le primitive che intersecano il riquadro visualizzabile

Quad RGBA

1 ndash 128 unitagrave parallele

Riepilogo sulla Programmabilitagrave

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

GPULinguaggi di

programmazione

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 programmatoreSia Sh che Brook sono metalinguaggi che si appoggiano al C++ e permettono lutilizzo della GPU come coprocessore La differenza principale tra Sh e Brook egrave che il primo si propone per un utilizzo grafico ma facilita la stesura anche di applicazioni general purpose mentre Brook egrave 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 linsieme delle funzioni disponibili egrave praticamente identico

Gestiscono array ed egrave 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 egrave prevista tutta una serie di funzioni tipiche dellambiente grafico

GLSLGLSL

Linguaggi di Shading - GLSL vs Cg

Interfacce OpenGLOpenGL Direct3DDirect3D

La vera differenza sta nella portabilitagrave

Interfacce OpenGLOpenGL Direct3DDirect3D

Compilazione Dinamica

OpenGL

Gestori di finestre GLUT SDLLa visualizzazione avviene in una finestramessa a disposizione dal window system1048729 Il frame buffer viene mappato sulla finestra

Utilizza il paradigma event driven programming1048729 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)1048729 Il flusso principale dellrsquoapplicazione egrave in mano allrsquoutente o meglio al sistema operativo che intercetta le azioni dellrsquoutente

OpenGL egrave indipendente dallo specifico window system quindi non ha modo di fare da solo questa mappatura

NVIDIAG80 Architecture

Interconnessione SLI Link InterfaceScalabile

SLI Frame Rendering Combina due schede grafiche PCI Expresscon un connettore SLI per scalare in modo trasparente le prestazionidelle applicazioni su un singolo display presentandole al sistemaoperativo come unrsquounica scheda grafica

SLI Multi View Combina la potenza di due schede grafiche NVIDIAQuadro PCI Express per estendere su piugrave display una singola finestradi unrsquoapplicazione OpenGL ad accelerazione hardware eseguire unasingola applicazione per GPU con piugrave output su display o abilitarealtri usi flessibili di due schede grafiche PCI Express

NVIDIA G80 Architecture

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 14
  • Slide 15
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 35
  • Slide 36
  • Slide 37
Page 6: Graphic Processing Unit GPU. ARCHITETTURA DI COMUNICAZIONE.

RecentRecent Graphics Pipeline

Multi-Pass Algorithm

MIMD

SIMD

RecentRecent Graphics Pipeline

Off-Screen

Lrsquoestensione Framebuffer object (FBO) permette il

multi-RENDER TO TEXTUREs

MULTIPASS Algorithm RENDER TO TEXTURE

(PING PONG)

NewNew Graphics Pipeline

MIMD

VERTEX Processing

Vertex ProcessingVertex ProcessingTrasform

Vertex 3DVertex 2D

3D Model 2D Image

gluPerspectivegluLookAt

Lighting

gluPerspective

gluLookAt

glLightfv

FRAGMENT Processing

Fragment Processor - Fragment Processor - ShadingShading

y1

x1

(r1g1b1a1)

y2

x2

(r2g2b2a2)

(r2g2b2a2) = F( (r1g1b1a1) TEX )

TEXF egrave il fragment shader (il programma che colora il

frammento corrente utilizzando una o piugrave texture)

Multi-PassAlgorithm

Immagine 2DRASTERIZZATA

Immagine 2DRENDERIZZATA

INPUT OUTPUT

NB LrsquoIO egrave una lettura scrittura ordinata

ArchitetturaSIMD

Streaming ndash elaborazione SIMD

INPUT Stream

OUTPUT Stream

p0p1p2p3pn p0p1p2p3pn

STREAM vettore ordinato di dati (vertici o frammenti)

U0

U1

U2

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

const float DiffuseContribution = 10 - 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) 00)

float spec = 00

if (diffuse gt 00)

spec = max(dot(reflectVec viewVec) 00)

spec = pow(spec 160)

LightIntensity = DiffuseContribution diffuse +

SpecularContribution spec

MCposition = gl_Vertexxy

gl_Position = ftransform()

Kernel

6 3 0

7 4 1

8 5 2LettureOrdinate

InputOrdinato

oppure

ScrittureOrdinate

OutputOrdinato

oppure

FlussiINDIPENDENTI

Fragment Streaming

FU

FU

FU7 6 5 4 3 2 1

LettureOrdinate

ScrittureOrdinate

LettureRandom

InputOrdinato

OutputOrdinato

oppure oppure

Texture

(rgba)

Multi-PassAlgorithm

Una texture puograve essere vistacome un array bidimensionale

o tridimensionale

Display

7 4 1

8 5 2

9 6 37 6 5 4 3 2 1

FBO based

Fragment Processor

ArchitetturaGerarchia di Memoria

Gerarchia di Memoria

Ho quattro tipi astrazioni grafiche in corrispondenza dei seguenti streammiddot Vertex streammiddot Texture streammiddot Fragment streammiddot Framebuffer stream (Il Framebuffer stream comincia e termina allrsquointerno della GPU)

MemCENTRALE Cache Registri

MemVIDEO

ALU

GRAFICA

INTERFACCIA

Utilizzano particolari accessi a memoria utilizzando specifiche primitive come vertici fragment texture e framebuffer

OpenGLDirect3D

Texture Stream + FB Stream

FB Stream

TextureStreamMultipass Algorirhm

Render to Texture

Ersquo necessaria Lrsquoestensione GLEW delle OpenGL per gestire il Framebuffer

Object (FBO)

ArchitetturaPROGRAMMABILE

Programmabilitagrave della GPU

Pip

elin

e G

PU

1 - 8 unitagrave parallele

z-cull scarta i pixel che sono occlusi da

oggetti

Assemble primitivesI vertici sono poi raggruppati in primitive

punti linee e triangoli

Rasterizzazione calcola quanti fragment compongono ogni

primitivaFragment egrave un ldquopossibilerdquo pixel

I fragment lasciano i fragment processor

nellordine in cui sono stati rasterizzati

e fluiscono allunitagravez-compare e allunitagrave blend che eseguono

vari test quindiil colore finale viene

scritto sul render target o sul framebuffer

Cull Clip Setupesegue le operazioni pre-primitiva

rimuovendo le primitive che non sono visibili percheacute dietro la visuale e

ritagliando le primitive che intersecano il riquadro visualizzabile

Quad RGBA

1 ndash 128 unitagrave parallele

Riepilogo sulla Programmabilitagrave

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

GPULinguaggi di

programmazione

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 programmatoreSia Sh che Brook sono metalinguaggi che si appoggiano al C++ e permettono lutilizzo della GPU come coprocessore La differenza principale tra Sh e Brook egrave che il primo si propone per un utilizzo grafico ma facilita la stesura anche di applicazioni general purpose mentre Brook egrave 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 linsieme delle funzioni disponibili egrave praticamente identico

Gestiscono array ed egrave 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 egrave prevista tutta una serie di funzioni tipiche dellambiente grafico

GLSLGLSL

Linguaggi di Shading - GLSL vs Cg

Interfacce OpenGLOpenGL Direct3DDirect3D

La vera differenza sta nella portabilitagrave

Interfacce OpenGLOpenGL Direct3DDirect3D

Compilazione Dinamica

OpenGL

Gestori di finestre GLUT SDLLa visualizzazione avviene in una finestramessa a disposizione dal window system1048729 Il frame buffer viene mappato sulla finestra

Utilizza il paradigma event driven programming1048729 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)1048729 Il flusso principale dellrsquoapplicazione egrave in mano allrsquoutente o meglio al sistema operativo che intercetta le azioni dellrsquoutente

OpenGL egrave indipendente dallo specifico window system quindi non ha modo di fare da solo questa mappatura

NVIDIAG80 Architecture

Interconnessione SLI Link InterfaceScalabile

SLI Frame Rendering Combina due schede grafiche PCI Expresscon un connettore SLI per scalare in modo trasparente le prestazionidelle applicazioni su un singolo display presentandole al sistemaoperativo come unrsquounica scheda grafica

SLI Multi View Combina la potenza di due schede grafiche NVIDIAQuadro PCI Express per estendere su piugrave display una singola finestradi unrsquoapplicazione OpenGL ad accelerazione hardware eseguire unasingola applicazione per GPU con piugrave output su display o abilitarealtri usi flessibili di due schede grafiche PCI Express

NVIDIA G80 Architecture

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 14
  • Slide 15
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 35
  • Slide 36
  • Slide 37
Page 7: Graphic Processing Unit GPU. ARCHITETTURA DI COMUNICAZIONE.

RecentRecent Graphics Pipeline

Off-Screen

Lrsquoestensione Framebuffer object (FBO) permette il

multi-RENDER TO TEXTUREs

MULTIPASS Algorithm RENDER TO TEXTURE

(PING PONG)

NewNew Graphics Pipeline

MIMD

VERTEX Processing

Vertex ProcessingVertex ProcessingTrasform

Vertex 3DVertex 2D

3D Model 2D Image

gluPerspectivegluLookAt

Lighting

gluPerspective

gluLookAt

glLightfv

FRAGMENT Processing

Fragment Processor - Fragment Processor - ShadingShading

y1

x1

(r1g1b1a1)

y2

x2

(r2g2b2a2)

(r2g2b2a2) = F( (r1g1b1a1) TEX )

TEXF egrave il fragment shader (il programma che colora il

frammento corrente utilizzando una o piugrave texture)

Multi-PassAlgorithm

Immagine 2DRASTERIZZATA

Immagine 2DRENDERIZZATA

INPUT OUTPUT

NB LrsquoIO egrave una lettura scrittura ordinata

ArchitetturaSIMD

Streaming ndash elaborazione SIMD

INPUT Stream

OUTPUT Stream

p0p1p2p3pn p0p1p2p3pn

STREAM vettore ordinato di dati (vertici o frammenti)

U0

U1

U2

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

const float DiffuseContribution = 10 - 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) 00)

float spec = 00

if (diffuse gt 00)

spec = max(dot(reflectVec viewVec) 00)

spec = pow(spec 160)

LightIntensity = DiffuseContribution diffuse +

SpecularContribution spec

MCposition = gl_Vertexxy

gl_Position = ftransform()

Kernel

6 3 0

7 4 1

8 5 2LettureOrdinate

InputOrdinato

oppure

ScrittureOrdinate

OutputOrdinato

oppure

FlussiINDIPENDENTI

Fragment Streaming

FU

FU

FU7 6 5 4 3 2 1

LettureOrdinate

ScrittureOrdinate

LettureRandom

InputOrdinato

OutputOrdinato

oppure oppure

Texture

(rgba)

Multi-PassAlgorithm

Una texture puograve essere vistacome un array bidimensionale

o tridimensionale

Display

7 4 1

8 5 2

9 6 37 6 5 4 3 2 1

FBO based

Fragment Processor

ArchitetturaGerarchia di Memoria

Gerarchia di Memoria

Ho quattro tipi astrazioni grafiche in corrispondenza dei seguenti streammiddot Vertex streammiddot Texture streammiddot Fragment streammiddot Framebuffer stream (Il Framebuffer stream comincia e termina allrsquointerno della GPU)

MemCENTRALE Cache Registri

MemVIDEO

ALU

GRAFICA

INTERFACCIA

Utilizzano particolari accessi a memoria utilizzando specifiche primitive come vertici fragment texture e framebuffer

OpenGLDirect3D

Texture Stream + FB Stream

FB Stream

TextureStreamMultipass Algorirhm

Render to Texture

Ersquo necessaria Lrsquoestensione GLEW delle OpenGL per gestire il Framebuffer

Object (FBO)

ArchitetturaPROGRAMMABILE

Programmabilitagrave della GPU

Pip

elin

e G

PU

1 - 8 unitagrave parallele

z-cull scarta i pixel che sono occlusi da

oggetti

Assemble primitivesI vertici sono poi raggruppati in primitive

punti linee e triangoli

Rasterizzazione calcola quanti fragment compongono ogni

primitivaFragment egrave un ldquopossibilerdquo pixel

I fragment lasciano i fragment processor

nellordine in cui sono stati rasterizzati

e fluiscono allunitagravez-compare e allunitagrave blend che eseguono

vari test quindiil colore finale viene

scritto sul render target o sul framebuffer

Cull Clip Setupesegue le operazioni pre-primitiva

rimuovendo le primitive che non sono visibili percheacute dietro la visuale e

ritagliando le primitive che intersecano il riquadro visualizzabile

Quad RGBA

1 ndash 128 unitagrave parallele

Riepilogo sulla Programmabilitagrave

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

GPULinguaggi di

programmazione

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 programmatoreSia Sh che Brook sono metalinguaggi che si appoggiano al C++ e permettono lutilizzo della GPU come coprocessore La differenza principale tra Sh e Brook egrave che il primo si propone per un utilizzo grafico ma facilita la stesura anche di applicazioni general purpose mentre Brook egrave 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 linsieme delle funzioni disponibili egrave praticamente identico

Gestiscono array ed egrave 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 egrave prevista tutta una serie di funzioni tipiche dellambiente grafico

GLSLGLSL

Linguaggi di Shading - GLSL vs Cg

Interfacce OpenGLOpenGL Direct3DDirect3D

La vera differenza sta nella portabilitagrave

Interfacce OpenGLOpenGL Direct3DDirect3D

Compilazione Dinamica

OpenGL

Gestori di finestre GLUT SDLLa visualizzazione avviene in una finestramessa a disposizione dal window system1048729 Il frame buffer viene mappato sulla finestra

Utilizza il paradigma event driven programming1048729 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)1048729 Il flusso principale dellrsquoapplicazione egrave in mano allrsquoutente o meglio al sistema operativo che intercetta le azioni dellrsquoutente

OpenGL egrave indipendente dallo specifico window system quindi non ha modo di fare da solo questa mappatura

NVIDIAG80 Architecture

Interconnessione SLI Link InterfaceScalabile

SLI Frame Rendering Combina due schede grafiche PCI Expresscon un connettore SLI per scalare in modo trasparente le prestazionidelle applicazioni su un singolo display presentandole al sistemaoperativo come unrsquounica scheda grafica

SLI Multi View Combina la potenza di due schede grafiche NVIDIAQuadro PCI Express per estendere su piugrave display una singola finestradi unrsquoapplicazione OpenGL ad accelerazione hardware eseguire unasingola applicazione per GPU con piugrave output su display o abilitarealtri usi flessibili di due schede grafiche PCI Express

NVIDIA G80 Architecture

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 14
  • Slide 15
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 35
  • Slide 36
  • Slide 37
Page 8: Graphic Processing Unit GPU. ARCHITETTURA DI COMUNICAZIONE.

NewNew Graphics Pipeline

MIMD

VERTEX Processing

Vertex ProcessingVertex ProcessingTrasform

Vertex 3DVertex 2D

3D Model 2D Image

gluPerspectivegluLookAt

Lighting

gluPerspective

gluLookAt

glLightfv

FRAGMENT Processing

Fragment Processor - Fragment Processor - ShadingShading

y1

x1

(r1g1b1a1)

y2

x2

(r2g2b2a2)

(r2g2b2a2) = F( (r1g1b1a1) TEX )

TEXF egrave il fragment shader (il programma che colora il

frammento corrente utilizzando una o piugrave texture)

Multi-PassAlgorithm

Immagine 2DRASTERIZZATA

Immagine 2DRENDERIZZATA

INPUT OUTPUT

NB LrsquoIO egrave una lettura scrittura ordinata

ArchitetturaSIMD

Streaming ndash elaborazione SIMD

INPUT Stream

OUTPUT Stream

p0p1p2p3pn p0p1p2p3pn

STREAM vettore ordinato di dati (vertici o frammenti)

U0

U1

U2

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

const float DiffuseContribution = 10 - 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) 00)

float spec = 00

if (diffuse gt 00)

spec = max(dot(reflectVec viewVec) 00)

spec = pow(spec 160)

LightIntensity = DiffuseContribution diffuse +

SpecularContribution spec

MCposition = gl_Vertexxy

gl_Position = ftransform()

Kernel

6 3 0

7 4 1

8 5 2LettureOrdinate

InputOrdinato

oppure

ScrittureOrdinate

OutputOrdinato

oppure

FlussiINDIPENDENTI

Fragment Streaming

FU

FU

FU7 6 5 4 3 2 1

LettureOrdinate

ScrittureOrdinate

LettureRandom

InputOrdinato

OutputOrdinato

oppure oppure

Texture

(rgba)

Multi-PassAlgorithm

Una texture puograve essere vistacome un array bidimensionale

o tridimensionale

Display

7 4 1

8 5 2

9 6 37 6 5 4 3 2 1

FBO based

Fragment Processor

ArchitetturaGerarchia di Memoria

Gerarchia di Memoria

Ho quattro tipi astrazioni grafiche in corrispondenza dei seguenti streammiddot Vertex streammiddot Texture streammiddot Fragment streammiddot Framebuffer stream (Il Framebuffer stream comincia e termina allrsquointerno della GPU)

MemCENTRALE Cache Registri

MemVIDEO

ALU

GRAFICA

INTERFACCIA

Utilizzano particolari accessi a memoria utilizzando specifiche primitive come vertici fragment texture e framebuffer

OpenGLDirect3D

Texture Stream + FB Stream

FB Stream

TextureStreamMultipass Algorirhm

Render to Texture

Ersquo necessaria Lrsquoestensione GLEW delle OpenGL per gestire il Framebuffer

Object (FBO)

ArchitetturaPROGRAMMABILE

Programmabilitagrave della GPU

Pip

elin

e G

PU

1 - 8 unitagrave parallele

z-cull scarta i pixel che sono occlusi da

oggetti

Assemble primitivesI vertici sono poi raggruppati in primitive

punti linee e triangoli

Rasterizzazione calcola quanti fragment compongono ogni

primitivaFragment egrave un ldquopossibilerdquo pixel

I fragment lasciano i fragment processor

nellordine in cui sono stati rasterizzati

e fluiscono allunitagravez-compare e allunitagrave blend che eseguono

vari test quindiil colore finale viene

scritto sul render target o sul framebuffer

Cull Clip Setupesegue le operazioni pre-primitiva

rimuovendo le primitive che non sono visibili percheacute dietro la visuale e

ritagliando le primitive che intersecano il riquadro visualizzabile

Quad RGBA

1 ndash 128 unitagrave parallele

Riepilogo sulla Programmabilitagrave

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

GPULinguaggi di

programmazione

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 programmatoreSia Sh che Brook sono metalinguaggi che si appoggiano al C++ e permettono lutilizzo della GPU come coprocessore La differenza principale tra Sh e Brook egrave che il primo si propone per un utilizzo grafico ma facilita la stesura anche di applicazioni general purpose mentre Brook egrave 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 linsieme delle funzioni disponibili egrave praticamente identico

Gestiscono array ed egrave 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 egrave prevista tutta una serie di funzioni tipiche dellambiente grafico

GLSLGLSL

Linguaggi di Shading - GLSL vs Cg

Interfacce OpenGLOpenGL Direct3DDirect3D

La vera differenza sta nella portabilitagrave

Interfacce OpenGLOpenGL Direct3DDirect3D

Compilazione Dinamica

OpenGL

Gestori di finestre GLUT SDLLa visualizzazione avviene in una finestramessa a disposizione dal window system1048729 Il frame buffer viene mappato sulla finestra

Utilizza il paradigma event driven programming1048729 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)1048729 Il flusso principale dellrsquoapplicazione egrave in mano allrsquoutente o meglio al sistema operativo che intercetta le azioni dellrsquoutente

OpenGL egrave indipendente dallo specifico window system quindi non ha modo di fare da solo questa mappatura

NVIDIAG80 Architecture

Interconnessione SLI Link InterfaceScalabile

SLI Frame Rendering Combina due schede grafiche PCI Expresscon un connettore SLI per scalare in modo trasparente le prestazionidelle applicazioni su un singolo display presentandole al sistemaoperativo come unrsquounica scheda grafica

SLI Multi View Combina la potenza di due schede grafiche NVIDIAQuadro PCI Express per estendere su piugrave display una singola finestradi unrsquoapplicazione OpenGL ad accelerazione hardware eseguire unasingola applicazione per GPU con piugrave output su display o abilitarealtri usi flessibili di due schede grafiche PCI Express

NVIDIA G80 Architecture

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 14
  • Slide 15
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 35
  • Slide 36
  • Slide 37
Page 9: Graphic Processing Unit GPU. ARCHITETTURA DI COMUNICAZIONE.

VERTEX Processing

Vertex ProcessingVertex ProcessingTrasform

Vertex 3DVertex 2D

3D Model 2D Image

gluPerspectivegluLookAt

Lighting

gluPerspective

gluLookAt

glLightfv

FRAGMENT Processing

Fragment Processor - Fragment Processor - ShadingShading

y1

x1

(r1g1b1a1)

y2

x2

(r2g2b2a2)

(r2g2b2a2) = F( (r1g1b1a1) TEX )

TEXF egrave il fragment shader (il programma che colora il

frammento corrente utilizzando una o piugrave texture)

Multi-PassAlgorithm

Immagine 2DRASTERIZZATA

Immagine 2DRENDERIZZATA

INPUT OUTPUT

NB LrsquoIO egrave una lettura scrittura ordinata

ArchitetturaSIMD

Streaming ndash elaborazione SIMD

INPUT Stream

OUTPUT Stream

p0p1p2p3pn p0p1p2p3pn

STREAM vettore ordinato di dati (vertici o frammenti)

U0

U1

U2

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

const float DiffuseContribution = 10 - 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) 00)

float spec = 00

if (diffuse gt 00)

spec = max(dot(reflectVec viewVec) 00)

spec = pow(spec 160)

LightIntensity = DiffuseContribution diffuse +

SpecularContribution spec

MCposition = gl_Vertexxy

gl_Position = ftransform()

Kernel

6 3 0

7 4 1

8 5 2LettureOrdinate

InputOrdinato

oppure

ScrittureOrdinate

OutputOrdinato

oppure

FlussiINDIPENDENTI

Fragment Streaming

FU

FU

FU7 6 5 4 3 2 1

LettureOrdinate

ScrittureOrdinate

LettureRandom

InputOrdinato

OutputOrdinato

oppure oppure

Texture

(rgba)

Multi-PassAlgorithm

Una texture puograve essere vistacome un array bidimensionale

o tridimensionale

Display

7 4 1

8 5 2

9 6 37 6 5 4 3 2 1

FBO based

Fragment Processor

ArchitetturaGerarchia di Memoria

Gerarchia di Memoria

Ho quattro tipi astrazioni grafiche in corrispondenza dei seguenti streammiddot Vertex streammiddot Texture streammiddot Fragment streammiddot Framebuffer stream (Il Framebuffer stream comincia e termina allrsquointerno della GPU)

MemCENTRALE Cache Registri

MemVIDEO

ALU

GRAFICA

INTERFACCIA

Utilizzano particolari accessi a memoria utilizzando specifiche primitive come vertici fragment texture e framebuffer

OpenGLDirect3D

Texture Stream + FB Stream

FB Stream

TextureStreamMultipass Algorirhm

Render to Texture

Ersquo necessaria Lrsquoestensione GLEW delle OpenGL per gestire il Framebuffer

Object (FBO)

ArchitetturaPROGRAMMABILE

Programmabilitagrave della GPU

Pip

elin

e G

PU

1 - 8 unitagrave parallele

z-cull scarta i pixel che sono occlusi da

oggetti

Assemble primitivesI vertici sono poi raggruppati in primitive

punti linee e triangoli

Rasterizzazione calcola quanti fragment compongono ogni

primitivaFragment egrave un ldquopossibilerdquo pixel

I fragment lasciano i fragment processor

nellordine in cui sono stati rasterizzati

e fluiscono allunitagravez-compare e allunitagrave blend che eseguono

vari test quindiil colore finale viene

scritto sul render target o sul framebuffer

Cull Clip Setupesegue le operazioni pre-primitiva

rimuovendo le primitive che non sono visibili percheacute dietro la visuale e

ritagliando le primitive che intersecano il riquadro visualizzabile

Quad RGBA

1 ndash 128 unitagrave parallele

Riepilogo sulla Programmabilitagrave

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

GPULinguaggi di

programmazione

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 programmatoreSia Sh che Brook sono metalinguaggi che si appoggiano al C++ e permettono lutilizzo della GPU come coprocessore La differenza principale tra Sh e Brook egrave che il primo si propone per un utilizzo grafico ma facilita la stesura anche di applicazioni general purpose mentre Brook egrave 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 linsieme delle funzioni disponibili egrave praticamente identico

Gestiscono array ed egrave 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 egrave prevista tutta una serie di funzioni tipiche dellambiente grafico

GLSLGLSL

Linguaggi di Shading - GLSL vs Cg

Interfacce OpenGLOpenGL Direct3DDirect3D

La vera differenza sta nella portabilitagrave

Interfacce OpenGLOpenGL Direct3DDirect3D

Compilazione Dinamica

OpenGL

Gestori di finestre GLUT SDLLa visualizzazione avviene in una finestramessa a disposizione dal window system1048729 Il frame buffer viene mappato sulla finestra

Utilizza il paradigma event driven programming1048729 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)1048729 Il flusso principale dellrsquoapplicazione egrave in mano allrsquoutente o meglio al sistema operativo che intercetta le azioni dellrsquoutente

OpenGL egrave indipendente dallo specifico window system quindi non ha modo di fare da solo questa mappatura

NVIDIAG80 Architecture

Interconnessione SLI Link InterfaceScalabile

SLI Frame Rendering Combina due schede grafiche PCI Expresscon un connettore SLI per scalare in modo trasparente le prestazionidelle applicazioni su un singolo display presentandole al sistemaoperativo come unrsquounica scheda grafica

SLI Multi View Combina la potenza di due schede grafiche NVIDIAQuadro PCI Express per estendere su piugrave display una singola finestradi unrsquoapplicazione OpenGL ad accelerazione hardware eseguire unasingola applicazione per GPU con piugrave output su display o abilitarealtri usi flessibili di due schede grafiche PCI Express

NVIDIA G80 Architecture

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 14
  • Slide 15
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 35
  • Slide 36
  • Slide 37
Page 10: Graphic Processing Unit GPU. ARCHITETTURA DI COMUNICAZIONE.

Vertex ProcessingVertex ProcessingTrasform

Vertex 3DVertex 2D

3D Model 2D Image

gluPerspectivegluLookAt

Lighting

gluPerspective

gluLookAt

glLightfv

FRAGMENT Processing

Fragment Processor - Fragment Processor - ShadingShading

y1

x1

(r1g1b1a1)

y2

x2

(r2g2b2a2)

(r2g2b2a2) = F( (r1g1b1a1) TEX )

TEXF egrave il fragment shader (il programma che colora il

frammento corrente utilizzando una o piugrave texture)

Multi-PassAlgorithm

Immagine 2DRASTERIZZATA

Immagine 2DRENDERIZZATA

INPUT OUTPUT

NB LrsquoIO egrave una lettura scrittura ordinata

ArchitetturaSIMD

Streaming ndash elaborazione SIMD

INPUT Stream

OUTPUT Stream

p0p1p2p3pn p0p1p2p3pn

STREAM vettore ordinato di dati (vertici o frammenti)

U0

U1

U2

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

const float DiffuseContribution = 10 - 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) 00)

float spec = 00

if (diffuse gt 00)

spec = max(dot(reflectVec viewVec) 00)

spec = pow(spec 160)

LightIntensity = DiffuseContribution diffuse +

SpecularContribution spec

MCposition = gl_Vertexxy

gl_Position = ftransform()

Kernel

6 3 0

7 4 1

8 5 2LettureOrdinate

InputOrdinato

oppure

ScrittureOrdinate

OutputOrdinato

oppure

FlussiINDIPENDENTI

Fragment Streaming

FU

FU

FU7 6 5 4 3 2 1

LettureOrdinate

ScrittureOrdinate

LettureRandom

InputOrdinato

OutputOrdinato

oppure oppure

Texture

(rgba)

Multi-PassAlgorithm

Una texture puograve essere vistacome un array bidimensionale

o tridimensionale

Display

7 4 1

8 5 2

9 6 37 6 5 4 3 2 1

FBO based

Fragment Processor

ArchitetturaGerarchia di Memoria

Gerarchia di Memoria

Ho quattro tipi astrazioni grafiche in corrispondenza dei seguenti streammiddot Vertex streammiddot Texture streammiddot Fragment streammiddot Framebuffer stream (Il Framebuffer stream comincia e termina allrsquointerno della GPU)

MemCENTRALE Cache Registri

MemVIDEO

ALU

GRAFICA

INTERFACCIA

Utilizzano particolari accessi a memoria utilizzando specifiche primitive come vertici fragment texture e framebuffer

OpenGLDirect3D

Texture Stream + FB Stream

FB Stream

TextureStreamMultipass Algorirhm

Render to Texture

Ersquo necessaria Lrsquoestensione GLEW delle OpenGL per gestire il Framebuffer

Object (FBO)

ArchitetturaPROGRAMMABILE

Programmabilitagrave della GPU

Pip

elin

e G

PU

1 - 8 unitagrave parallele

z-cull scarta i pixel che sono occlusi da

oggetti

Assemble primitivesI vertici sono poi raggruppati in primitive

punti linee e triangoli

Rasterizzazione calcola quanti fragment compongono ogni

primitivaFragment egrave un ldquopossibilerdquo pixel

I fragment lasciano i fragment processor

nellordine in cui sono stati rasterizzati

e fluiscono allunitagravez-compare e allunitagrave blend che eseguono

vari test quindiil colore finale viene

scritto sul render target o sul framebuffer

Cull Clip Setupesegue le operazioni pre-primitiva

rimuovendo le primitive che non sono visibili percheacute dietro la visuale e

ritagliando le primitive che intersecano il riquadro visualizzabile

Quad RGBA

1 ndash 128 unitagrave parallele

Riepilogo sulla Programmabilitagrave

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

GPULinguaggi di

programmazione

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 programmatoreSia Sh che Brook sono metalinguaggi che si appoggiano al C++ e permettono lutilizzo della GPU come coprocessore La differenza principale tra Sh e Brook egrave che il primo si propone per un utilizzo grafico ma facilita la stesura anche di applicazioni general purpose mentre Brook egrave 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 linsieme delle funzioni disponibili egrave praticamente identico

Gestiscono array ed egrave 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 egrave prevista tutta una serie di funzioni tipiche dellambiente grafico

GLSLGLSL

Linguaggi di Shading - GLSL vs Cg

Interfacce OpenGLOpenGL Direct3DDirect3D

La vera differenza sta nella portabilitagrave

Interfacce OpenGLOpenGL Direct3DDirect3D

Compilazione Dinamica

OpenGL

Gestori di finestre GLUT SDLLa visualizzazione avviene in una finestramessa a disposizione dal window system1048729 Il frame buffer viene mappato sulla finestra

Utilizza il paradigma event driven programming1048729 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)1048729 Il flusso principale dellrsquoapplicazione egrave in mano allrsquoutente o meglio al sistema operativo che intercetta le azioni dellrsquoutente

OpenGL egrave indipendente dallo specifico window system quindi non ha modo di fare da solo questa mappatura

NVIDIAG80 Architecture

Interconnessione SLI Link InterfaceScalabile

SLI Frame Rendering Combina due schede grafiche PCI Expresscon un connettore SLI per scalare in modo trasparente le prestazionidelle applicazioni su un singolo display presentandole al sistemaoperativo come unrsquounica scheda grafica

SLI Multi View Combina la potenza di due schede grafiche NVIDIAQuadro PCI Express per estendere su piugrave display una singola finestradi unrsquoapplicazione OpenGL ad accelerazione hardware eseguire unasingola applicazione per GPU con piugrave output su display o abilitarealtri usi flessibili di due schede grafiche PCI Express

NVIDIA G80 Architecture

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 14
  • Slide 15
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 35
  • Slide 36
  • Slide 37
Page 11: Graphic Processing Unit GPU. ARCHITETTURA DI COMUNICAZIONE.

FRAGMENT Processing

Fragment Processor - Fragment Processor - ShadingShading

y1

x1

(r1g1b1a1)

y2

x2

(r2g2b2a2)

(r2g2b2a2) = F( (r1g1b1a1) TEX )

TEXF egrave il fragment shader (il programma che colora il

frammento corrente utilizzando una o piugrave texture)

Multi-PassAlgorithm

Immagine 2DRASTERIZZATA

Immagine 2DRENDERIZZATA

INPUT OUTPUT

NB LrsquoIO egrave una lettura scrittura ordinata

ArchitetturaSIMD

Streaming ndash elaborazione SIMD

INPUT Stream

OUTPUT Stream

p0p1p2p3pn p0p1p2p3pn

STREAM vettore ordinato di dati (vertici o frammenti)

U0

U1

U2

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

const float DiffuseContribution = 10 - 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) 00)

float spec = 00

if (diffuse gt 00)

spec = max(dot(reflectVec viewVec) 00)

spec = pow(spec 160)

LightIntensity = DiffuseContribution diffuse +

SpecularContribution spec

MCposition = gl_Vertexxy

gl_Position = ftransform()

Kernel

6 3 0

7 4 1

8 5 2LettureOrdinate

InputOrdinato

oppure

ScrittureOrdinate

OutputOrdinato

oppure

FlussiINDIPENDENTI

Fragment Streaming

FU

FU

FU7 6 5 4 3 2 1

LettureOrdinate

ScrittureOrdinate

LettureRandom

InputOrdinato

OutputOrdinato

oppure oppure

Texture

(rgba)

Multi-PassAlgorithm

Una texture puograve essere vistacome un array bidimensionale

o tridimensionale

Display

7 4 1

8 5 2

9 6 37 6 5 4 3 2 1

FBO based

Fragment Processor

ArchitetturaGerarchia di Memoria

Gerarchia di Memoria

Ho quattro tipi astrazioni grafiche in corrispondenza dei seguenti streammiddot Vertex streammiddot Texture streammiddot Fragment streammiddot Framebuffer stream (Il Framebuffer stream comincia e termina allrsquointerno della GPU)

MemCENTRALE Cache Registri

MemVIDEO

ALU

GRAFICA

INTERFACCIA

Utilizzano particolari accessi a memoria utilizzando specifiche primitive come vertici fragment texture e framebuffer

OpenGLDirect3D

Texture Stream + FB Stream

FB Stream

TextureStreamMultipass Algorirhm

Render to Texture

Ersquo necessaria Lrsquoestensione GLEW delle OpenGL per gestire il Framebuffer

Object (FBO)

ArchitetturaPROGRAMMABILE

Programmabilitagrave della GPU

Pip

elin

e G

PU

1 - 8 unitagrave parallele

z-cull scarta i pixel che sono occlusi da

oggetti

Assemble primitivesI vertici sono poi raggruppati in primitive

punti linee e triangoli

Rasterizzazione calcola quanti fragment compongono ogni

primitivaFragment egrave un ldquopossibilerdquo pixel

I fragment lasciano i fragment processor

nellordine in cui sono stati rasterizzati

e fluiscono allunitagravez-compare e allunitagrave blend che eseguono

vari test quindiil colore finale viene

scritto sul render target o sul framebuffer

Cull Clip Setupesegue le operazioni pre-primitiva

rimuovendo le primitive che non sono visibili percheacute dietro la visuale e

ritagliando le primitive che intersecano il riquadro visualizzabile

Quad RGBA

1 ndash 128 unitagrave parallele

Riepilogo sulla Programmabilitagrave

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

GPULinguaggi di

programmazione

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 programmatoreSia Sh che Brook sono metalinguaggi che si appoggiano al C++ e permettono lutilizzo della GPU come coprocessore La differenza principale tra Sh e Brook egrave che il primo si propone per un utilizzo grafico ma facilita la stesura anche di applicazioni general purpose mentre Brook egrave 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 linsieme delle funzioni disponibili egrave praticamente identico

Gestiscono array ed egrave 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 egrave prevista tutta una serie di funzioni tipiche dellambiente grafico

GLSLGLSL

Linguaggi di Shading - GLSL vs Cg

Interfacce OpenGLOpenGL Direct3DDirect3D

La vera differenza sta nella portabilitagrave

Interfacce OpenGLOpenGL Direct3DDirect3D

Compilazione Dinamica

OpenGL

Gestori di finestre GLUT SDLLa visualizzazione avviene in una finestramessa a disposizione dal window system1048729 Il frame buffer viene mappato sulla finestra

Utilizza il paradigma event driven programming1048729 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)1048729 Il flusso principale dellrsquoapplicazione egrave in mano allrsquoutente o meglio al sistema operativo che intercetta le azioni dellrsquoutente

OpenGL egrave indipendente dallo specifico window system quindi non ha modo di fare da solo questa mappatura

NVIDIAG80 Architecture

Interconnessione SLI Link InterfaceScalabile

SLI Frame Rendering Combina due schede grafiche PCI Expresscon un connettore SLI per scalare in modo trasparente le prestazionidelle applicazioni su un singolo display presentandole al sistemaoperativo come unrsquounica scheda grafica

SLI Multi View Combina la potenza di due schede grafiche NVIDIAQuadro PCI Express per estendere su piugrave display una singola finestradi unrsquoapplicazione OpenGL ad accelerazione hardware eseguire unasingola applicazione per GPU con piugrave output su display o abilitarealtri usi flessibili di due schede grafiche PCI Express

NVIDIA G80 Architecture

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 14
  • Slide 15
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 35
  • Slide 36
  • Slide 37
Page 12: Graphic Processing Unit GPU. ARCHITETTURA DI COMUNICAZIONE.

Fragment Processor - Fragment Processor - ShadingShading

y1

x1

(r1g1b1a1)

y2

x2

(r2g2b2a2)

(r2g2b2a2) = F( (r1g1b1a1) TEX )

TEXF egrave il fragment shader (il programma che colora il

frammento corrente utilizzando una o piugrave texture)

Multi-PassAlgorithm

Immagine 2DRASTERIZZATA

Immagine 2DRENDERIZZATA

INPUT OUTPUT

NB LrsquoIO egrave una lettura scrittura ordinata

ArchitetturaSIMD

Streaming ndash elaborazione SIMD

INPUT Stream

OUTPUT Stream

p0p1p2p3pn p0p1p2p3pn

STREAM vettore ordinato di dati (vertici o frammenti)

U0

U1

U2

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

const float DiffuseContribution = 10 - 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) 00)

float spec = 00

if (diffuse gt 00)

spec = max(dot(reflectVec viewVec) 00)

spec = pow(spec 160)

LightIntensity = DiffuseContribution diffuse +

SpecularContribution spec

MCposition = gl_Vertexxy

gl_Position = ftransform()

Kernel

6 3 0

7 4 1

8 5 2LettureOrdinate

InputOrdinato

oppure

ScrittureOrdinate

OutputOrdinato

oppure

FlussiINDIPENDENTI

Fragment Streaming

FU

FU

FU7 6 5 4 3 2 1

LettureOrdinate

ScrittureOrdinate

LettureRandom

InputOrdinato

OutputOrdinato

oppure oppure

Texture

(rgba)

Multi-PassAlgorithm

Una texture puograve essere vistacome un array bidimensionale

o tridimensionale

Display

7 4 1

8 5 2

9 6 37 6 5 4 3 2 1

FBO based

Fragment Processor

ArchitetturaGerarchia di Memoria

Gerarchia di Memoria

Ho quattro tipi astrazioni grafiche in corrispondenza dei seguenti streammiddot Vertex streammiddot Texture streammiddot Fragment streammiddot Framebuffer stream (Il Framebuffer stream comincia e termina allrsquointerno della GPU)

MemCENTRALE Cache Registri

MemVIDEO

ALU

GRAFICA

INTERFACCIA

Utilizzano particolari accessi a memoria utilizzando specifiche primitive come vertici fragment texture e framebuffer

OpenGLDirect3D

Texture Stream + FB Stream

FB Stream

TextureStreamMultipass Algorirhm

Render to Texture

Ersquo necessaria Lrsquoestensione GLEW delle OpenGL per gestire il Framebuffer

Object (FBO)

ArchitetturaPROGRAMMABILE

Programmabilitagrave della GPU

Pip

elin

e G

PU

1 - 8 unitagrave parallele

z-cull scarta i pixel che sono occlusi da

oggetti

Assemble primitivesI vertici sono poi raggruppati in primitive

punti linee e triangoli

Rasterizzazione calcola quanti fragment compongono ogni

primitivaFragment egrave un ldquopossibilerdquo pixel

I fragment lasciano i fragment processor

nellordine in cui sono stati rasterizzati

e fluiscono allunitagravez-compare e allunitagrave blend che eseguono

vari test quindiil colore finale viene

scritto sul render target o sul framebuffer

Cull Clip Setupesegue le operazioni pre-primitiva

rimuovendo le primitive che non sono visibili percheacute dietro la visuale e

ritagliando le primitive che intersecano il riquadro visualizzabile

Quad RGBA

1 ndash 128 unitagrave parallele

Riepilogo sulla Programmabilitagrave

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

GPULinguaggi di

programmazione

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 programmatoreSia Sh che Brook sono metalinguaggi che si appoggiano al C++ e permettono lutilizzo della GPU come coprocessore La differenza principale tra Sh e Brook egrave che il primo si propone per un utilizzo grafico ma facilita la stesura anche di applicazioni general purpose mentre Brook egrave 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 linsieme delle funzioni disponibili egrave praticamente identico

Gestiscono array ed egrave 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 egrave prevista tutta una serie di funzioni tipiche dellambiente grafico

GLSLGLSL

Linguaggi di Shading - GLSL vs Cg

Interfacce OpenGLOpenGL Direct3DDirect3D

La vera differenza sta nella portabilitagrave

Interfacce OpenGLOpenGL Direct3DDirect3D

Compilazione Dinamica

OpenGL

Gestori di finestre GLUT SDLLa visualizzazione avviene in una finestramessa a disposizione dal window system1048729 Il frame buffer viene mappato sulla finestra

Utilizza il paradigma event driven programming1048729 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)1048729 Il flusso principale dellrsquoapplicazione egrave in mano allrsquoutente o meglio al sistema operativo che intercetta le azioni dellrsquoutente

OpenGL egrave indipendente dallo specifico window system quindi non ha modo di fare da solo questa mappatura

NVIDIAG80 Architecture

Interconnessione SLI Link InterfaceScalabile

SLI Frame Rendering Combina due schede grafiche PCI Expresscon un connettore SLI per scalare in modo trasparente le prestazionidelle applicazioni su un singolo display presentandole al sistemaoperativo come unrsquounica scheda grafica

SLI Multi View Combina la potenza di due schede grafiche NVIDIAQuadro PCI Express per estendere su piugrave display una singola finestradi unrsquoapplicazione OpenGL ad accelerazione hardware eseguire unasingola applicazione per GPU con piugrave output su display o abilitarealtri usi flessibili di due schede grafiche PCI Express

NVIDIA G80 Architecture

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 14
  • Slide 15
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 35
  • Slide 36
  • Slide 37
Page 13: Graphic Processing Unit GPU. ARCHITETTURA DI COMUNICAZIONE.

ArchitetturaSIMD

Streaming ndash elaborazione SIMD

INPUT Stream

OUTPUT Stream

p0p1p2p3pn p0p1p2p3pn

STREAM vettore ordinato di dati (vertici o frammenti)

U0

U1

U2

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

const float DiffuseContribution = 10 - 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) 00)

float spec = 00

if (diffuse gt 00)

spec = max(dot(reflectVec viewVec) 00)

spec = pow(spec 160)

LightIntensity = DiffuseContribution diffuse +

SpecularContribution spec

MCposition = gl_Vertexxy

gl_Position = ftransform()

Kernel

6 3 0

7 4 1

8 5 2LettureOrdinate

InputOrdinato

oppure

ScrittureOrdinate

OutputOrdinato

oppure

FlussiINDIPENDENTI

Fragment Streaming

FU

FU

FU7 6 5 4 3 2 1

LettureOrdinate

ScrittureOrdinate

LettureRandom

InputOrdinato

OutputOrdinato

oppure oppure

Texture

(rgba)

Multi-PassAlgorithm

Una texture puograve essere vistacome un array bidimensionale

o tridimensionale

Display

7 4 1

8 5 2

9 6 37 6 5 4 3 2 1

FBO based

Fragment Processor

ArchitetturaGerarchia di Memoria

Gerarchia di Memoria

Ho quattro tipi astrazioni grafiche in corrispondenza dei seguenti streammiddot Vertex streammiddot Texture streammiddot Fragment streammiddot Framebuffer stream (Il Framebuffer stream comincia e termina allrsquointerno della GPU)

MemCENTRALE Cache Registri

MemVIDEO

ALU

GRAFICA

INTERFACCIA

Utilizzano particolari accessi a memoria utilizzando specifiche primitive come vertici fragment texture e framebuffer

OpenGLDirect3D

Texture Stream + FB Stream

FB Stream

TextureStreamMultipass Algorirhm

Render to Texture

Ersquo necessaria Lrsquoestensione GLEW delle OpenGL per gestire il Framebuffer

Object (FBO)

ArchitetturaPROGRAMMABILE

Programmabilitagrave della GPU

Pip

elin

e G

PU

1 - 8 unitagrave parallele

z-cull scarta i pixel che sono occlusi da

oggetti

Assemble primitivesI vertici sono poi raggruppati in primitive

punti linee e triangoli

Rasterizzazione calcola quanti fragment compongono ogni

primitivaFragment egrave un ldquopossibilerdquo pixel

I fragment lasciano i fragment processor

nellordine in cui sono stati rasterizzati

e fluiscono allunitagravez-compare e allunitagrave blend che eseguono

vari test quindiil colore finale viene

scritto sul render target o sul framebuffer

Cull Clip Setupesegue le operazioni pre-primitiva

rimuovendo le primitive che non sono visibili percheacute dietro la visuale e

ritagliando le primitive che intersecano il riquadro visualizzabile

Quad RGBA

1 ndash 128 unitagrave parallele

Riepilogo sulla Programmabilitagrave

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

GPULinguaggi di

programmazione

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 programmatoreSia Sh che Brook sono metalinguaggi che si appoggiano al C++ e permettono lutilizzo della GPU come coprocessore La differenza principale tra Sh e Brook egrave che il primo si propone per un utilizzo grafico ma facilita la stesura anche di applicazioni general purpose mentre Brook egrave 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 linsieme delle funzioni disponibili egrave praticamente identico

Gestiscono array ed egrave 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 egrave prevista tutta una serie di funzioni tipiche dellambiente grafico

GLSLGLSL

Linguaggi di Shading - GLSL vs Cg

Interfacce OpenGLOpenGL Direct3DDirect3D

La vera differenza sta nella portabilitagrave

Interfacce OpenGLOpenGL Direct3DDirect3D

Compilazione Dinamica

OpenGL

Gestori di finestre GLUT SDLLa visualizzazione avviene in una finestramessa a disposizione dal window system1048729 Il frame buffer viene mappato sulla finestra

Utilizza il paradigma event driven programming1048729 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)1048729 Il flusso principale dellrsquoapplicazione egrave in mano allrsquoutente o meglio al sistema operativo che intercetta le azioni dellrsquoutente

OpenGL egrave indipendente dallo specifico window system quindi non ha modo di fare da solo questa mappatura

NVIDIAG80 Architecture

Interconnessione SLI Link InterfaceScalabile

SLI Frame Rendering Combina due schede grafiche PCI Expresscon un connettore SLI per scalare in modo trasparente le prestazionidelle applicazioni su un singolo display presentandole al sistemaoperativo come unrsquounica scheda grafica

SLI Multi View Combina la potenza di due schede grafiche NVIDIAQuadro PCI Express per estendere su piugrave display una singola finestradi unrsquoapplicazione OpenGL ad accelerazione hardware eseguire unasingola applicazione per GPU con piugrave output su display o abilitarealtri usi flessibili di due schede grafiche PCI Express

NVIDIA G80 Architecture

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 14
  • Slide 15
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 35
  • Slide 36
  • Slide 37
Page 14: Graphic Processing Unit GPU. ARCHITETTURA DI COMUNICAZIONE.

Streaming ndash elaborazione SIMD

INPUT Stream

OUTPUT Stream

p0p1p2p3pn p0p1p2p3pn

STREAM vettore ordinato di dati (vertici o frammenti)

U0

U1

U2

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

const float DiffuseContribution = 10 - 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) 00)

float spec = 00

if (diffuse gt 00)

spec = max(dot(reflectVec viewVec) 00)

spec = pow(spec 160)

LightIntensity = DiffuseContribution diffuse +

SpecularContribution spec

MCposition = gl_Vertexxy

gl_Position = ftransform()

Kernel

6 3 0

7 4 1

8 5 2LettureOrdinate

InputOrdinato

oppure

ScrittureOrdinate

OutputOrdinato

oppure

FlussiINDIPENDENTI

Fragment Streaming

FU

FU

FU7 6 5 4 3 2 1

LettureOrdinate

ScrittureOrdinate

LettureRandom

InputOrdinato

OutputOrdinato

oppure oppure

Texture

(rgba)

Multi-PassAlgorithm

Una texture puograve essere vistacome un array bidimensionale

o tridimensionale

Display

7 4 1

8 5 2

9 6 37 6 5 4 3 2 1

FBO based

Fragment Processor

ArchitetturaGerarchia di Memoria

Gerarchia di Memoria

Ho quattro tipi astrazioni grafiche in corrispondenza dei seguenti streammiddot Vertex streammiddot Texture streammiddot Fragment streammiddot Framebuffer stream (Il Framebuffer stream comincia e termina allrsquointerno della GPU)

MemCENTRALE Cache Registri

MemVIDEO

ALU

GRAFICA

INTERFACCIA

Utilizzano particolari accessi a memoria utilizzando specifiche primitive come vertici fragment texture e framebuffer

OpenGLDirect3D

Texture Stream + FB Stream

FB Stream

TextureStreamMultipass Algorirhm

Render to Texture

Ersquo necessaria Lrsquoestensione GLEW delle OpenGL per gestire il Framebuffer

Object (FBO)

ArchitetturaPROGRAMMABILE

Programmabilitagrave della GPU

Pip

elin

e G

PU

1 - 8 unitagrave parallele

z-cull scarta i pixel che sono occlusi da

oggetti

Assemble primitivesI vertici sono poi raggruppati in primitive

punti linee e triangoli

Rasterizzazione calcola quanti fragment compongono ogni

primitivaFragment egrave un ldquopossibilerdquo pixel

I fragment lasciano i fragment processor

nellordine in cui sono stati rasterizzati

e fluiscono allunitagravez-compare e allunitagrave blend che eseguono

vari test quindiil colore finale viene

scritto sul render target o sul framebuffer

Cull Clip Setupesegue le operazioni pre-primitiva

rimuovendo le primitive che non sono visibili percheacute dietro la visuale e

ritagliando le primitive che intersecano il riquadro visualizzabile

Quad RGBA

1 ndash 128 unitagrave parallele

Riepilogo sulla Programmabilitagrave

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

GPULinguaggi di

programmazione

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 programmatoreSia Sh che Brook sono metalinguaggi che si appoggiano al C++ e permettono lutilizzo della GPU come coprocessore La differenza principale tra Sh e Brook egrave che il primo si propone per un utilizzo grafico ma facilita la stesura anche di applicazioni general purpose mentre Brook egrave 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 linsieme delle funzioni disponibili egrave praticamente identico

Gestiscono array ed egrave 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 egrave prevista tutta una serie di funzioni tipiche dellambiente grafico

GLSLGLSL

Linguaggi di Shading - GLSL vs Cg

Interfacce OpenGLOpenGL Direct3DDirect3D

La vera differenza sta nella portabilitagrave

Interfacce OpenGLOpenGL Direct3DDirect3D

Compilazione Dinamica

OpenGL

Gestori di finestre GLUT SDLLa visualizzazione avviene in una finestramessa a disposizione dal window system1048729 Il frame buffer viene mappato sulla finestra

Utilizza il paradigma event driven programming1048729 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)1048729 Il flusso principale dellrsquoapplicazione egrave in mano allrsquoutente o meglio al sistema operativo che intercetta le azioni dellrsquoutente

OpenGL egrave indipendente dallo specifico window system quindi non ha modo di fare da solo questa mappatura

NVIDIAG80 Architecture

Interconnessione SLI Link InterfaceScalabile

SLI Frame Rendering Combina due schede grafiche PCI Expresscon un connettore SLI per scalare in modo trasparente le prestazionidelle applicazioni su un singolo display presentandole al sistemaoperativo come unrsquounica scheda grafica

SLI Multi View Combina la potenza di due schede grafiche NVIDIAQuadro PCI Express per estendere su piugrave display una singola finestradi unrsquoapplicazione OpenGL ad accelerazione hardware eseguire unasingola applicazione per GPU con piugrave output su display o abilitarealtri usi flessibili di due schede grafiche PCI Express

NVIDIA G80 Architecture

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 14
  • Slide 15
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 35
  • Slide 36
  • Slide 37
Page 15: Graphic Processing Unit GPU. ARCHITETTURA DI COMUNICAZIONE.

Fragment Streaming

FU

FU

FU7 6 5 4 3 2 1

LettureOrdinate

ScrittureOrdinate

LettureRandom

InputOrdinato

OutputOrdinato

oppure oppure

Texture

(rgba)

Multi-PassAlgorithm

Una texture puograve essere vistacome un array bidimensionale

o tridimensionale

Display

7 4 1

8 5 2

9 6 37 6 5 4 3 2 1

FBO based

Fragment Processor

ArchitetturaGerarchia di Memoria

Gerarchia di Memoria

Ho quattro tipi astrazioni grafiche in corrispondenza dei seguenti streammiddot Vertex streammiddot Texture streammiddot Fragment streammiddot Framebuffer stream (Il Framebuffer stream comincia e termina allrsquointerno della GPU)

MemCENTRALE Cache Registri

MemVIDEO

ALU

GRAFICA

INTERFACCIA

Utilizzano particolari accessi a memoria utilizzando specifiche primitive come vertici fragment texture e framebuffer

OpenGLDirect3D

Texture Stream + FB Stream

FB Stream

TextureStreamMultipass Algorirhm

Render to Texture

Ersquo necessaria Lrsquoestensione GLEW delle OpenGL per gestire il Framebuffer

Object (FBO)

ArchitetturaPROGRAMMABILE

Programmabilitagrave della GPU

Pip

elin

e G

PU

1 - 8 unitagrave parallele

z-cull scarta i pixel che sono occlusi da

oggetti

Assemble primitivesI vertici sono poi raggruppati in primitive

punti linee e triangoli

Rasterizzazione calcola quanti fragment compongono ogni

primitivaFragment egrave un ldquopossibilerdquo pixel

I fragment lasciano i fragment processor

nellordine in cui sono stati rasterizzati

e fluiscono allunitagravez-compare e allunitagrave blend che eseguono

vari test quindiil colore finale viene

scritto sul render target o sul framebuffer

Cull Clip Setupesegue le operazioni pre-primitiva

rimuovendo le primitive che non sono visibili percheacute dietro la visuale e

ritagliando le primitive che intersecano il riquadro visualizzabile

Quad RGBA

1 ndash 128 unitagrave parallele

Riepilogo sulla Programmabilitagrave

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

GPULinguaggi di

programmazione

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 programmatoreSia Sh che Brook sono metalinguaggi che si appoggiano al C++ e permettono lutilizzo della GPU come coprocessore La differenza principale tra Sh e Brook egrave che il primo si propone per un utilizzo grafico ma facilita la stesura anche di applicazioni general purpose mentre Brook egrave 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 linsieme delle funzioni disponibili egrave praticamente identico

Gestiscono array ed egrave 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 egrave prevista tutta una serie di funzioni tipiche dellambiente grafico

GLSLGLSL

Linguaggi di Shading - GLSL vs Cg

Interfacce OpenGLOpenGL Direct3DDirect3D

La vera differenza sta nella portabilitagrave

Interfacce OpenGLOpenGL Direct3DDirect3D

Compilazione Dinamica

OpenGL

Gestori di finestre GLUT SDLLa visualizzazione avviene in una finestramessa a disposizione dal window system1048729 Il frame buffer viene mappato sulla finestra

Utilizza il paradigma event driven programming1048729 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)1048729 Il flusso principale dellrsquoapplicazione egrave in mano allrsquoutente o meglio al sistema operativo che intercetta le azioni dellrsquoutente

OpenGL egrave indipendente dallo specifico window system quindi non ha modo di fare da solo questa mappatura

NVIDIAG80 Architecture

Interconnessione SLI Link InterfaceScalabile

SLI Frame Rendering Combina due schede grafiche PCI Expresscon un connettore SLI per scalare in modo trasparente le prestazionidelle applicazioni su un singolo display presentandole al sistemaoperativo come unrsquounica scheda grafica

SLI Multi View Combina la potenza di due schede grafiche NVIDIAQuadro PCI Express per estendere su piugrave display una singola finestradi unrsquoapplicazione OpenGL ad accelerazione hardware eseguire unasingola applicazione per GPU con piugrave output su display o abilitarealtri usi flessibili di due schede grafiche PCI Express

NVIDIA G80 Architecture

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 14
  • Slide 15
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 35
  • Slide 36
  • Slide 37
Page 16: Graphic Processing Unit GPU. ARCHITETTURA DI COMUNICAZIONE.

ArchitetturaGerarchia di Memoria

Gerarchia di Memoria

Ho quattro tipi astrazioni grafiche in corrispondenza dei seguenti streammiddot Vertex streammiddot Texture streammiddot Fragment streammiddot Framebuffer stream (Il Framebuffer stream comincia e termina allrsquointerno della GPU)

MemCENTRALE Cache Registri

MemVIDEO

ALU

GRAFICA

INTERFACCIA

Utilizzano particolari accessi a memoria utilizzando specifiche primitive come vertici fragment texture e framebuffer

OpenGLDirect3D

Texture Stream + FB Stream

FB Stream

TextureStreamMultipass Algorirhm

Render to Texture

Ersquo necessaria Lrsquoestensione GLEW delle OpenGL per gestire il Framebuffer

Object (FBO)

ArchitetturaPROGRAMMABILE

Programmabilitagrave della GPU

Pip

elin

e G

PU

1 - 8 unitagrave parallele

z-cull scarta i pixel che sono occlusi da

oggetti

Assemble primitivesI vertici sono poi raggruppati in primitive

punti linee e triangoli

Rasterizzazione calcola quanti fragment compongono ogni

primitivaFragment egrave un ldquopossibilerdquo pixel

I fragment lasciano i fragment processor

nellordine in cui sono stati rasterizzati

e fluiscono allunitagravez-compare e allunitagrave blend che eseguono

vari test quindiil colore finale viene

scritto sul render target o sul framebuffer

Cull Clip Setupesegue le operazioni pre-primitiva

rimuovendo le primitive che non sono visibili percheacute dietro la visuale e

ritagliando le primitive che intersecano il riquadro visualizzabile

Quad RGBA

1 ndash 128 unitagrave parallele

Riepilogo sulla Programmabilitagrave

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

GPULinguaggi di

programmazione

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 programmatoreSia Sh che Brook sono metalinguaggi che si appoggiano al C++ e permettono lutilizzo della GPU come coprocessore La differenza principale tra Sh e Brook egrave che il primo si propone per un utilizzo grafico ma facilita la stesura anche di applicazioni general purpose mentre Brook egrave 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 linsieme delle funzioni disponibili egrave praticamente identico

Gestiscono array ed egrave 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 egrave prevista tutta una serie di funzioni tipiche dellambiente grafico

GLSLGLSL

Linguaggi di Shading - GLSL vs Cg

Interfacce OpenGLOpenGL Direct3DDirect3D

La vera differenza sta nella portabilitagrave

Interfacce OpenGLOpenGL Direct3DDirect3D

Compilazione Dinamica

OpenGL

Gestori di finestre GLUT SDLLa visualizzazione avviene in una finestramessa a disposizione dal window system1048729 Il frame buffer viene mappato sulla finestra

Utilizza il paradigma event driven programming1048729 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)1048729 Il flusso principale dellrsquoapplicazione egrave in mano allrsquoutente o meglio al sistema operativo che intercetta le azioni dellrsquoutente

OpenGL egrave indipendente dallo specifico window system quindi non ha modo di fare da solo questa mappatura

NVIDIAG80 Architecture

Interconnessione SLI Link InterfaceScalabile

SLI Frame Rendering Combina due schede grafiche PCI Expresscon un connettore SLI per scalare in modo trasparente le prestazionidelle applicazioni su un singolo display presentandole al sistemaoperativo come unrsquounica scheda grafica

SLI Multi View Combina la potenza di due schede grafiche NVIDIAQuadro PCI Express per estendere su piugrave display una singola finestradi unrsquoapplicazione OpenGL ad accelerazione hardware eseguire unasingola applicazione per GPU con piugrave output su display o abilitarealtri usi flessibili di due schede grafiche PCI Express

NVIDIA G80 Architecture

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 14
  • Slide 15
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 35
  • Slide 36
  • Slide 37
Page 17: Graphic Processing Unit GPU. ARCHITETTURA DI COMUNICAZIONE.

Gerarchia di Memoria

Ho quattro tipi astrazioni grafiche in corrispondenza dei seguenti streammiddot Vertex streammiddot Texture streammiddot Fragment streammiddot Framebuffer stream (Il Framebuffer stream comincia e termina allrsquointerno della GPU)

MemCENTRALE Cache Registri

MemVIDEO

ALU

GRAFICA

INTERFACCIA

Utilizzano particolari accessi a memoria utilizzando specifiche primitive come vertici fragment texture e framebuffer

OpenGLDirect3D

Texture Stream + FB Stream

FB Stream

TextureStreamMultipass Algorirhm

Render to Texture

Ersquo necessaria Lrsquoestensione GLEW delle OpenGL per gestire il Framebuffer

Object (FBO)

ArchitetturaPROGRAMMABILE

Programmabilitagrave della GPU

Pip

elin

e G

PU

1 - 8 unitagrave parallele

z-cull scarta i pixel che sono occlusi da

oggetti

Assemble primitivesI vertici sono poi raggruppati in primitive

punti linee e triangoli

Rasterizzazione calcola quanti fragment compongono ogni

primitivaFragment egrave un ldquopossibilerdquo pixel

I fragment lasciano i fragment processor

nellordine in cui sono stati rasterizzati

e fluiscono allunitagravez-compare e allunitagrave blend che eseguono

vari test quindiil colore finale viene

scritto sul render target o sul framebuffer

Cull Clip Setupesegue le operazioni pre-primitiva

rimuovendo le primitive che non sono visibili percheacute dietro la visuale e

ritagliando le primitive che intersecano il riquadro visualizzabile

Quad RGBA

1 ndash 128 unitagrave parallele

Riepilogo sulla Programmabilitagrave

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

GPULinguaggi di

programmazione

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 programmatoreSia Sh che Brook sono metalinguaggi che si appoggiano al C++ e permettono lutilizzo della GPU come coprocessore La differenza principale tra Sh e Brook egrave che il primo si propone per un utilizzo grafico ma facilita la stesura anche di applicazioni general purpose mentre Brook egrave 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 linsieme delle funzioni disponibili egrave praticamente identico

Gestiscono array ed egrave 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 egrave prevista tutta una serie di funzioni tipiche dellambiente grafico

GLSLGLSL

Linguaggi di Shading - GLSL vs Cg

Interfacce OpenGLOpenGL Direct3DDirect3D

La vera differenza sta nella portabilitagrave

Interfacce OpenGLOpenGL Direct3DDirect3D

Compilazione Dinamica

OpenGL

Gestori di finestre GLUT SDLLa visualizzazione avviene in una finestramessa a disposizione dal window system1048729 Il frame buffer viene mappato sulla finestra

Utilizza il paradigma event driven programming1048729 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)1048729 Il flusso principale dellrsquoapplicazione egrave in mano allrsquoutente o meglio al sistema operativo che intercetta le azioni dellrsquoutente

OpenGL egrave indipendente dallo specifico window system quindi non ha modo di fare da solo questa mappatura

NVIDIAG80 Architecture

Interconnessione SLI Link InterfaceScalabile

SLI Frame Rendering Combina due schede grafiche PCI Expresscon un connettore SLI per scalare in modo trasparente le prestazionidelle applicazioni su un singolo display presentandole al sistemaoperativo come unrsquounica scheda grafica

SLI Multi View Combina la potenza di due schede grafiche NVIDIAQuadro PCI Express per estendere su piugrave display una singola finestradi unrsquoapplicazione OpenGL ad accelerazione hardware eseguire unasingola applicazione per GPU con piugrave output su display o abilitarealtri usi flessibili di due schede grafiche PCI Express

NVIDIA G80 Architecture

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 14
  • Slide 15
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 35
  • Slide 36
  • Slide 37
Page 18: Graphic Processing Unit GPU. ARCHITETTURA DI COMUNICAZIONE.

Texture Stream + FB Stream

FB Stream

TextureStreamMultipass Algorirhm

Render to Texture

Ersquo necessaria Lrsquoestensione GLEW delle OpenGL per gestire il Framebuffer

Object (FBO)

ArchitetturaPROGRAMMABILE

Programmabilitagrave della GPU

Pip

elin

e G

PU

1 - 8 unitagrave parallele

z-cull scarta i pixel che sono occlusi da

oggetti

Assemble primitivesI vertici sono poi raggruppati in primitive

punti linee e triangoli

Rasterizzazione calcola quanti fragment compongono ogni

primitivaFragment egrave un ldquopossibilerdquo pixel

I fragment lasciano i fragment processor

nellordine in cui sono stati rasterizzati

e fluiscono allunitagravez-compare e allunitagrave blend che eseguono

vari test quindiil colore finale viene

scritto sul render target o sul framebuffer

Cull Clip Setupesegue le operazioni pre-primitiva

rimuovendo le primitive che non sono visibili percheacute dietro la visuale e

ritagliando le primitive che intersecano il riquadro visualizzabile

Quad RGBA

1 ndash 128 unitagrave parallele

Riepilogo sulla Programmabilitagrave

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

GPULinguaggi di

programmazione

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 programmatoreSia Sh che Brook sono metalinguaggi che si appoggiano al C++ e permettono lutilizzo della GPU come coprocessore La differenza principale tra Sh e Brook egrave che il primo si propone per un utilizzo grafico ma facilita la stesura anche di applicazioni general purpose mentre Brook egrave 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 linsieme delle funzioni disponibili egrave praticamente identico

Gestiscono array ed egrave 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 egrave prevista tutta una serie di funzioni tipiche dellambiente grafico

GLSLGLSL

Linguaggi di Shading - GLSL vs Cg

Interfacce OpenGLOpenGL Direct3DDirect3D

La vera differenza sta nella portabilitagrave

Interfacce OpenGLOpenGL Direct3DDirect3D

Compilazione Dinamica

OpenGL

Gestori di finestre GLUT SDLLa visualizzazione avviene in una finestramessa a disposizione dal window system1048729 Il frame buffer viene mappato sulla finestra

Utilizza il paradigma event driven programming1048729 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)1048729 Il flusso principale dellrsquoapplicazione egrave in mano allrsquoutente o meglio al sistema operativo che intercetta le azioni dellrsquoutente

OpenGL egrave indipendente dallo specifico window system quindi non ha modo di fare da solo questa mappatura

NVIDIAG80 Architecture

Interconnessione SLI Link InterfaceScalabile

SLI Frame Rendering Combina due schede grafiche PCI Expresscon un connettore SLI per scalare in modo trasparente le prestazionidelle applicazioni su un singolo display presentandole al sistemaoperativo come unrsquounica scheda grafica

SLI Multi View Combina la potenza di due schede grafiche NVIDIAQuadro PCI Express per estendere su piugrave display una singola finestradi unrsquoapplicazione OpenGL ad accelerazione hardware eseguire unasingola applicazione per GPU con piugrave output su display o abilitarealtri usi flessibili di due schede grafiche PCI Express

NVIDIA G80 Architecture

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 14
  • Slide 15
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 35
  • Slide 36
  • Slide 37
Page 19: Graphic Processing Unit GPU. ARCHITETTURA DI COMUNICAZIONE.

ArchitetturaPROGRAMMABILE

Programmabilitagrave della GPU

Pip

elin

e G

PU

1 - 8 unitagrave parallele

z-cull scarta i pixel che sono occlusi da

oggetti

Assemble primitivesI vertici sono poi raggruppati in primitive

punti linee e triangoli

Rasterizzazione calcola quanti fragment compongono ogni

primitivaFragment egrave un ldquopossibilerdquo pixel

I fragment lasciano i fragment processor

nellordine in cui sono stati rasterizzati

e fluiscono allunitagravez-compare e allunitagrave blend che eseguono

vari test quindiil colore finale viene

scritto sul render target o sul framebuffer

Cull Clip Setupesegue le operazioni pre-primitiva

rimuovendo le primitive che non sono visibili percheacute dietro la visuale e

ritagliando le primitive che intersecano il riquadro visualizzabile

Quad RGBA

1 ndash 128 unitagrave parallele

Riepilogo sulla Programmabilitagrave

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

GPULinguaggi di

programmazione

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 programmatoreSia Sh che Brook sono metalinguaggi che si appoggiano al C++ e permettono lutilizzo della GPU come coprocessore La differenza principale tra Sh e Brook egrave che il primo si propone per un utilizzo grafico ma facilita la stesura anche di applicazioni general purpose mentre Brook egrave 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 linsieme delle funzioni disponibili egrave praticamente identico

Gestiscono array ed egrave 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 egrave prevista tutta una serie di funzioni tipiche dellambiente grafico

GLSLGLSL

Linguaggi di Shading - GLSL vs Cg

Interfacce OpenGLOpenGL Direct3DDirect3D

La vera differenza sta nella portabilitagrave

Interfacce OpenGLOpenGL Direct3DDirect3D

Compilazione Dinamica

OpenGL

Gestori di finestre GLUT SDLLa visualizzazione avviene in una finestramessa a disposizione dal window system1048729 Il frame buffer viene mappato sulla finestra

Utilizza il paradigma event driven programming1048729 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)1048729 Il flusso principale dellrsquoapplicazione egrave in mano allrsquoutente o meglio al sistema operativo che intercetta le azioni dellrsquoutente

OpenGL egrave indipendente dallo specifico window system quindi non ha modo di fare da solo questa mappatura

NVIDIAG80 Architecture

Interconnessione SLI Link InterfaceScalabile

SLI Frame Rendering Combina due schede grafiche PCI Expresscon un connettore SLI per scalare in modo trasparente le prestazionidelle applicazioni su un singolo display presentandole al sistemaoperativo come unrsquounica scheda grafica

SLI Multi View Combina la potenza di due schede grafiche NVIDIAQuadro PCI Express per estendere su piugrave display una singola finestradi unrsquoapplicazione OpenGL ad accelerazione hardware eseguire unasingola applicazione per GPU con piugrave output su display o abilitarealtri usi flessibili di due schede grafiche PCI Express

NVIDIA G80 Architecture

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 14
  • Slide 15
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 35
  • Slide 36
  • Slide 37
Page 20: Graphic Processing Unit GPU. ARCHITETTURA DI COMUNICAZIONE.

Programmabilitagrave della GPU

Pip

elin

e G

PU

1 - 8 unitagrave parallele

z-cull scarta i pixel che sono occlusi da

oggetti

Assemble primitivesI vertici sono poi raggruppati in primitive

punti linee e triangoli

Rasterizzazione calcola quanti fragment compongono ogni

primitivaFragment egrave un ldquopossibilerdquo pixel

I fragment lasciano i fragment processor

nellordine in cui sono stati rasterizzati

e fluiscono allunitagravez-compare e allunitagrave blend che eseguono

vari test quindiil colore finale viene

scritto sul render target o sul framebuffer

Cull Clip Setupesegue le operazioni pre-primitiva

rimuovendo le primitive che non sono visibili percheacute dietro la visuale e

ritagliando le primitive che intersecano il riquadro visualizzabile

Quad RGBA

1 ndash 128 unitagrave parallele

Riepilogo sulla Programmabilitagrave

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

GPULinguaggi di

programmazione

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 programmatoreSia Sh che Brook sono metalinguaggi che si appoggiano al C++ e permettono lutilizzo della GPU come coprocessore La differenza principale tra Sh e Brook egrave che il primo si propone per un utilizzo grafico ma facilita la stesura anche di applicazioni general purpose mentre Brook egrave 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 linsieme delle funzioni disponibili egrave praticamente identico

Gestiscono array ed egrave 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 egrave prevista tutta una serie di funzioni tipiche dellambiente grafico

GLSLGLSL

Linguaggi di Shading - GLSL vs Cg

Interfacce OpenGLOpenGL Direct3DDirect3D

La vera differenza sta nella portabilitagrave

Interfacce OpenGLOpenGL Direct3DDirect3D

Compilazione Dinamica

OpenGL

Gestori di finestre GLUT SDLLa visualizzazione avviene in una finestramessa a disposizione dal window system1048729 Il frame buffer viene mappato sulla finestra

Utilizza il paradigma event driven programming1048729 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)1048729 Il flusso principale dellrsquoapplicazione egrave in mano allrsquoutente o meglio al sistema operativo che intercetta le azioni dellrsquoutente

OpenGL egrave indipendente dallo specifico window system quindi non ha modo di fare da solo questa mappatura

NVIDIAG80 Architecture

Interconnessione SLI Link InterfaceScalabile

SLI Frame Rendering Combina due schede grafiche PCI Expresscon un connettore SLI per scalare in modo trasparente le prestazionidelle applicazioni su un singolo display presentandole al sistemaoperativo come unrsquounica scheda grafica

SLI Multi View Combina la potenza di due schede grafiche NVIDIAQuadro PCI Express per estendere su piugrave display una singola finestradi unrsquoapplicazione OpenGL ad accelerazione hardware eseguire unasingola applicazione per GPU con piugrave output su display o abilitarealtri usi flessibili di due schede grafiche PCI Express

NVIDIA G80 Architecture

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 14
  • Slide 15
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 35
  • Slide 36
  • Slide 37
Page 21: Graphic Processing Unit GPU. ARCHITETTURA DI COMUNICAZIONE.

Pip

elin

e G

PU

1 - 8 unitagrave parallele

z-cull scarta i pixel che sono occlusi da

oggetti

Assemble primitivesI vertici sono poi raggruppati in primitive

punti linee e triangoli

Rasterizzazione calcola quanti fragment compongono ogni

primitivaFragment egrave un ldquopossibilerdquo pixel

I fragment lasciano i fragment processor

nellordine in cui sono stati rasterizzati

e fluiscono allunitagravez-compare e allunitagrave blend che eseguono

vari test quindiil colore finale viene

scritto sul render target o sul framebuffer

Cull Clip Setupesegue le operazioni pre-primitiva

rimuovendo le primitive che non sono visibili percheacute dietro la visuale e

ritagliando le primitive che intersecano il riquadro visualizzabile

Quad RGBA

1 ndash 128 unitagrave parallele

Riepilogo sulla Programmabilitagrave

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

GPULinguaggi di

programmazione

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 programmatoreSia Sh che Brook sono metalinguaggi che si appoggiano al C++ e permettono lutilizzo della GPU come coprocessore La differenza principale tra Sh e Brook egrave che il primo si propone per un utilizzo grafico ma facilita la stesura anche di applicazioni general purpose mentre Brook egrave 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 linsieme delle funzioni disponibili egrave praticamente identico

Gestiscono array ed egrave 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 egrave prevista tutta una serie di funzioni tipiche dellambiente grafico

GLSLGLSL

Linguaggi di Shading - GLSL vs Cg

Interfacce OpenGLOpenGL Direct3DDirect3D

La vera differenza sta nella portabilitagrave

Interfacce OpenGLOpenGL Direct3DDirect3D

Compilazione Dinamica

OpenGL

Gestori di finestre GLUT SDLLa visualizzazione avviene in una finestramessa a disposizione dal window system1048729 Il frame buffer viene mappato sulla finestra

Utilizza il paradigma event driven programming1048729 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)1048729 Il flusso principale dellrsquoapplicazione egrave in mano allrsquoutente o meglio al sistema operativo che intercetta le azioni dellrsquoutente

OpenGL egrave indipendente dallo specifico window system quindi non ha modo di fare da solo questa mappatura

NVIDIAG80 Architecture

Interconnessione SLI Link InterfaceScalabile

SLI Frame Rendering Combina due schede grafiche PCI Expresscon un connettore SLI per scalare in modo trasparente le prestazionidelle applicazioni su un singolo display presentandole al sistemaoperativo come unrsquounica scheda grafica

SLI Multi View Combina la potenza di due schede grafiche NVIDIAQuadro PCI Express per estendere su piugrave display una singola finestradi unrsquoapplicazione OpenGL ad accelerazione hardware eseguire unasingola applicazione per GPU con piugrave output su display o abilitarealtri usi flessibili di due schede grafiche PCI Express

NVIDIA G80 Architecture

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 14
  • Slide 15
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 35
  • Slide 36
  • Slide 37
Page 22: Graphic Processing Unit GPU. ARCHITETTURA DI COMUNICAZIONE.

Riepilogo sulla Programmabilitagrave

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

GPULinguaggi di

programmazione

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 programmatoreSia Sh che Brook sono metalinguaggi che si appoggiano al C++ e permettono lutilizzo della GPU come coprocessore La differenza principale tra Sh e Brook egrave che il primo si propone per un utilizzo grafico ma facilita la stesura anche di applicazioni general purpose mentre Brook egrave 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 linsieme delle funzioni disponibili egrave praticamente identico

Gestiscono array ed egrave 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 egrave prevista tutta una serie di funzioni tipiche dellambiente grafico

GLSLGLSL

Linguaggi di Shading - GLSL vs Cg

Interfacce OpenGLOpenGL Direct3DDirect3D

La vera differenza sta nella portabilitagrave

Interfacce OpenGLOpenGL Direct3DDirect3D

Compilazione Dinamica

OpenGL

Gestori di finestre GLUT SDLLa visualizzazione avviene in una finestramessa a disposizione dal window system1048729 Il frame buffer viene mappato sulla finestra

Utilizza il paradigma event driven programming1048729 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)1048729 Il flusso principale dellrsquoapplicazione egrave in mano allrsquoutente o meglio al sistema operativo che intercetta le azioni dellrsquoutente

OpenGL egrave indipendente dallo specifico window system quindi non ha modo di fare da solo questa mappatura

NVIDIAG80 Architecture

Interconnessione SLI Link InterfaceScalabile

SLI Frame Rendering Combina due schede grafiche PCI Expresscon un connettore SLI per scalare in modo trasparente le prestazionidelle applicazioni su un singolo display presentandole al sistemaoperativo come unrsquounica scheda grafica

SLI Multi View Combina la potenza di due schede grafiche NVIDIAQuadro PCI Express per estendere su piugrave display una singola finestradi unrsquoapplicazione OpenGL ad accelerazione hardware eseguire unasingola applicazione per GPU con piugrave output su display o abilitarealtri usi flessibili di due schede grafiche PCI Express

NVIDIA G80 Architecture

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 14
  • Slide 15
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 35
  • Slide 36
  • Slide 37
Page 23: Graphic Processing Unit GPU. ARCHITETTURA DI COMUNICAZIONE.

GPULinguaggi di

programmazione

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 programmatoreSia Sh che Brook sono metalinguaggi che si appoggiano al C++ e permettono lutilizzo della GPU come coprocessore La differenza principale tra Sh e Brook egrave che il primo si propone per un utilizzo grafico ma facilita la stesura anche di applicazioni general purpose mentre Brook egrave 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 linsieme delle funzioni disponibili egrave praticamente identico

Gestiscono array ed egrave 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 egrave prevista tutta una serie di funzioni tipiche dellambiente grafico

GLSLGLSL

Linguaggi di Shading - GLSL vs Cg

Interfacce OpenGLOpenGL Direct3DDirect3D

La vera differenza sta nella portabilitagrave

Interfacce OpenGLOpenGL Direct3DDirect3D

Compilazione Dinamica

OpenGL

Gestori di finestre GLUT SDLLa visualizzazione avviene in una finestramessa a disposizione dal window system1048729 Il frame buffer viene mappato sulla finestra

Utilizza il paradigma event driven programming1048729 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)1048729 Il flusso principale dellrsquoapplicazione egrave in mano allrsquoutente o meglio al sistema operativo che intercetta le azioni dellrsquoutente

OpenGL egrave indipendente dallo specifico window system quindi non ha modo di fare da solo questa mappatura

NVIDIAG80 Architecture

Interconnessione SLI Link InterfaceScalabile

SLI Frame Rendering Combina due schede grafiche PCI Expresscon un connettore SLI per scalare in modo trasparente le prestazionidelle applicazioni su un singolo display presentandole al sistemaoperativo come unrsquounica scheda grafica

SLI Multi View Combina la potenza di due schede grafiche NVIDIAQuadro PCI Express per estendere su piugrave display una singola finestradi unrsquoapplicazione OpenGL ad accelerazione hardware eseguire unasingola applicazione per GPU con piugrave output su display o abilitarealtri usi flessibili di due schede grafiche PCI Express

NVIDIA G80 Architecture

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 14
  • Slide 15
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 35
  • Slide 36
  • Slide 37
Page 24: Graphic Processing Unit GPU. ARCHITETTURA DI COMUNICAZIONE.

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 programmatoreSia Sh che Brook sono metalinguaggi che si appoggiano al C++ e permettono lutilizzo della GPU come coprocessore La differenza principale tra Sh e Brook egrave che il primo si propone per un utilizzo grafico ma facilita la stesura anche di applicazioni general purpose mentre Brook egrave 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 linsieme delle funzioni disponibili egrave praticamente identico

Gestiscono array ed egrave 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 egrave prevista tutta una serie di funzioni tipiche dellambiente grafico

GLSLGLSL

Linguaggi di Shading - GLSL vs Cg

Interfacce OpenGLOpenGL Direct3DDirect3D

La vera differenza sta nella portabilitagrave

Interfacce OpenGLOpenGL Direct3DDirect3D

Compilazione Dinamica

OpenGL

Gestori di finestre GLUT SDLLa visualizzazione avviene in una finestramessa a disposizione dal window system1048729 Il frame buffer viene mappato sulla finestra

Utilizza il paradigma event driven programming1048729 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)1048729 Il flusso principale dellrsquoapplicazione egrave in mano allrsquoutente o meglio al sistema operativo che intercetta le azioni dellrsquoutente

OpenGL egrave indipendente dallo specifico window system quindi non ha modo di fare da solo questa mappatura

NVIDIAG80 Architecture

Interconnessione SLI Link InterfaceScalabile

SLI Frame Rendering Combina due schede grafiche PCI Expresscon un connettore SLI per scalare in modo trasparente le prestazionidelle applicazioni su un singolo display presentandole al sistemaoperativo come unrsquounica scheda grafica

SLI Multi View Combina la potenza di due schede grafiche NVIDIAQuadro PCI Express per estendere su piugrave display una singola finestradi unrsquoapplicazione OpenGL ad accelerazione hardware eseguire unasingola applicazione per GPU con piugrave output su display o abilitarealtri usi flessibili di due schede grafiche PCI Express

NVIDIA G80 Architecture

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 14
  • Slide 15
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 35
  • Slide 36
  • Slide 37
Page 25: Graphic Processing Unit GPU. ARCHITETTURA DI COMUNICAZIONE.

Linguaggi di Shading - GLSL vs Cg

Interfacce OpenGLOpenGL Direct3DDirect3D

La vera differenza sta nella portabilitagrave

Interfacce OpenGLOpenGL Direct3DDirect3D

Compilazione Dinamica

OpenGL

Gestori di finestre GLUT SDLLa visualizzazione avviene in una finestramessa a disposizione dal window system1048729 Il frame buffer viene mappato sulla finestra

Utilizza il paradigma event driven programming1048729 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)1048729 Il flusso principale dellrsquoapplicazione egrave in mano allrsquoutente o meglio al sistema operativo che intercetta le azioni dellrsquoutente

OpenGL egrave indipendente dallo specifico window system quindi non ha modo di fare da solo questa mappatura

NVIDIAG80 Architecture

Interconnessione SLI Link InterfaceScalabile

SLI Frame Rendering Combina due schede grafiche PCI Expresscon un connettore SLI per scalare in modo trasparente le prestazionidelle applicazioni su un singolo display presentandole al sistemaoperativo come unrsquounica scheda grafica

SLI Multi View Combina la potenza di due schede grafiche NVIDIAQuadro PCI Express per estendere su piugrave display una singola finestradi unrsquoapplicazione OpenGL ad accelerazione hardware eseguire unasingola applicazione per GPU con piugrave output su display o abilitarealtri usi flessibili di due schede grafiche PCI Express

NVIDIA G80 Architecture

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 14
  • Slide 15
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 35
  • Slide 36
  • Slide 37
Page 26: Graphic Processing Unit GPU. ARCHITETTURA DI COMUNICAZIONE.

Interfacce OpenGLOpenGL Direct3DDirect3D

La vera differenza sta nella portabilitagrave

Interfacce OpenGLOpenGL Direct3DDirect3D

Compilazione Dinamica

OpenGL

Gestori di finestre GLUT SDLLa visualizzazione avviene in una finestramessa a disposizione dal window system1048729 Il frame buffer viene mappato sulla finestra

Utilizza il paradigma event driven programming1048729 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)1048729 Il flusso principale dellrsquoapplicazione egrave in mano allrsquoutente o meglio al sistema operativo che intercetta le azioni dellrsquoutente

OpenGL egrave indipendente dallo specifico window system quindi non ha modo di fare da solo questa mappatura

NVIDIAG80 Architecture

Interconnessione SLI Link InterfaceScalabile

SLI Frame Rendering Combina due schede grafiche PCI Expresscon un connettore SLI per scalare in modo trasparente le prestazionidelle applicazioni su un singolo display presentandole al sistemaoperativo come unrsquounica scheda grafica

SLI Multi View Combina la potenza di due schede grafiche NVIDIAQuadro PCI Express per estendere su piugrave display una singola finestradi unrsquoapplicazione OpenGL ad accelerazione hardware eseguire unasingola applicazione per GPU con piugrave output su display o abilitarealtri usi flessibili di due schede grafiche PCI Express

NVIDIA G80 Architecture

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 14
  • Slide 15
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 35
  • Slide 36
  • Slide 37
Page 27: Graphic Processing Unit GPU. ARCHITETTURA DI COMUNICAZIONE.

Interfacce OpenGLOpenGL Direct3DDirect3D

Compilazione Dinamica

OpenGL

Gestori di finestre GLUT SDLLa visualizzazione avviene in una finestramessa a disposizione dal window system1048729 Il frame buffer viene mappato sulla finestra

Utilizza il paradigma event driven programming1048729 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)1048729 Il flusso principale dellrsquoapplicazione egrave in mano allrsquoutente o meglio al sistema operativo che intercetta le azioni dellrsquoutente

OpenGL egrave indipendente dallo specifico window system quindi non ha modo di fare da solo questa mappatura

NVIDIAG80 Architecture

Interconnessione SLI Link InterfaceScalabile

SLI Frame Rendering Combina due schede grafiche PCI Expresscon un connettore SLI per scalare in modo trasparente le prestazionidelle applicazioni su un singolo display presentandole al sistemaoperativo come unrsquounica scheda grafica

SLI Multi View Combina la potenza di due schede grafiche NVIDIAQuadro PCI Express per estendere su piugrave display una singola finestradi unrsquoapplicazione OpenGL ad accelerazione hardware eseguire unasingola applicazione per GPU con piugrave output su display o abilitarealtri usi flessibili di due schede grafiche PCI Express

NVIDIA G80 Architecture

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 14
  • Slide 15
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 35
  • Slide 36
  • Slide 37
Page 28: Graphic Processing Unit GPU. ARCHITETTURA DI COMUNICAZIONE.

Compilazione Dinamica

OpenGL

Gestori di finestre GLUT SDLLa visualizzazione avviene in una finestramessa a disposizione dal window system1048729 Il frame buffer viene mappato sulla finestra

Utilizza il paradigma event driven programming1048729 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)1048729 Il flusso principale dellrsquoapplicazione egrave in mano allrsquoutente o meglio al sistema operativo che intercetta le azioni dellrsquoutente

OpenGL egrave indipendente dallo specifico window system quindi non ha modo di fare da solo questa mappatura

NVIDIAG80 Architecture

Interconnessione SLI Link InterfaceScalabile

SLI Frame Rendering Combina due schede grafiche PCI Expresscon un connettore SLI per scalare in modo trasparente le prestazionidelle applicazioni su un singolo display presentandole al sistemaoperativo come unrsquounica scheda grafica

SLI Multi View Combina la potenza di due schede grafiche NVIDIAQuadro PCI Express per estendere su piugrave display una singola finestradi unrsquoapplicazione OpenGL ad accelerazione hardware eseguire unasingola applicazione per GPU con piugrave output su display o abilitarealtri usi flessibili di due schede grafiche PCI Express

NVIDIA G80 Architecture

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 14
  • Slide 15
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 35
  • Slide 36
  • Slide 37
Page 29: Graphic Processing Unit GPU. ARCHITETTURA DI COMUNICAZIONE.

Gestori di finestre GLUT SDLLa visualizzazione avviene in una finestramessa a disposizione dal window system1048729 Il frame buffer viene mappato sulla finestra

Utilizza il paradigma event driven programming1048729 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)1048729 Il flusso principale dellrsquoapplicazione egrave in mano allrsquoutente o meglio al sistema operativo che intercetta le azioni dellrsquoutente

OpenGL egrave indipendente dallo specifico window system quindi non ha modo di fare da solo questa mappatura

NVIDIAG80 Architecture

Interconnessione SLI Link InterfaceScalabile

SLI Frame Rendering Combina due schede grafiche PCI Expresscon un connettore SLI per scalare in modo trasparente le prestazionidelle applicazioni su un singolo display presentandole al sistemaoperativo come unrsquounica scheda grafica

SLI Multi View Combina la potenza di due schede grafiche NVIDIAQuadro PCI Express per estendere su piugrave display una singola finestradi unrsquoapplicazione OpenGL ad accelerazione hardware eseguire unasingola applicazione per GPU con piugrave output su display o abilitarealtri usi flessibili di due schede grafiche PCI Express

NVIDIA G80 Architecture

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 14
  • Slide 15
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 35
  • Slide 36
  • Slide 37
Page 30: Graphic Processing Unit GPU. ARCHITETTURA DI COMUNICAZIONE.

NVIDIAG80 Architecture

Interconnessione SLI Link InterfaceScalabile

SLI Frame Rendering Combina due schede grafiche PCI Expresscon un connettore SLI per scalare in modo trasparente le prestazionidelle applicazioni su un singolo display presentandole al sistemaoperativo come unrsquounica scheda grafica

SLI Multi View Combina la potenza di due schede grafiche NVIDIAQuadro PCI Express per estendere su piugrave display una singola finestradi unrsquoapplicazione OpenGL ad accelerazione hardware eseguire unasingola applicazione per GPU con piugrave output su display o abilitarealtri usi flessibili di due schede grafiche PCI Express

NVIDIA G80 Architecture

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 14
  • Slide 15
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 35
  • Slide 36
  • Slide 37
Page 31: Graphic Processing Unit GPU. ARCHITETTURA DI COMUNICAZIONE.

Interconnessione SLI Link InterfaceScalabile

SLI Frame Rendering Combina due schede grafiche PCI Expresscon un connettore SLI per scalare in modo trasparente le prestazionidelle applicazioni su un singolo display presentandole al sistemaoperativo come unrsquounica scheda grafica

SLI Multi View Combina la potenza di due schede grafiche NVIDIAQuadro PCI Express per estendere su piugrave display una singola finestradi unrsquoapplicazione OpenGL ad accelerazione hardware eseguire unasingola applicazione per GPU con piugrave output su display o abilitarealtri usi flessibili di due schede grafiche PCI Express

NVIDIA G80 Architecture

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 14
  • Slide 15
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 35
  • Slide 36
  • Slide 37
Page 32: Graphic Processing Unit GPU. ARCHITETTURA DI COMUNICAZIONE.

NVIDIA G80 Architecture

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 14
  • Slide 15
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 35
  • Slide 36
  • Slide 37

Recommended