graphic processing unit gpu. architettura di comunicazione
TRANSCRIPT
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-