tema 2.1 arquitecturas streaming y cauce grÁfico …david miraut andrés procesadores grá cos y...
TRANSCRIPT
Curso 2013 / 14
Procesadores Grácos y Aplicaciones en Tiempo Real
Profesores: David Miraut y Óscar D. Robles
© GMRV 2005-2014 – Febrero 2014
David Miraut Andrés Procesadores Grácos y Aplicaciones en Tiempo Real 2013/14 1/34
1/ 72
Escuela Técnica Superiorde Ingeniería Informática
Máster en Informática Gráfica,Juegos y Realidad Virtual
TEMA 2.1ARQUITECTURASSTREAMING Y
CAUCE GRÁFICO CLÁSICO
Historia de las tarjetas gráficasIntroducción al cauce graficoArquitecturas streamingEvolución y procesadores streamingEl cauce gráfico en profundidadRelación entre el cauce gráfico y la GPULectura recomendadaBibliografía
ÍNDICE
T y productos oodas las marcas mencionad s as trasparenciasen est están registradas por
as compañías, y su uso es de sus respectivcarácter descriptivo con fines docentes.
cParte de las tablas y gráficos están basados en las presentaciones de y GPGPU streaming computing de NVidia y ATI-AMD, y en loslibros mencionados en la bibliografía
NOTAS:
HISTORIA DE LOS PROCESADORES
GRÁFICOS DE CONSUMO(TARJETAS GRÁFICAS)
El mítico PONG de Atari (1974)
NOTAS:De la anterior: En el cálculo en NO tiempo real nosotros programamos con total libertad, de hecho se suelen hacer los “shaders”/funciones de acuerdo con las estructuras y efectos que queremos representar (efectos de desplazamiento en la geometría, modificaciones del comportamiento de la luz sobre la superficie, cálculo del volumen y de la luz al atravesarlo... )Mientras que en tiempo real, estos “shaders” deben programarse de acuerdo con el punto en el que se encuentran dentro del cauce gráfico, hay una cierta libertad pero está acotada por el tipo de datos que podemos hacer fluir en ese cauce
LA (PRE)HISTORIA DE LOS PROCESADORES GRÁFICOS (I)
La idea es :muy antigua
Los ordenadores personales de los años 80 ya contaban con procesadores separados y específicos para el tratamiento de gráficos: Atari QT...
En aquella época había gran diferencia y rivalidad entre consolas y ordenadores de 8 bits
Los PCs “ganaron” la batalla gracias a la reducción de precios que supuso su arquitectura abierta, pero no porque tuvieran mejores prestaciones gráficas (como el ), Atari o los Amstrad ni fueran más fáciles de utilizar (como los Apple). Ni siquiera el producto nacional (DragonPC) logró una mínima aceptación.
Pero en aquella época las necesidades eran diferentes (2D, 256 colores...)
NOTAS:
Sumergirse en el mundo de las tarjetas gráficas da un poco de vértigo -- como dice Manuel Ujaldón-- porque es un terreno en contínua metamorfosis.
Os recomiendo encarecidamente su libro, es el mejor (y el único) del que disponemos no sólo en español, sino en cualquier lengua, hasta donde yo sé :-)
LA (PRE)HISTORIA DE LOS PROCESADORES GRÁFICOS (II)
Las tarjetas crecían en prestaciones lentamente
Hercules, EGA, VGA (modo X)...
La evolución trajo consigo la guerra de las SuperVGA: Mayor resolución y más colores Pero cada era completamente distintodriver
El stadard VESAno aprovechaba
todas las características
Los ordenadores no estaban concebidos para el entretenimiento, sino para aplicaciones ofimáticas, pero unos cuantos “apasionados” se empeñaron
Ultima VIThe Stigian Abyss
WolfStein 3D(John Carmack)
Demoscene
mem. no linealaspect ratio 4:3
compromiso entre resolución/colores
...
Un caos para los desarrolladores
de juegos
Raycasting
286
NOTAS:
LA (PRE)HISTORIA DE LOS PROCESADORES GRÁFICOS (III)
La visión de 3DFX supuso una revolución, irrumpió en el mercado con tarjetas de tal calidad que barrió literalmente a todos los competidores
Pero los procesadores de la época eran muy limitados para generar imágenes de calidad en tiempo real.
Las fases en la creación de gráficos 3D quedaron bien definidas(Renderman) y se hicieron esbozos simplificados en el mundode los Pcs (los inicios de OpenGL)
nVIDIA no tuvo otro remedio que adquirir 3DFX, mediante una OPA, para sobrevivir. Absorvió a su enemigo y aprovecho el know-how y sus ingenieros para ponerse en la punta de lanza.
ATI ha hecho un esfuerzo notable
NOTAS:
(no eran programables, sólo aceleraban parte del cauce)
LA (PRE)HISTORIA DE LOS PROCESADORES GRÁFICOS (III)
La visión de 3DFX supuso una revolución, irrumpió en el mercado con tarjetas de tal calidad que barrió literalmente a todos los competidores
Pero los procesadores de la época eran muy limitados para generar imágenes de calidad en tiempo real.
Las fases en la creación de gráficos 3D quedaron bien definidas(Renderman) y se hicieron esbozos simplificados en el mundode los Pcs (los inicios de OpenGL)
nVIDIA no tuvo otro remedio que adquirir 3DFX, mediante una OPA, para sobrevivir. Absorvió a su enemigo y aprovecho el know-how y sus ingenieros para ponerse en la punta de lanza.
ATI ha hecho un esfuerzo notable
Nuevas alianzas: ATI-AMDnVIDIA y los tablets
Intel en el mundo de las GPUsMicrosoft y la arquitectura unificada
Tarjetas aceleradoras (AGEIA,CausticTwo..) y su “absorción”
NOTAS:
LA (PRE)HISTORIA DE LOS PROCESADORES GRÁFICOS (IV)
OpenGL: Segal y Akeley ‘99Reyes: Cook/Carpenter/Catmull ‘87 Renderman: Upstill ‘90, Apodaca y Gritz ‘00Programabilidad y representación: Shade trees: Cook ‘84 Pipeline programable: Olano ‘98 RenderMan en OpenGL: Peercy ‘00 OpenGL con streams: Owens ‘00 Lenguajes de Shading en tiempo real: Proudfoot ‘01 Smash: McCool ‘01 (API ligeramente basado en OpenGL)
NOTAS:
En el vídeo de la semana se habla largo y tendido de esto y muchas otras cosas.
LA (PRE)HISTORIA DE LOS PROCESADORES GRÁFICOS (IV)
SHADERS
LA (PRE)HISTORIA DE LOS PROCESADORES GRÁFICOS (V)
Se suelen distinguir en las GL-machines:5 generacionesNo corresponden
a las series de
Nvidia ó ATI
No confundir generación con serie
Sistemas puramente software (que requerían grandes máquinas)
Utilizaban visualizadores vectorialesEl framebuffer era muy caro ( 20k$)Simuladores de vuelo para combate (militar)
Al no ser HW ni squiera se suele tener en cuenta a la hora de contarlo, pero fue un precedente importante
TiempoReal
NOTAS:
¿Por qué tanta insistencia con la historia?En primer lugar para saber qué ha ocurrido, dónde estamos y hacia donde nos movemos
En segundo lugar, y casi más importante: Este campo avanza a una velocidad realmente meteórica, de un año para otro casi hay que tirar las transparencias y esperemos que ATI-AMD no me dé un susto a mitad de cuatrimestre. <es una forma de poder reciclar las transparencias>
Por ello hay mucha información en Internet, en los artículos y en los pocos libros que hay, que ha quedado ya obsoleta. Y tenemos que ser consciente de ello para poder discernir y no confundir conceptos que ya han cambiado. Es esencial mirar la fecha de publicación de un artículo y ser muy crítico con lo que en ellos se cuenta, para no hacernos una idea equivocada.
Generación “cero”: Sistemas SÓLO SW
http://www.referenceforbusiness.com/history2/59/Evans-Sutherland-Computer-Corporation.html
Evans and Sutherland SP1(mediados de los años 70)
LA (PRE)HISTORIA DE LOS PROCESADORES GRÁFICOS (V)
Se suelen distinguir en las GL-machines:5 generacionesNo corresponden
a las series de
Nvidia ó ATI
No confundir generación con serie
Vértices: Transfomación, Clipping y proyecciónRasterización: Interpolación de colores (en lineas y puntos)Fragmentos: Se sobreescribe
Época: entre 1982 y 1987
Es la forma en la que en las presentaciones de SGI suelen explicar la evolución de los gráficos por ordenador
TiempoReal
NOTAS:
Ya se hacen los cálculos con coma flotante, no sólo con precisión fija (aritmética entera) como estábamos obligados cuando todo era SW
Artículo histórico:Jim Clark, “The Geometry Engine: A VLSI Geometry System for Graphics”, SIGGRAPH ’82
En la podemos ver que los segmentos más alejados se atenuaban en su teteracolor, para que pareciera más lejano. (la tetera nos puede servir para apreciar los avances tecnológicos)
Primera Generación: Gráficos alámbricos
Sólo podía hacerse en estaciones de trabajo ( ) muy workstationspotentes de la época
LA (PRE)HISTORIA DE LOS PROCESADORES GRÁFICOS (V)
Se suelen distinguir en las GL-machines:5 generacionesNo confundir generación con serie
Segunda Generación: Polígonos con colores sólidos sombreados
Vértices:Rasterización: Interpolación de profundidad (triángulos)Fragmentos: Buffer de profundidad, color blending
Época: 1987 - 1992
Cálculo de iluminación
TiempoReal
NOTAS:
Sólidos / primitivas “rellenas” Hardware de rasterización y rellenado de polígonosIluminación por vérticeSombreado Goraud (suave)
Sólo estaciones de trabajo
LA (PRE)HISTORIA DE LOS PROCESADORES GRÁFICOS (V)
Se suelen distinguir en las GL-machines:5 generacionesNo confundir generación con serie
Tercera Generación: Mapeado de Texturas
Vértices: Trasformación de las coordenadas de texturaRasterización: Interpolación de las coord. de texturaFragmentos: Evaluación de la textura y antialiasing
Época: 1992-2000
TiempoReal
NOTAS:
Ya podemos aplicar texturas por fragmento !!
LA (PRE)HISTORIA DE LOS PROCESADORES GRÁFICOS (V)
Se suelen distinguir en las GL-machines:5 generacionesNo confundir generación con serie
Cuarta Generación Programabilidad:
Sombreado (shading) programable
Modelado Basado en imagen
Convergencia de los gráficos y el procesado deseñal en otras señalesSuperficies curvas
TiempoReal
2001 Programabilidad
2002 Punto Flotante
2004 - 2005 Ejecución condicional
NOTAS:
Ya tenemos hardware de consumo: tarjetas gráficas que se pueden comprar
LA (PRE)HISTORIA DE LOS PROCESADORES GRÁFICOS (V)
Se suelen distinguir en las GL-machines:5 generacionesNo confundir generación con serie
Quinta Generación Evaluación Global:
TiempoReal
Ray tracing: visibilidad e integración
Photon Mapping, True Shadows, Path Tracing...
NOTAS:
LA (PRE)HISTORIA DE LOS PROCESADORES GRÁFICOS (V)
Se suelen distinguir en las GL-machines:5 generacionesNo confundir generación con serie
Quinta Generación Evaluación Global:
TiempoReal
Ray tracing: visibilidad e integración
Photon Mapping, True Shadows, Path Tracing...
Hay que tener muy en mente, la evolución y sobretodo el objetivo
hacia el que nos movemos para las decisiones que secomprender
reflejan en la arquitectura de las GPUs
NOTAS:
LA LÍNEA ENTRE TIEMPO REAL Y OFFLINE RENDERING...
Se mueve cada vez más deprisa :-)
NOTAS:
Generational ImprovementsPerformance• Triangles/second (geometry)• Pixels/second (rasterization)Features• Hidden surface elimination, texturemapping, antialiasing …Quality• Bits of resolution, filtering …
LA LÍNEA ENTRE TIEMPO REAL Y OFFLINE RENDERING...
NOTAS:
Pero queda mucho camino por recorrer...
“Reality is 80 million polygons.” – Alvy Ray Smith, Pixar
REPASO DELCAUCE GRÁFICO
Proceso de generación de imágenes mediante modelado geomético
( ) Existen otras formas de generar imágenes fotorrealistas1
que se verán en la asignatura TAG3D
NOTAS:
PIPELINE ó CAUCE GRÁFICO (I)
Vamos a estudiar los pasos del proceso de síntesis dede gráficos por ordenador más extendido en la actualidad: el cauce gráfico
Todos sabemos ó intuimos que los artístas “esculpen” sus modelos en programas CAD y que al final esto se convierte en imágenes y animaciones realistas (e interactivas si estamos en un juego)
De la descripción de unaescena 3D: polígonos queforman la superficie de losobjetos, materiales, luces...
A una representación2D convincente desdeun determinado puntode vista
(3D Total)
NOTAS:
Transformación
Etapas:
DivisionConceptualy Funcional
Rasterizado
Sombreado
Introducción
Aplicación
PIPELINE ó CAUCE GRÁFICO (I)
Vamos a estudiar la serie de pasos del proceso de síntesis dede gráficos por ordenador más extendido en la actualidad: el cauce gráfico
Todos sabemos ó intuimos que los artístas “esculpen” sus modelos en programas CAD y que al final esto se convierte en imágenes y animaciones realistas (e interactivas si estamos en un juego)
De la descripción de unaescena 3D: polígonos queforman la superficie de losobjetos, materiales, luces...
A una representación2D convincente desdeun determinado puntode vista
(3D Total)
Pero... ¿Qué hay en medio?
NOTAS:
Transformación
Etapas:
DivisionConceptualy Funcional
Rasterizado
Sombreado
Introducción
Aplicación
PIPELINE ó CAUCE GRÁFICO (II)
Hoy día, el que proceso de generación de imágenes sintéticassigue el pipeline o cauce gráfico es maduro y , bien definidoy este estandar se ha reflejado en las principales APIs gráficas (como ) e influye fuertemente en las arquitecturas de OpenGL las modernas .tarjetas gráficas
El cauce gráfico es el conjunto de transformaciones y procesadosde imagen que se realiza a los elementos que definen la escenahasta llegar a la imagen resultante final.
Este cauce , cada una de las se divide en etapas de procesado cuales toma como entrada la salida de la anterior, de ahí el símil con un cauce, ya que los datos (no las instrucciones)
fluyen en su interior.
etapa 1etapa 2
etapa 3
(como trozos de tubería)
NOTAS:
Transformación
Etapas:
DivisionConceptualy Funcional
Rasterizado
Sombreado
Introducción
Aplicación
PIPELINE ó CAUCE GRÁFICO (III)
El nombre de viene de un concepto de arquitectura,pipelineya que las tareas en las que se divide son lo suficientemente independientes como para realizarse en .paralelo (segmentación)
Algo parecido a cómo organizamos la colada cuando volvemosde viaje y tenemos que poner varias lavadoras:
lavar lavarsecar secar secarplanchar planchar plancharplegar plegar plegar
lavar
lavar
secar planchar plegar
secar planchar plegar
secar planchar plegar
Hacer tres tandas de lavadoras es más rápido y aprovechamos mejor los recursos si lo organizamos en paralelo
divide y vencerás
Un Pentium IV apenas tiene 30-40 etapas en su pipeline hipersegmentado, una GeForce3 tiene entre 600 y 800 depediendo del camino que tome el flujo de datos
NOTAS:
Transformación
Etapas:
DivisionConceptualy Funcional
Rasterizado
Sombreado
Introducción
Aplicación
DIVISIÓN CONCEPTUAL del CAUCE
Cada autor divide conceptualmente según su propio criterio(en general se da más relevancia en el esquema a las etapas de transformaciones, aunque todas son igual de importantes)
Modelado
Aplicación Geometría Rasterizado
Selecciónde vista
Divisiónpor w
(perspectiva)Representaciónlibro de
S.R.Buss
libro deT. Akenine
cada una de estas etapas es también un pipeline en sí mismaGPU Gems2
R. Fernando
Aplicación
Comandos
Geometría
Rasterización
Texturas
Fragmentos
Visualización
En esta parte de la asignatura vamosa profundizar y ver cómo se implementanen el hardware gráfico cada una de las etapas. Pero es indispensable una buenacomprensión de las mismas, por lo queno dudéis en preguntar cualquier cosaen RA ó PGATR
NOTAS:
Transformación
Etapas:
DivisionConceptualy Funcional
Rasterizado
Sombreado
Introducción
Aplicación
ETAPAS del CAUCE GRÁFICO (I)
Tenemos una serie de etapas bien definidas en las que la información “fluye” en orden de unas a otras
Evidentemente todo puede hacerse por softwareen procesadores de PC tradicionales, pero esmucho menos eficiente
Pipeline gráfico ultra-simplificado:
Tres etapas principalesentran vérticesordenados
obtenemospíxeles
NOTAS:
Transformación
Etapas:
DivisionConceptualy Funcional
Rasterizado
Sombreado
Introducción
Aplicación
Aplicación Transformación Rasterizado Sombreado
Memoria de video
(Texturas)
Estado gráfico
Vértices3D
Triángulosproyectados(vértices 2D)
Fragmentos(pre-píxeles)
Píxeles finales(color, profundidad)
Render a texturaGPU
ETAPAS del CAUCE GRÁFICO (II)ETAPA DE TRANSFORMACIÓN
Transforma las coordenadas de los vértices de los objetosde su sistema local a su respectiva proyección 2D
Espaciodel
Objeto
Espacio del
Mundo
Espaciode la
cámara
Espacio Visualizable
Espaciode la
Ventana
3D 2D
Además se calcula la iluminación en cada vértice
Imágenes tomadas del libro “The Cg Tutorial - The Definitive Guide To Programmable Real-Time
”Graphics
NOTAS:
Transformación
Etapas:
DivisionConceptualy Funcional
Rasterizado
Sombreado
Introducción
Aplicación
ETAPAS del CAUCE GRÁFICO (III)ETAPA DE TRANSFORMACIÓN
Tenemos muchos vértices y sus posiciones (en principio)no dependen unas de otras perfectamente paralelizable
Estas transformaciones han de ser muy flexibles y adaptarse a las necesidades, no sólo un puñado de patrones fijos debería ser programable
Iluminación por vértices
Transformación
Etapas:
DivisionConceptualy Funcional
Rasterizado
Sombreado
Introducción
AplicaciónImágenes tomadas del libro “The Cg Tutorial - The Definitive Guide To Programmable Real-Time
”Graphics
NOTAS:
ETAPAS del CAUCE GRÁFICO (IV)ETAPA DE RASTERIZADO
Convierte la representación geométrica (vértices)a una representación de imagen (fragmentos)
Los fragmentos pueden verse como píxeles “en potencia”
Fragmento = píxel + datos asociados(color, profundidad, pincel...)(potencial)
Interpola las cantidades calculadas en cada vérticea lo largo de los “píxeles”
Rasterizado
Vértices Fragmentos
No es programable, por ahora...
NOTAS:
Falta la , pero eso lo veremos al hablar de la arquitectura etapa de geometríaunificada
Transformación
Etapas:
DivisionConceptualy Funcional
Rasterizado
Sombreado
Introducción
Aplicación
ETAPAS del CAUCE GRÁFICO (V)ETAPA DE SOMBREADO
Básicamente, se calcula el color de cada pixel
Han de leerse imágenes de texturas (arrays de memoria)
Estas texturas llevan todo tipo de información (color difuso sobre la superficie, normales, brillo...)
Suele haber más pixeles que vértices, y las operaciones son más complejas
Ha de ser muy flexible: programable
Es una tarea fácilmente paralelizable
Mayor número de procesadores de fragmentos
Ya no tenemos el límite en el número de fuentes de luz, ni ningún otro...
NOTAS:
Transformación
Etapas:
DivisionConceptualy Funcional
Rasterizado
Sombreado
Introducción
Aplicación
ETAPAS del CAUCE GRÁFICO (V)ETAPAS DE ELIMINACIÓN DE DATOS
Al fluir los datos en el cauce, no sólo son transformados de unos tipos a otros, sino que además su volumen se multiplica.
Podemos imaginarlo como una reacción química en cadena.
Muchos de estos datos de una etapa a lano son necesarios siguiente, y conviene eliminarlos tan pronto como sea posible para no aumentar el coste computacional por su procesado
Así tendremos numerosos test entre etapas, para dejar pasar sólo aquellos elementos que nos interesen
test
NOTAS:
Transformación
Etapas:
DivisionConceptualy Funcional
Rasterizado
Sombreado
Introducción
Aplicación
ARQUITECTURASSTREAMING
(ó CIRCULANTES)
DIFERENCIAS CON EL MODELO VON
NEUMANN
( ) En español se suele utilizar el término “circulante” en lugar 1
de flujo, para distinguirlo de otras nociones de arquitectura
NOTAS:
INTRODUCCIÓN
A pesar del vertiginoso aumento de rendimiento en las GPUs su diagrama de bloques general hasta laapenas cambiaron
llegada de la arquitectura unificada ( )
( ) Aún después de la introducción de la Arquitectura Unificada parte de las etapas del cauce se implementan mediante unidades funcionales dispuestas según el modelo streaming
1
1
Refleja la buena cimentación de la arquitectura. La base es óptima escalable en muchos aspectos y por eso también es
Práctica en su interiorinexistencia de cuellos de botella(de existir, la arquitectura hubiera cambiado hace mucho tiempo)
Facilita su análisis, y nos permite hacer un estudio general basándonos en los modelos comerciales
de la actualidad
NOTAS:
MODELO DE VON NEUMANN
Tradicionalmente los PCs han seguido el modelo de Von Neumannen el que las instrucciones se almacenan como datos y sus operadores definen la forma en que se localizan dentro del HW
Esto situa el del PC en el cuello de botella accesoa memoria, así las optimizaciones en la arquitecturase han concentrado en reducir la latencia del accesoindividual a los datos (pero no en maximizar su ancho de banda)
NOTAS:
MODELO DE VON NEUMANN
Tradicionalmente los PCs han seguido el modelo de Von Neumannen el que las instrucciones se almacenan como datos y sus operadores definen la forma en que se localizan dentro del HW
Esto situa el del PC en el cuello de botella accesoa memoria, así las optimizaciones en la arquitecturase han concentrado en reducir la latencia del accesoindividual a los datos (pero no en maximizar su ancho de banda)
Ejemplo del Itanium 2:
area del chip(podemos considerarlo proporcional a los transistores dedicados a cada tarea)
6’5%
Una docena de ALUs para aritmética entera un par de FPUs para coma flotante
Control, comunicaciones, caché...
NOTA: Esta comparación no es muy justa porqueel procesador Itanium tiene una arquitectura EPIC -poco común-, pero nos sirve para tener un idea respecto a un procesador que está por encima de la media en capacidad de cálculo)
NOTAS:
¿DÓNDE ESTÁ EL TRUCO? (I)
Los procesadores tradicionales (PCs) son casi todo memoria caché
Pentium III Transistores 28,1 M
GeForce 6800 222 M Transistores
Aunque existen y juegan cachésun papel importante, están orientadas a texturas y la mayor parte del chip se utiliza para lógica computacional muy específica para un flujo de datos
Bueno en tareas de controlMalo en procesado de grandes cantidades de datos
(384 M trts en GeForce 7900)
NOTAS:
MODELO DE VON NEUMANN
Tradicionalmente los PCs han seguido el modelo de Von Neumannen el que las instrucciones se almacenan como datos y sus operadores definen la forma en que se localizan dentro del HW
Esto situa el del PC en el cuello de botella accesoa memoria, así las optimizaciones en la arquitecturase han concentrado en reducir la latencia del accesoindividual a los datos (pero no en maximizar su ancho de banda)
En la última década este modelo se ha aferrado al paralelismode datos para poder permanecer vigente en este contexto, medianteinstrucciones SIMD como las orientadas a multimedia (MMX...)
Las , a pesar de tener unos operadores muyaplicaciones gráficassencillos son difíciles de programar en tiempo real debido al
que hay que procesar.gran volumen de información
Cualquier arquitectura basada en el patrón convencional resulta claramente insostenible: es necesario redefinir el modelo de computación
NOTAS:
MODELO de STREAMING
Si el cuello de botella está en los datos, ¿por qué desplazamoslas instrucciones por el cauce segmentado del procesador y obligamos a que los datos vayan a su encuentro?
Parece más lógico que sean loslos que fluyan por ese cauce, que son la masa crítica del problema, y datos salir a la caza
de los operadores (instrucciones) que son pocos y simples.(en el contexto de las aplicaciones gráficas)
DATOS
DATOSDATOS
DATOS
DATOS
DATOS
RUT CNI CIONES
RUT CNI CIONES
RUT CNI CIONES
Así le damos “la vuelta” al embudo
Colocando la parte más ancha en el lado de los datosy dejando en el estrecho a las instrucciones, que como en el caso de las GPUs serán cableadas directamente sobre el HW (digamos que es como si lo configuraramos)
NOTAS:
PROCESADORES DE STREAMS (I)
Veamos más en detalle esta nueva forma de plantear el problema
Conjuntos de datos no conexos ni uniformes Complejos diagrama de control en función de los resultados que se van obteniendo
Antes: Proc. Tradicional Ahora: Modelo de Streams
Streams (Flujos)Conjuntos de datos con una estructura bien definidaTodos los datos streams
KernelsSus son streams entradas/salidas Toda operación sobre losstreams se define/expresa como kernel
Nombre explicativo
Se pueden encadenar
NOTAS:
Aquí se puede hacer el símil con los procesadores sistólicos.Haciendo hincapié en las diferencias de complejidad, enrutamiento de datos y “latidos”
PROCESADORES DE STREAMS (II)
stream kernel stream
Tenemos :dos tipos de “paralelismo”
El propio pipeline hace que muchas tareas se ejecuten en paralelo
Se puede operar con muchos elementos del stream en paralelo
La :comunicación es muy eficiente
Localidad entre el productor yel consumidorPatrón de acceso a memoriamuy predecible:
Se optimiza para la producción de muchos elementos no la salida de uno soloProcesar muchos elementos a la vez “esconde” la latencia
el tráfico de memoria
(insistiremos y veremos en profundidad estos conceptos más adelante)
Minimizamos
NOTAS:
PROCESADORES DE STREAMS (III)EL PASADO: HARVEST Y PIXELFLOW
Veamos unos ejemplos ilustrativos de arquitecturas streamingdel mundo académico (donde más se ha investigado hasta la llegada de las GPUs)
Primer precendente (años 50)Trataba grandes volumenes de datos encriptados como flujo, contaba con un coprocesador especializado para este tipo de operaciones
Harvest (IBM 7950)
PixelPlanes (Universidad North Carolina)El nombre refleja la forma en la que trabaja la arquitectura
(años 80)http://en.wikipedia.org/wiki/Harvest_(computer)
Procesador central calcula los vértices
y la geometría
Matriz de coprocesadores asociados uno a uno a píxeles de la pantalla, que disponen de unos pocos bytes de memoria local para procesar los atributos de cada píxel
http://www.cs.unc.edu/~pxfl/
NOTAS:
Puede considerarse la primera arquitectura streaming, como variante del supercomputador Strech dentro de un proyecto del ministerio de Defensa Norteamericano (DARPA)
Por cierto, la noche pasada me encontré una presentación muy curiosa de ATI (cuando todavía era ATI) llamada “CPU y GPU una convivencia dificil”, en la que decían que las GPUs no eran arquitecturas streaming, es la primera vez que lo veo, pero la presentación estaba hecha con saña y no le haría demasiado caso, también decían que nunca podrían unirse CPU y GPU al ser puntos de vista arquitecturales radicalmente diferentes y ahí tenemos el Fusión de AMD (nombre en clave Swift) y la iniciativa de Intel
--> se trata de un procesador multinúcleo que lleva el nombre en clave de , Larrabeeque consta de 16 núcleos con 4 hilos de ejecución cada uno. Estará basado en la arquitectura x86 aunque incluirá instrucciones especificas de las GPUs por lo que el software actual seria compatible con el sin apenas modificacion. Se espera que cada chip alcance rendimientos de 1 TeraFlop y se espera comercializar en 2009-2010. En
http://www.elpais.com/articulo/tecnologia/chips/Intel/lanzara/2010/llevaran/tecnologia/UPC/elpeputec/20070726elpcibtec_3/Tes
continúa
PROCESADORES DE STREAMS (IV)EL PRESENTE: MERRIMAC Y CHEOPS
Merrimac e Imagine (Stanford)
Menos unidades de procesamiento que tareas
Organización multiplexadaen el tiempoCada etapa es completamente programable
Stanford Imagineprocesador de streams de
its para 32b procesado de señal, imagen y gráficos (2001)
Chip de 16x16mm (Texas Instruments)21 millones de transistores y 288 MhzRendimiento global del sistema: · 11’8 GFLOPS en aritmetica de 32 bits · 23 GFLOPS en aritmetica de 16 bits
26% ALUs
16% bancos de registros anexos
interfaz de memoria,interfaz de red, enrutado de datos, unidad decontrol...
NOTAS:
Hubo 4 primeras generaciones de Pixel Planes 4ª--> 40.000 trainagulos/sg5ª + bus interconexión 640MB/s-->2 Millones triag/sgTodo desemboco en la aparición del PixelFlow en 1992
Imagine (0’18 micras y menos de 10 vatios de consumo )
de la pga anterior
PROCESADORES DE STREAMS (IV)EL PRESENTE: MERRIMAC Y CHEOPS
Merrimac e Imagine (Stanford)
Menos unidades de procesamiento que tareas
Organización multiplexadaen el tiempoCada etapa es completamente programable
Stanford Imagineprocesador de streams de
its para 32b procesado de señal, imagen y gráficos (2001)
SDRAM
SDRAM
SDRAM
SDRAM
CPUCONTROLADOR CIRCULANTE
(control del flujo de datos e intrucciones)
inte
rfaz
con
m
emor
ia p
rinc
ipal
Banco de registros
streaming(SRF)
Ejecución del kernel
Microcontrolador
De instrucciones
De datos
De tareasParalelismo:
OtrosClientesStreaming
ALU Cluster
ALU Cluster
ALU Cluster
JERARQUÍA DE MEMORIA
2’1 Gbytes/sg.(tipo AGP)
25’6 Gbytes/sg.(inter-cluster)
435 Gbytes/sg.(intra-cluster)
8 bloques aritméticos operando bajo paralelismo SIMD, donde dentro de cada uno de ellos hay 6 ALUs como procesador VLIW
SIMD = Una sóla instrucción múltiples datosVLIW = Very Long Instruction Word
NOTAS:
En el dibujo se pueden ver los distintos anchos de banda y formas de paralelismoEs aritmética de 16 bits.
PROCESADORES DE STREAMS (IV)EL PRESENTE: MERRIMAC Y CHEOPS
Merrimac e Imagine (Stanford)
NOTAS:
PROCESADORES DE STREAMS (V)EL PRESENTE: MERRIMAC Y CHEOPS
Merrimac e Imagine (Stanford)
Menos unidades de procesamiento que tareas
Organización multiplexadaen el tiempoCada etapa es completamente programable
Es el núcleo del Stanford
StreamingSupercomputer
Stanford Merrimacprocesador de streams 64bits para
computación científica (2004)
En el año 2003 comenzó una nueva arquitectura en la que se trata de explotar la escalabilidadSe trata de maximizar la localidad mediante una y jerarquía de registrosreducir el ancho de banda necesario en un orden de magnitud (ó más)Chip de 124 mm (2004) a 1GHzProcesador MIPS64128 GFLOPS200 FPUs1000 pin BGAInterfaz a 16 chips DRAM 20 GB/s
NOTAS:
PROCESADORES DE STREAMS (VI)EL PRESENTE: MERRIMAC Y CHEOPS
Cheops (MIT)Se trata de una arquitectura de y compacta para streaming modularla adquisición, procesamiento y visualización de video digitalEn lugar de utilizar muchas CPUs y descomponer espacial o temporalmente las secuencias de video para aprovechar el paralelismo de datos, Cheops abstrae un conjunto de operaciones coputacionalmente intensivas (16 y 24 bits) que pueden ejecutarse de forma simultánea en modelo streamingAdemás cuenta con un procesador tipo Von Neumann que controla el conjunto y se encarga de las operaciones de 32 bitsEl diseño modular favorece la escalabilidad del sistema, con tres tipos de módulos: procesamiento entrada/memoria salida Dos tipos de buses. memoria de píxeles y de datos y control (100 MB/s) (32 MB/s)
El diseño está pensado de manera que es muy fácil reutilizar los datos procesados
http://web.media.mit.edu/~wad/cheops_CSVT/cheops.html
Los tres tipos de modulos conectados por busesDiagrama simplificado del proc.
(sin tener que comenzar otro proceso de renderizado como en las GPUs actuales)
8’5 GFLOPS (sostenido)12’8 GFLOPS (pico)
NOTAS:
Recuerda un poco al Cell que habréis visto con Marta
PROCESADORES DE STREAMS (VII)ALTERNATIVAS EN SILICIO: VIRAM y RAW
VIRAM (Berkeley)Para tratar de minimizar el problema del “muro de memoria” (la diferencia entre la capacidad de cálculo y velocidad del procesador y la memoria) se
para minimizar la latencia integra el procesador dentro del área de memoriay aumentar el ancho de banda.
Toda la memoria es un inmeso banco de registros
Tiene importantes en consumo energético, venjajas disipación, coste y área de integración(NEC ha implementado algo muy parecido en la memoria eRAM de la XBoX 360)
2 unidades de procesamiento vectorial 128 bits, que se pueden desdoblar en 4 de 64 bits u 8 de 32 bits
200 Mhz
3’2 GFLOPS en aritmética de 32 bits
32 registros de 128 bits
13MB de memoria principal
http://iram.cs.berkeley.edu/kozyraki/project/ee241/midterm/report.html
NOTAS:
sólo 200MHz y alcanza 3’2 GFLOPs
¿por que no introducir algunas tareas en la propia memoria? En realidad ya tenemos unas pocas, pero esto se puede sofisticar.Normalmente los texels están comprimidos sin pérdidas en memoria, y los tenemos que coger al menos de 4 en 4 (por el filtrado bilineal), de ahí que se almacene en forma de curva de Peano.
PROCESADORES DE STREAMS (VIII)ALTERNATIVAS EN SILICIO: VIRAM y RAW
Más unidades de procesamiento que tareas
Cada “celda” es prograble
Los streams conectan “celdas”
Organización en tareas enparalelo
Montañas de ALUs y registros
“Cables” pequeños y programables
MIT RAW
Tile processing: consiste en colocar varios procesadores en el área de silicio dispuestos como en azulejosuna pared, interconecatdos por una red con la misma de topología 2Dbaja latencia (dos estáticas y dos
)configurables
Incluye en cada chip 16 procesadores RISC con FPU y caché de 128 KB
Paralelismo de datos, a nivel de ins-trucción y optimizaciones streaming
4’8 GFLOPS pico
200 Mhz
IBMCell
Ej. El proc. Cell tb. tiene más unidades de proc. que tareas
Las variantes de bajo coste (clusters de GPUs) se verán más adelante
NOTAS:
de nuevo esto nos recuerda bastante a las matrices de procesadores sistólicos4’8 GFLOPs con 200 Mhz, no está mal
PROCESADORES DE STREAMS (IX)
La diferencia fundamental nuestro caso la : en es especializaciónLa correspondencia entre las tareas de la síntesis de gráficosy los conjuntos de procesadores en el procesador de la GPU
ATI Flipper 51 M trans.
Organización de tareasen paralelo
Una tarea a cada (conjunto de)
unidades de procesamiento
Las unidades están cableadas de forma fija
Comunicación eficienteArquitectura pensada “sólo” para gráficosTenemos tipos dedossub-procesadores especializados
NOTAS:
EL CAUCE GRÁFICO EN PROFUNDIDAD
Veamos un poco más en detalle el proceso de generación de imágenes desde el punto de vista del programador y su implementación en HW
NOTAS:
PROC. GENERACIÓN IMG. (I) DE DE APLICACIÓN GRÁFICA & APIs
La lista de vértices y sus atributos, los valores iniciales de todos ellos, las operaciones a realizar y las texturas a aplicar se describen en la capa SW mediante un programa convencional (C, C++...) que incluye una serie de llamadas a un API (Application Program interface)
Transformación
Etapas:
DivisionConceptualy Funcional
Rasterizado
Sombreado
Introducción
Aplicación
PIPELINE ó CAUCE GRÁFICO (I)
Vamos a estudiar los pasos del proceso de síntesis dede gráficos por ordenador más extendido en la actualidad: el cauce gráfico
Todos sabemos ó intuimos que los artístas “esculpen” sus modelos en programas CAD y que al final esto se convierte en imágenes y animaciones realistas (e interactivas si estamos en un juego)
De la descripción de unaescena 3D: polígonos queforman la superficie de losobjetos, materiales, luces...
A una representación2D convincente desdeun determinado puntode vista
(3D Total)
OpenGL y DirectX
La CPU ejecuta el programa y como resultado de las llamadas a la API, se colocan las texturas en la memoria de video y se envía el microcódigo que programa las operaciones a realizar en la GPU. Después el procesador gráfico puede recibir la lista de vértices y ejecuta sobre el flujo de datos la secuencia de operaciones para la generación de las imágenes.
Atributos de entrada para vértices Atributos de salida para vértices Nº
Nombre Descripción Formato Nombre Descripción Formato 0 OPOS Posición (x,y,z,w) HPOS Posición (x,y,z,w) 1 WGHT Peso (w,0,0,1) COL0 Color prim. frontal (r,g,b,a) 2 NRML Vector normal (x,y,z,1) COL1 Color sec. frontal (r,g,b,a) 3 COL0 Color primario (r,g,b,a) BFC0 Color prim. trasero (r,g,b,a) 4 COL1 Color secundario (r,g,b,1) BFC1 Color sec. trasero (r,g,b,a) 5 FOGC Coord. de niebla (f,0,0,1) FOGC Coord. se niebla (f,*,*,*) 6 DIFF Luz difusa A0 Dir. Indir. Paráms. 7 SPEC Luz especular - (Sin usar) 8 TEX0 Coord. Textura 0 (s,t,r,q) TEX0 Coord. Textura 0 (s,t,r,q) 9 TEX1 Coord. Textura 1 (s,t,r,q) TEX1 Coord. Textura 1 (s,t,r,q) 10 TEX2 Coord. Textura 2 (s,t,r,q) TEX2 Coord. Textura 2 (s,t,r,q) 11 TEX3 Coord. Textura 3 (s,t,r,q) TEX3 Coord. Textura 3 (s,t,r,q) 12 TEX4 Coord. Textura 4 (s,t,r,q) TEX4 Coord. Textura 4 (s,t,r,q) 13 TEX5 Coord. Textura 5 (s,t,r,q) TEX5 Coord. Textura 5 (s,t,r,q) 14 TEX6 Coord. Textura 6 (s,t,r,q) TEX6 Coord. Textura 6 (s,t,r,q) 15 TEX7 Coord. Textura 7 (s,t,r,q) TEX7 Coord. Textura 7 (s,t,r,q)
Veamos un poco las APIs que vamos a utilizar
NOTAS:
APIs/INTEFACES: OpenGL
Para poder utilizar la GPU para representar los gráficos primero hay que cargar una serie de programas en su interior, subir las texturas a memoria, los descriptores de la geometría...
Las más populares son y DirectX:OpenGL
Bajo nivelEs una especificación, no exactamente una APIHay implementaciones en muchos S.O. multiplataformaNo tiene “cosas escondidas”De la mano de Silicon GraphicsCiertos estudios de software tienen clara preferencia Tiene versiones “light” para plataformas móviles
SIGGRAPH ‘10Presentación OpenGL 4.0
NOTAS:
APIs/INTEFACES: DirectX
WindowsVistaDx10
PeleaShadermodels
Alto nivelEs practicamente una plataforma de desarrolloLa API 3D es sólo una parte Sólo funciona en plataformas Microsoft (Windows, XBoX)CerradoPuede cambiar mucho de una versión a otraMuy popular en la industría de los videojuegosPor ahora, tiene menos sobrecarga del” driver” que OpenGL a la hora de utilizar intensivamente las GPUs
Venta de montones
de tarjet.
Muchos intereses económicos de por medio...
NOTAS:
Etapas:
DivisionConceptualy Funcional
Rasterizado
Sombreado
Introducción
Aplicación
ETAPAS del CAUCE GRÁFICO (II)ETAPA DE TRANSFORMACIÓN
Transforma las coordenadas de los vértices de los objetosde su sistema local a su respectiva proyección 2D
Espaciodel
Objeto
Espacio del
Mundo
Espaciode la
cámara
Espacio Visualizable
Espaciode la
Ventana
3D 2D
Además se calcula la iluminación en cada vértice
Imágenes tomadas del libro “The Cg Tutorial - The Definitive Guide To Programmable Real-Time
”Graphics
Transformación
PROC. GENERACIÓN IMG. (II) DE DE AGRUPACIÓN DE VÉRTICES
Con los vértices se componen líneas o triángulos (la primitiva básica)
2 vértices píxeles 1 línea3 vértices píxeles en el área del triángulo
A grosso modo, cuanto mayor sea el número de polígonos, más realismo tendrán los objetos de la escena y podremos representar objetos más complejos (veremos trucos para mejorar la calidad utilizando muy pocos polígonos)
Prmitiva OpenGL Significado
GL_POINTS Cada vértice es un punto individual.
GL_LINES Cada par de vértices constituye una línea recta.
GL_LINE_STRIP Los vértices forman una secuencia de segmentos.
GL_LINE_LOOP Sobre el anterior, une el último vértice con el primero.
GL_TRIANGLES Con cada tres vértices consecutivos compone un triángulo.
GL_TRIANGLE_STRIP Igual que el anterior, pero con triángulos adyacentes.
GL_TRIANGLE_FAN Idem, pero con triángulos adyacentes con vértice común.
GL_QUADS Con cada cuatro vértices se compone un polígono.
GL_QUAD_STRIP Igual que el anterior, pero con polígonos adyacentes.
GL_POLYGON Los vértices describen un polígono convexo.
tetera con pocos polígonostetera con más polígonos
Los 10 tipos de primitivas que se pueden especificar en OpenGL una vez definida la lista de vértices
NOTAS:
Etapas:
DivisionConceptualy Funcional
Rasterizado
Sombreado
Introducción
Aplicación
ETAPAS del CAUCE GRÁFICO (II)ETAPA DE TRANSFORMACIÓN
Transforma las coordenadas de los vértices de los objetosde su sistema local a su respectiva proyección 2D
Espaciodel
Objeto
Espacio del
Mundo
Espaciode la
cámara
Espacio Visualizable
Espaciode la
Ventana
3D 2D
Además se calcula la iluminación en cada vértice
Imágenes tomadas del libro “The Cg Tutorial - The Definitive Guide To Programmable Real-Time
”Graphics
Transformación
PROC. GENERACIÓN IMG. (II) DE DE AGRUPACIÓN DE VÉRTICES
Prmitiva OpenGL Significado
GL_POINTS Cada vértice es un punto individual.
GL_LINES Cada par de vértices constituye una línea recta.
GL_LINE_STRIP Los vértices forman una secuencia de segmentos.
GL_LINE_LOOP Sobre el anterior, une el último vértice con el primero.
GL_TRIANGLES Con cada tres vértices consecutivos compone un triángulo.
GL_TRIANGLE_STRIP Igual que el anterior, pero con triángulos adyacentes.
GL_TRIANGLE_FAN Idem, pero con triángulos adyacentes con vértice común.
GL_QUADS Con cada cuatro vértices se compone un polígono.
GL_QUAD_STRIP Igual que el anterior, pero con polígonos adyacentes.
GL_POLYGON Los vértices describen un polígono convexo.
Los 10 tipos de primitivas que se pueden especificar en OpenGL una vez definida la lista de vértices
Puntos Bucle cerrado de líneas Tira de lineas
v4
v4v4
v0v0
v0
v3
v3
v3
v5
v5
v5
v1v1
v1 v6
v6
v2
v2v2
v8v7
Líneas independientes
v4
v0
v3
v5
v1v6
v2
v7
Triángulos independientes
Tira de triángulos
Abanico de triángulos(Triangle Fan)
v4
v4
v4
v0
v0
v0
v3
v3
v3
v5
v5
v1
v1
v1
v6
v2
v2
v2
Quads independientes
Tira de Quads
Polígono
v4
v4
v4
v0
v0
v0
v3
v3
v3
v5
v5
v1
v1
v1
v6
v6
v2
v2
v2
v7
v7
NOTAS:
Etapas:
DivisionConceptualy Funcional
Rasterizado
Sombreado
Introducción
Aplicación
ETAPAS del CAUCE GRÁFICO (II)ETAPA DE TRANSFORMACIÓN
Transforma las coordenadas de los vértices de los objetosde su sistema local a su respectiva proyección 2D
Espaciodel
Objeto
Espacio del
Mundo
Espaciode la
cámara
Espacio Visualizable
Espaciode la
Ventana
3D 2D
Además se calcula la iluminación en cada vértice
Imágenes tomadas del libro “The Cg Tutorial - The Definitive Guide To Programmable Real-Time
”Graphics
Transformación
PROC. GENERACIÓN IMG. (III) DE DE TRANSFORMACIÓN EN EL ESPACIO 3D
Se aplican las matrices de rotación y traslación 3D, utilizando el punto devista para calcular la profundidad de los objetos en la escena.
También pueden definirse uno o varios focos de que aporten realismo, es en este punto en el que se suele calcular -tradicionalmente- la intensidad de la luz en cada punto, e igualmente se “proyectan” las sombras en estaetapa del renderizado.
Rotación
Traslación
NOTAS:
PROC. GENERACIÓN IMG. (IV) DE DE ACOTACIÓN AL ÁREA VISIBLE EN PANTALLA
ETAPAS del CAUCE GRÁFICO (V)ETAPAS DE ELIMINACIÓN DE DATOS
Al fluir los datos en el cauce, no sólo son transformados de unos tipos a otros, sino que además su volumen se multiplica.
Transformación
Etapas:
DivisionConceptualy Funcional
Rasterizado
Sombreado
Introducción
Aplicación
Podemos imaginarlo como una reacción química en cadena.
Muchos de estos datos de una etapa a lano son necesarios siguiente, y conviene eliminarlos tan pronto como sea posible para no aumentar el coste computacional por su procesado
Así tendremos numerosos test entre etapas, para dejar pasar sólo aquellos elementos que nos interesen
test
Delimitación del espacio 2D visible en pantalla (clipping) y de la caravisible de cada poligono (culling).
La primera operación descarta (parcial o totalmente) los polígonos que quedan fuera del ángulo de visión definido para la imagen, y la segunda, los vértices de cada objeto que quedan ocultos tras su cara visible.
El objetivo es reducir el número de datos en el flujo, que no van a aportarinformación gráfica a la escena y agilizar las etapas siguientes
Puede apreciarse cómo sehan eliminado las carasposteriores (que quedaban tapadas) en las teteras
NOTAS:
Etapas:
DivisionConceptualy Funcional
Rasterizado
Sombreado
Introducción
Aplicación
ETAPAS del CAUCE GRÁFICO (II)ETAPA DE TRANSFORMACIÓN
Transforma las coordenadas de los vértices de los objetosde su sistema local a su respectiva proyección 2D
Espaciodel
Objeto
Espacio del
Mundo
Espaciode la
cámara
Espacio Visualizable
Espaciode la
Ventana
3D 2D
Además se calcula la iluminación en cada vértice
Imágenes tomadas del libro “The Cg Tutorial - The Definitive Guide To Programmable Real-Time
”Graphics
Transformación
PROC. GENERACIÓN IMG. (V) DE DE ASOCIACIÓN A LA VENTANA DE VISUALIZACIÓN
Las coordenadas x e y de cada polígono son ahora transformadas a coordenadas en la pantalla (dependiendo de la posición de la cámara y las dimensiones de la ventana de visualización). la coordenada z permanece invariable y se utilizará en rasterizado con el algoritmo z-buffer
Una vez transformados y proyectados los vértices (y cálculadas sus áreas visibles) sus coordenadas espaciales son definitivas. Acabamos con los vértices y comenzamos a procesar los fragmentos (píxeles en potencia)
NOTAS:
PROC. GENERACIÓN IMG. (VI) DE DE CREACCIÓN DE FRAGMENTOS DE LA IMAGEN
ETAPAS del CAUCE GRÁFICO (IV)ETAPA DE RASTERIZADO
Convierte la representación geométrica (vértices)a una representación de imagen (fragmentos)
Los fragmentos pueden verse como píxeles “en potencia”
Fragmento = píxel + datos asociados(color, profundidad, pincel...)(potencial)
Interpola las cantidades calculadas en cada vérticea lo largo de los “píxeles”
Rasterizado
Vértices Fragmentos
No es programable, por ahora...
Transformación
Etapas:
DivisionConceptualy Funcional
Rasterizado
Sombreado
Introducción
Aplicación
En el rasterizado se convierte cada punto, línea y polígono 3D en una matriz 2D de puntos donde se guarda información del color y profundidad
Dependiendo de la resolución de la pantalla se colocan los vértices y seinterpolan las áreas de los polígonos que contienen en memoria
Tenemos dos áreas de memoria en las que se realiza esta transformación:Los bufferes y sus implicaciones en la arquitectura se verán en detalle en
.vid.el tema de mem
Color buffer ó back buffer es una matriz cuyas elementos son ternas RGB (y un cuarto elemento -alfa- para la trasparencia), que definen el color para cada uno de los puntos 2D del polígono transformado
Z-buffer o buffer de profundidad es otra matriz en la que se guarda información de profundidad y se determina si los polígonos quedan total o parcialmente tapados por otros
Buffer de color + Buffer de profundidad = Frame Buffer
El algoritmo es tan sencillo como mantener en el frame buffer los datos del fragmento cuya coordenada z sea la más próxima al punto de vista de la escena, y se actualiza cuando se haya uno que puede estar delante de ellos. si se utilizan trasparencias (canal alfa) la operación deja de ser conmutativa y haya que procesar primero los objeto opacos y tener cierto cuidado con el orden de atrás hacia adelante del resto.
NOTAS:
PROC. GENERACIÓN IMG. (VII) DE DE PEGADO DE TEXTURAS
ETAPAS del CAUCE GRÁFICO (V)ETAPA DE SOMBREADO
Básicamente, se calcula el color de cada pixel
Han de leerse imágenes de texturas (arrays de memoria)
Estas texturas llevan todo tipo de información (color difuso sobre la superficie, normales, brillo...)
Suele haber más pixeles que vértices, y las operaciones son más complejas
Ha de ser muy flexible: programable
Es una tarea fácilmente paralelizable
Mayor número de procesadores de fragmentos
Ya no tenemos el límite en el número de fuentes de luz, ni ningún otro...
Transformación
Etapas:
DivisionConceptualy Funcional
Rasterizado
Sombreado
Introducción
Aplicación
Se recubre la superficie de cada objeto, pegándole a cada polígono proyectado la textura que añade realismo a su aspecto externo. El mapa de texturas debe transformarse de forma acorde con el ángulo, tamaño y posición de los polígonos a los se va a adherir.
Este complejo proceso se verá en la asignatura de y en Rendering Avanzadolas prácticas de esta asignatura desde el punto de vista de síntesis de texturas.
NOTAS:
PROC. GENERACIÓN IMG. DE DE (VIII)MEZCLADO DE ELEMENTOS (BLENDING)
Se trata de la composición final de la escena, en la que se superponen los nuevos elementos sobre los existentes en la imagen. En esta fase se utilizanoperadores de máscara (AND & OR), filtros... Este mezclado nos permite reutilizar el renderizado parcial de la escena en los siguientes de frames una animación o juego.
La GPU realiza estas operaciones de forma ordenada y sistemática, como sise encontrara en un bucle infinito De no alterarse la lista de vértices o los atributos, tendríamos siempre la misma imagen,
pero si introducimos una variable los cambios se reflejarán de forma inmediata.
Una vez tenemos la imagen final,se envía a una zona especial de memoria donde estos datos (digitales, normalmente de 16 bits) se transforman en las señales que maneja el monitor (sea digital o analógico)
O bien se realimentan en el cauce para postprocesado
Sardegna - primavera 2006 (MomaStalker)
NOTAS:
Flujo de“vértices” Programa
de vértices
Flujo de vérticestransformados Ensamblado
de triángulos
Clip/Cull/Viewport
Flujo de triángulosen el espacio de pantalla
Rasterización
Flujo de fragmentossin procesar
Flujo defragmentos
Composición
Stream depíxeles
FramebufferImagen
Flujo detriángulos
Programa de fragmentos
ETAPAS del CAUCE GRÁFICO
Píxelesde colores
Listas depuntos 3D
Texturas
NOTAS:
Pasos del Flujo (simplificado) Arquitectura Tarj. Gráf.
Aplicación
Comandos
Geometría
Rasterización
Texturas
Fragmentos
Visualización
Aplicación
Rasterización
Proc. deFragmentos
Visualización
Proc. Vértices
Transformación
Sombreado
¿CÓMO ENCAJA EL CAUCE EN LA GPU?
NOTAS:
Proc. Teselación
Proc. Geometría
SHADERS: RECONFIGURACIÓN DEL HW GRÁFICO (I)
Llamamos a los programas que se shaders ó sombreadores“microcodifican” en los procesadores programables de la GPU
(SOMBREADORES)
Las etapas del cauce de segmentación durantefueron evolucionandola decada pasada, en la que se fueron uniéndose y separándose hasta alcanzar un punto de madurez en el que se han conformado unas
.operaciones fijas y otras programables
La programación de operaciones en esta capa firmware está en manos del programador gráfico (en lugar del fabricante como en los ejemplos mecionados con CPUs)
Estas partes programables se implementan mediante un defirmwareforma similar a una unidad de control microprogramada de los años80 (familia 80x86 de Intel) o a una CPU adaptativa de finales de los 90(procesadores Crusoe y Caruso de Transmeta).
El nombre viene de que este programa “oscurece” la función estándar que tiene asignada la segmentación estandar en esa etapa, por otra nueva anulándola para reemplazarla que se coloca en su lugar.
NOTAS:
SHADERS: RECONFIGURACIÓN DEL HW GRÁFICO (II)(SOMBREADORES)
Aplicación
Comandos
Geometría
Rasterización
Texturas
Fragmentos
Visualización
Evaluación
Transformación
Iluminación
Coord. Texturas
Clipping
Direc. texturas
Filtro texturas
Regs. combiners
Niebla
Mezclado
Test Alpha, S y Z
Operadores lógicos
Evaluación
Clipping
Niebla
Mezclado
Test Alpha, S y Z
Operadores lógicos
Shaders paraVértices,
Teselación y Geometría
Shader para
Fragmentos
NOTAS:
SHADERS: RECONFIGURACIÓN DEL HW GRÁFICO (III)(SOMBREADORES)
ensambladoroptimizado
para el perfilde la GPUdel usuario
traducción al HW y envío de las instrucciones a través de la API
En la próxima clase y en el laboratorio lo veremos mucho más en detalle
Sin los sombreadores, cada programador hubiera incorporado la funcionalidad que necesitara en un punto arbitratrio del cauce segmentado, y cada arquitecto hubiera comprimido o expandido el número de etapas a su voluntad y hoy tendriamos un caos de operaciones gráficas no facilmente conciliables. (como ocurría a
finales de los 90)
Nomenclatura: DirectX: Vertex Shader Pixel Shader OpenGL Vertex Program Fragment Program
NOTAS:
LECTURA RECOMENDADA
No es un trabajo, peroconviene leerlo parareforzar los conceptosque hemos visto hoyy su relación con lo que habéis estudiando en Informática Gráfica
El nivel de este paperes sencillo e introductorio
http://graphics.stanford.edu/~liyiwei/courses/GPU/
NOTAS:
ACTIVIDAD SEMANAL
No es un trabajo, peroconviene verlo parareforzar los conceptosque hemos visto hoyy su relación con lo que habeis estudiando en Informática Gráfica
El nivel de este vídeoes sencillo e introductorio
NOTAS:Marc Olano ha hecho muchas cosas, entre ellas, escribir el libro naraja ;-)
Programmable GPUs are increasingly powerful computational machines. While GPU shading practitioners must still choose between graphics APIs and languages, their capabilities and syntax are amazingly similar. This course presents the latest GPU shading evolution in the next generation hardware, and highlights the features, similarities and differences between the different API, language and hardware choices through a series of instructive examples and demos presented by experts from academia and industry. Unlike previous courses, this year will focus on examples and general shading techniques that could be ported from shading language to shading language, but each presented in explicit detail using one of the API/language/hardware choices to allow course participants to learn general methods while judging the differences for themselves. In addition, we highlight the distance that still exists between production and GPU shading and show the inroads GPUs have made in production rendering
Campus Virtual
Bienvenida e Introducción al Curso de GPGPU del SIGGRAPH’06
por Marc Olano
Aquellos que no tengáis todavía acceso, podéis
descargarlo de la consigna: PGATR
BIBLIOGRAFÍA(De esta clase)
Capítulo
15
NOTAS:
RESUMEN(Ideas claves de esta clase)
Los procesadores gráficos son muy interesantes desde el punto de vista de y capacidad de cálculo programación de juegos.
Su y hace que tengan una orientación a datos especializaciónarquitectura muy especial
Implementan en su hardware el cauce gráfico
Tienen un , aunque se trata de rápido crecimiento aseguradoun mundo en , de ahí la necesidad devertiginosa evoluciónestudiar los procesadores con un espíritu crítico que nos permita adaptarnos y comprender los cambios
Su programación es muy dependiente de la arquitectura del chip gráfico, por lo que hemos de conocerla bien si queremos sacarle el máximo partido
NOTAS: