TEMA 2.1 ARQUITECTURAS STREAMING Y CAUCE GRÁFICO CLÁSICO Curso 2013 / 14 Procesadores Grácos y Aplicaciones en Tiempo Real Profesores: David Miraut y Óscar D. Robles © GMRV 2005-2014 – Febrero 2014 Máster en Informática Gráfica, Juegos y Realidad Virtual David Miraut Andrés Escuela Técnica Superior de Ingeniería Informática Procesadores Grácos y Aplicaciones en Tiempo Real 2013/14 1/ 1/3472 ÍNDICE Historia de las tarjetas gráficas Introducción al cauce grafico Arquitecturas streaming Evolución y procesadores streaming El cauce gráfico en profundidad Relación entre el cauce gráfico y la GPU Lectura recomendada Bibliografía c NOTAS: Todas las marcas y productos mencionados en estas trasparencias están registradas por sus respectivas compañías, y su uso es de carácter descriptivo con fines docentes. Parte de las tablas y gráficos están basados en las presentaciones de GPGPU y streaming computing de NVidia y ATI-AMD, y en los libros mencionados en la bibliografía 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)... mem. no lineal aspect ratio 4:3 compromiso entre resolución/colores ... La evolución trajo consigo la guerra de las SuperVGA: Mayor resolución y más colores Un caos para los Pero cada driver era completamente distinto desarrolladores Los ordenadores no estaban concebidos para el entretenimiento, sino para aplicaciones ofimáticas, pero unos cuantos “apasionados” se empeñaron Demoscene Ultima VI The Stigian Abyss NOTAS: de juegos El stadard VESA no aprovechaba todas las características ng asti c y a (John Carmack) R 286 WolfStein 3D LA (PRE)HISTORIA DE LOS PROCESADORES GRÁFICOS (III) Las fases en la creación de gráficos 3D quedaron bien definidas (Renderman) y se hicieron esbozos simplificados en el mundo de los Pcs (los inicios de OpenGL) Pero los procesadores de la época eran muy limitados para generar imágenes de calidad en tiempo real. La visión de 3DFX supuso una revolución, irrumpió en el mercado con tarjetas de tal calidad que barrió literalmente eran programables, a todos los competidores (no sólo aceleraban parte del cauce) 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: LA (PRE)HISTORIA DE LOS PROCESADORES GRÁFICOS (III) Las fases en la creación de gráficos 3D quedaron bien definidas (Renderman) y se hicieron esbozos simplificados en el mundo de los Pcs (los inicios de OpenGL) Pero los procesadores de la época eran muy limitados para generar imágenes de calidad en tiempo real. La visión de 3DFX supuso una revolución, irrumpió en el mercado con tarjetas de tal calidad que barrió literalmente Nuevas alianzas: ATI-AMD a todos los competidores nVIDIA y los tablets nVIDIA no tuvo otro que adquirir 3DFX, Intelremedio en el mundo de las GPUs mediante una Microsoft OPA, paraysobrevivir. Absorvió a su la arquitectura unificada enemigo y aprovecho el know-how(AGEIA, y sus ingenieros Tarjetas aceleradoras para ponerse en la punta de “absorción” lanza. CausticTwo..) y su ATI ha hecho un esfuerzo notable NOTAS: LA (PRE)HISTORIA DE LOS PROCESADORES GRÁFICOS (IV) OpenGL: Segal y Akeley ‘99 Reyes: Cook/Carpenter/Catmull ‘87 Renderman: Upstill ‘90, Apodaca y Gritz ‘00 Programabilidad 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) Tiempo Real Se suelen distinguir 5 generaciones en las GL-machines: No confundir generación con serie No a l corr Nv as s esp idi eri ond a ó es en d (que requerían grandes máquinas) AT e I Generación “cero”: Sistemas SÓLO SW Sistemas puramente software Utilizaban visualizadores vectoriales El 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 Evans and Sutherland SP1 (mediados de los años 70) http://www.referenceforbusiness.com/history2/59/Evans-Sutherland-Computer-Corporation.html 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. LA (PRE)HISTORIA DE LOS PROCESADORES GRÁFICOS (V) Tiempo Real Se suelen distinguir 5 generaciones en las GL-machines: No confundir generación con serie Primera Generación: Gráficos alámbricos No a l corr Nv as s esp idi eri ond a ó es en AT de I Vértices: Transfomación, Clipping y proyección Rasterización: Interpolación de colores (en lineas y puntos) Fragmentos: Se sobreescribe Época: entre 1982 y 1987 Sólo podía hacerse en estaciones de trabajo (workstations) muy potentes de la época Es la forma en la que en las presentaciones de SGI suelen explicar la evolución de los gráficos por ordenador 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 tetera podemos ver que los segmentos más alejados se atenuaban en su color, para que pareciera más lejano. (la tetera nos puede servir para apreciar los avances tecnológicos) LA (PRE)HISTORIA DE LOS PROCESADORES GRÁFICOS (V) Tiempo Real Se suelen distinguir 5 generaciones en las GL-machines: No confundir generación con serie Segunda Generación: Polígonos con colores sólidos sombreados Vértices: Cálculo de iluminación Rasterización: Interpolación de profundidad (triángulos) Fragmentos: Buffer de profundidad, color blending Época: 1987 - 1992 NOTAS: Sólidos / primitivas “rellenas” Hardware de rasterización y rellenado de polígonos Iluminación por vértice Sombreado Goraud (suave) Sólo estaciones de trabajo LA (PRE)HISTORIA DE LOS PROCESADORES GRÁFICOS (V) Tiempo Real Se suelen distinguir 5 generaciones en las GL-machines: No confundir generación con serie Tercera Generación: Mapeado de Texturas Vértices: Trasformación de las coordenadas de textura Rasterización: Interpolación de las coord. de textura Fragmentos: Evaluación de la textura y antialiasing Época: 1992-2000 NOTAS: Ya podemos aplicar texturas por fragmento !! LA (PRE)HISTORIA DE LOS PROCESADORES GRÁFICOS (V) Tiempo Real Se suelen distinguir 5 generaciones en las GL-machines: No confundir generación con serie Cuarta Generación: Programabilidad Sombreado (shading) programable Modelado Basado en imagen Convergencia de los gráficos y el procesado de 2001 Programabilidad señal en otras señales 2002 Punto Flotante Superficies curvas 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) Tiempo Real Se suelen distinguir 5 generaciones en las GL-machines: No confundir generación con serie Quinta Generación: Evaluación Global Ray tracing: visibilidad e integración Photon Mapping, True Shadows, Path Tracing... NOTAS: LA (PRE)HISTORIA DE LOS PROCESADORES GRÁFICOS (V) Tiempo Real Se suelen distinguir 5 generaciones en las GL-machines: No confundir generación con serie Quinta Generación: Evaluación Global 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 comprender las decisiones que se 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 Improvements Performance • Triangles/second (geometry) • Pixels/second (rasterization) Features • Hidden surface elimination, texture mapping, antialiasing … Quality • Bits of resolution, filtering … LA LÍNEA ENTRE TIEMPO REAL Y OFFLINE RENDERING... Pero queda mucho camino por recorrer... “Reality is 80 million polygons.” – Alvy Ray Smith, Pixar NOTAS: REPASO DEL CAUCE GRÁFICO Proceso de generación de imágenes mediante modelado geomético 1 ( ) Existen otras formas de generar imágenes fotorrealistas que se verán en la asignatura TAG3D NOTAS: PIPELINE ó CAUCE GRÁFICO (I) Vamos a estudiar los pasos del proceso de síntesis de de 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) Introducción Division Conceptual y Funcional Etapas: Aplicación Transformación Rasterizado Sombreado NOTAS: (3D Total) De la descripción de una escena 3D: polígonos que forman la superficie de los objetos, materiales, luces... A una representación 2D convincente desde un determinado punto de vista PIPELINE ó CAUCE GRÁFICO (I) Vamos a estudiar la serie de pasos del proceso de síntesis de de 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 Pero... al final esto se convierte ¿Qué hay si estamos en un juego) en imágenes y animaciones realistas (e interactivas en medio? Introducción Division Conceptual y Funcional Etapas: Aplicación Transformación Rasterizado Sombreado NOTAS: (3D Total) De la descripción de una escena 3D: polígonos que forman la superficie de los objetos, materiales, luces... A una representación 2D convincente desde un determinado punto de vista PIPELINE ó CAUCE GRÁFICO (II) El cauce gráfico es el conjunto de transformaciones y procesados de imagen que se realiza a los elementos que definen la escena hasta llegar a la imagen resultante final. Hoy día, el proceso de generación de imágenes sintéticas que sigue el pipeline o cauce gráfico es maduro y bien definido, y este estandar se ha reflejado en las principales APIs gráficas (como OpenGL) e influye fuertemente en las arquitecturas de Introducción las modernas tarjetas gráficas. Division Este cauce se divide en etapas de procesado, cada una de las Conceptual cuales toma como entrada la salida de la anterior, de ahí y Funcional Etapas: Aplicación Transformación Rasterizado Sombreado NOTAS: el símil con un cauce, ya que los datos (no las instrucciones) fluyen en su interior. (como trozos de tubería) etapa 3 etapa 1 etapa 2 PIPELINE ó CAUCE GRÁFICO (III) El nombre de pipeline viene de un concepto de arquitectura, ya 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 volvemos de viaje y tenemos que poner varias lavadoras: Introducción Division Conceptual y Funcional secar secar planchar planchar plegar lavar secar NOTAS: lavar secar plegar lavar planchar secar plegar lavar secar planchar plegar Hacer tres tandas de lavadoras es más rápido y aprovechamos mejor los recursos si lo divid ven e y organizamos en paralelo cerás Etapas: Aplicación Transformación Rasterizado Sombreado planchar plegar planchar plegar 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 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) libro de S.R.Buss Modelado libro de T. Akenine Introducción GPU Gems2 R. Fernando Division Conceptual y Funcional Etapas: Aplicación Transformación Rasterizado Sombreado NOTAS: Aplicación Aplicación Selección de vista División por w (perspectiva) Geometría Representación Rasterizado cada una de estas etapas es también un pipeline en sí misma Comandos Geometría Rasterización Texturas Fragmentos Visualización En esta parte de la asignatura vamos a profundizar y ver cómo se implementan en el hardware gráfico cada una de las etapas. Pero es indispensable una buena comprensión de las mismas, por lo que no dudéis en preguntar cualquier cosa en RA ó PGATR 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 Pipeline gráfico ultra-simplificado: Estado gráfico Aplicación Introducción Division Conceptual y Funcional Transformación Vértices 3D Rasterizado Triángulos proyectados Sombreado Fragmentos (pre-píxeles) Memoria de video (Texturas) Píxeles finales (color, profundidad) (vértices 2D) GPU Render a textura Etapas: Aplicación Transformación Rasterizado Sombreado NOTAS: entran vértices ordenados Tres etapas principales obtenemos píxeles Evidentemente todo puede hacerse por software en procesadores de PC tradicionales, pero es mucho menos eficiente ETAPAS del CAUCE GRÁFICO (II) ETAPA DE TRANSFORMACIÓN Transforma las coordenadas de los vértices de los objetos de su sistema local a su respectiva proyección 2D Espacio del Objeto Espacio del Mundo Espacio de la cámara Espacio Visualizable Espacio de la Ventana Introducción 3D Division Además se calcula la iluminación en cada vértice Conceptual y Funcional 2D Etapas: Aplicación Transformación Rasterizado Sombreado NOTAS: Imágenes tomadas del libro “The Cg Tutorial - The Definitive Guide To Programmable Real-Time Graphics” 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 Introducción Division Conceptual y Funcional Etapas: Aplicación Transformación Rasterizado Sombreado NOTAS: Imágenes tomadas del libro “The Cg Tutorial - The Definitive Guide To Programmable Real-Time Graphics” Iluminación por vértices 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 (potencial) (color, profundidad, pincel...) Introducción Interpola las cantidades calculadas en cada vértice Division a lo largo de los “píxeles” Conceptual y Funcional No es programable, por ahora... Etapas: Aplicación Transformación Rasterizado Sombreado Rasterizado Vértices Fragmentos NOTAS: Falta la etapa de geometría, pero eso lo veremos al hablar de la arquitectura unificada 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...) Introducción Es una tarea fácilmente paralelizable Division Ha de ser muy flexible: programable Conceptual Suele haber más pixeles y Funcional que vértices, y las Aplicación operaciones son más Transformación complejas Etapas: Rasterizado Sombreado NOTAS: 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... 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 no son necesarios de una etapa a la Introducción siguiente, y conviene eliminarlos tan pronto como sea posible para no aumentar el coste computacional por su procesado Division Conceptual y Funcional Así tendremos numerosos test entre etapas, para dejar pasar Etapas: sólo aquellos elementos que Aplicación nos interesen Transformación Rasterizado Sombreado NOTAS: test ARQUITECTURAS STREAMING (ó CIRCULANTES) DIFERENCIAS CON EL MODELO VON NEUMANN (1) En español se suele utilizar el término “circulante” en lugar de flujo, para distinguirlo de otras nociones de arquitectura NOTAS: INTRODUCCIÓN A pesar del vertiginoso aumento de rendimiento en las GPUs apenas cambiaron su diagrama de bloques general hasta la llegada de la arquitectura unificada (1) Refleja la buena cimentación de la arquitectura. La base es óptima en muchos aspectos y por eso también es escalable Práctica inexistencia de cuellos de botella en su interior (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 (1) 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 NOTAS: MODELO DE VON NEUMANN Tradicionalmente los PCs han seguido el modelo de Von Neumann en el que las instrucciones se almacenan como datos y sus operadores definen la forma en que se localizan dentro del HW Esto situa el cuello de botella del PC en el acceso a memoria, así las optimizaciones en la arquitectura se han concentrado en reducir la latencia del acceso individual 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 Neumann en el que las instrucciones se almacenan como datos y sus operadores definen la forma en que se localizan dentro del HW Esto situa el cuello de botella del PC en el acceso a memoria, así las optimizaciones en la arquitectura se han concentrado en reducir la latencia del acceso individual a los datos (pero no en maximizar su ancho de banda) Ejemplo del Itanium 2: Control, comunicaciones, caché... 6’5% Una docena de ALUs para aritmética entera un par de FPUs para coma flotante area del chip (podemos considerarlo proporcional a los transistores dedicados a cada tarea) NOTAS: NOTA: Esta comparación no es muy justa porque el 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) ¿DÓNDE ESTÁ EL TRUCO? (I) Los procesadores tradicionales (PCs) son casi todo memoria caché Pentium III 28,1 M Transistores Bueno en tareas de control Malo en procesado de grandes cantidades de datos GeForce 6800 222 M Transistores (384 M trts en GeForce 7900) Aunque existen cachés y juegan un 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 NOTAS: MODELO DE VON NEUMANN Tradicionalmente los PCs han seguido el modelo de Von Neumann en el que las instrucciones se almacenan como datos y sus operadores definen la forma en que se localizan dentro del HW Esto situa el cuello de botella del PC en el acceso a memoria, así las optimizaciones en la arquitectura se han concentrado en reducir la latencia del acceso individual a los datos (pero no en maximizar su ancho de banda) Las aplicaciones gráficas, a pesar de tener unos operadores muy sencillos son difíciles de programar en tiempo real debido al gran volumen de información que hay que procesar. En la última década este modelo se ha aferrado al paralelismo de datos para poder permanecer vigente en este contexto, mediante instrucciones SIMD como las orientadas a multimedia (MMX...) 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é desplazamos las instrucciones por el cauce segmentado del procesador y obligamos a que los datos vayan a su encuentro? Parece más lógico que los que fluyan por ese cauce sean los datos, que son la masa crítica del problema, y salir a la caza de los operadores (instrucciones) que son pocos y simples. (en el contexto de las aplicaciones gráficas) RU INT CCIO N DATOS ES RU INT CCIO Así le damos DATOS “la vuelta” DATOS DATOS OS DAT al embudo Colocando la parte más ancha en el lado de los datos y 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) RU INT CCI NOTAS: DAT OS ON ES N ES PROCESADORES DE STREAMS (I) Veamos más en detalle esta nueva forma de plantear el problema Antes: Proc. Tradicional Conjuntos de datos no conexos ni uniformes Complejos diagrama de control en función de los resultados que se van obteniendo Ahora: Modelo de Streams Streams (Flujos) Conjuntos de datos con una estructura bien definida Todos los datos streams Nombre explicativo Kernels Sus entradas/salidas son streams Toda operación sobre los streams se define/expresa como kernel 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) 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 stream kernel stream La comunicación es muy eficiente: Localidad entre el productor y el consumidor Patrón de acceso a memoria muy predecible: Minimizamos el tráfico de memoria NOTAS: (insistiremos y veremos en profundidad estos conceptos más adelante) Se optimiza para la producción de muchos elementos no la salida de uno solo Procesar muchos elementos a la vez “esconde” la latencia PROCESADORES DE STREAMS (III) EL PASADO: HARVEST Y PIXELFLOW Veamos unos ejemplos ilustrativos de arquitecturas streaming del mundo académico (donde más se ha investigado hasta la llegada de las GPUs) Harvest (IBM 7950) Primer precendente (años 50) Trataba grandes volumenes de datos encriptados como flujo, contaba con un coprocesador especializado para este tipo de operaciones http://en.wikipedia.org/wiki/Harvest_(computer) PixelPlanes (Universidad North Carolina) (años 80) El nombre refleja la forma en la que trabaja la arquitectura 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 Larrabee, que 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 úa n i t con En chip alcance rendimientos de 1 TeraFlop y se espera comercializar en 2009-2010. http://www.elpais.com/articulo/tecnologia/chips/Intel/lanzara/2010/llevaran/tecnologia/UPC/elpeputec/20070726elpcibtec_3/Tes PROCESADORES DE STREAMS (IV) EL PRESENTE: MERRIMAC Y CHEOPS Merrimac e Imagine (Stanford) Menos unidades de procesamiento que tareas Organización multiplexada en el tiempo Cada etapa es completamente programable Stanford Imagine Chip de 16x16mm (Texas Instruments) 21 millones de transistores y 288 Mhz Rendimiento global del sistema: · 11’8 GFLOPS en aritmetica de 32 bits · 23 GFLOPS en aritmetica de 16 bits procesador de streams de 32bits para procesado de señal, imagen y gráficos (2001) 16% bancos de registros anexos 26% ALUs interfaz de memoria, interfaz de red, enrutado de datos, unidad de control... NOTAS: Hubo 4 primeras generaciones de Pixel Planes 4ª--> 40.000 trainagulos/sg de la pga anterior 5ª + bus interconexión 640MB/s-->2 Millones triag/sg Todo desemboco en la aparición del PixelFlow en 1992 Imagine (0’18 micras y menos de 10 vatios de consumo ) PROCESADORES DE STREAMS (IV) EL PRESENTE: MERRIMAC Y CHEOPS Merrimac e Imagine (Stanford) Organización multiplexada en el tiempo Cada etapa es completamente programable Stanford Imagine procesador de streams de 32bits para procesado de señal, imagen y gráficos (2001) CPU SDRAM SDRAM SDRAM SDRAM CONTROLADOR CIRCULANTE (control del flujo de datos e intrucciones) interfaz con memoria principal Menos unidades de procesamiento que tareas 8 bloques aritméticos operando bajo paralelismo SIMD, donde dentro de cada uno de ellos hay 6 ALUs como procesador VLIW Ejecución del kernel Microcontrolador Banco de registros streaming (SRF) ALU Cluster ALU Cluster ALU Cluster De instrucciones Otros Clientes Streaming De datos De tareas Paralelismo: JERARQUÍA DE MEMORIA 2’1 Gbytes/sg. (tipo AGP) 25’6 Gbytes/sg. (inter-cluster) 435 Gbytes/sg. (intra-cluster) SIMD = Una sóla instrucción múltiples datos VLIW = Very Long Instruction Word NOTAS: En el dibujo se pueden ver los distintos anchos de banda y formas de paralelismo Es 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 multiplexada en el tiempo Cada etapa es completamente programable Es el núcleo del Stanford Streaming Supercomputer En el año 2003 comenzó una nueva arquitectura en la que se trata de explotar la escalabilidad Se trata de maximizar la localidad mediante una jerarquía de registros y reducir el ancho de banda necesario en un orden de magnitud (ó más) Chip de 124 mm (2004) a 1GHz Procesador MIPS64 128 GFLOPS 200 FPUs 1000 pin BGA Interfaz a 16 chips DRAM 20 GB/s Stanford Merrimac procesador de streams 64bits para computación científica (2004) NOTAS: PROCESADORES DE STREAMS (VI) EL PRESENTE: MERRIMAC Y CHEOPS Cheops (MIT) Se trata de una arquitectura de streaming modular y compacta para la adquisición, procesamiento y visualización de video digital En 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 streaming Además cuenta con un procesador tipo Von Neumann que controla el conjunto y se encarga de las operaciones de 32 bits El diseño modular favorece la escalabilidad del sistema, con tres tipos de módulos: procesamiento 8’5 GFLOPS (sostenido) entrada/memoria 12’8 GFLOPS (pico) salida Dos tipos de buses. memoria de píxeles (100 MB/s) y de datos y control (32 MB/s) El diseño está pensado de manera que es muy fácil reutilizar los Los tres tipos de modulos conectados por buses datos procesados Diagrama simplificado del proc. (sin tener que comenzar otro proceso de renderizado como en las GPUs actuales) NOTAS: Recuerda un poco al Cell que habréis visto con Marta http://web.media.mit.edu/~wad/cheops_CSVT/cheops.html 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 integra el procesador dentro del área de memoria para minimizar la latencia y aumentar el ancho de banda. Toda la memoria es un inmeso banco de registros Tiene importantes venjajas en consumo energético, disipación, coste y área de integración (NEC ha implementado algo muy parecido en la memoria eRAM de la XBoX 360) 3’2 GFLOPS en aritmética de 32 bits 13MB de memoria principal 200 Mhz 2 unidades de procesamiento vectorial 128 bits, que se pueden desdoblar en 4 de 64 bits u 8 de 32 bits 32 registros de 128 bits 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 Organización en tareas en paralelo Cada “celda” es prograble Los streams conectan “celdas” 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 azulejos en una pared, interconecatdos por una red con la misma topología 2D de baja 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 instrucción y optimizaciones streaming 4’8 GFLOPS pico 200 Mhz Ej. El proc. Cell tb. tiene más unidades de proc. que tareas IBM Cell 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ólicos 4’8 GFLOPs con 200 Mhz, no está mal PROCESADORES DE STREAMS (IX) La diferencia fundamental en nuestro caso es la especialización: La correspondencia entre las tareas de la síntesis de gráficos y los conjuntos de procesadores en el procesador de la GPU ATI Flipper 51 M trans. NOTAS: Organización de tareas en paralelo Una tarea a cada (conjunto de) unidades de procesamiento Las unidades están cableadas de forma fija Comunicación eficiente Arquitectura pensada “sólo” para gráficos Tenemos dos tipos de sub-procesadores especializados 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. DE GENERACIÓN DE IMG. (I) 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) 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. Nº 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Atributos de entrada para vértices Nombre Descripción Formato OPOS Posición (x,y,z,w) WGHT Peso (w,0,0,1) NRML Vector normal (x,y,z,1) COL0 Color primario (r,g,b,a) COL1 Color secundario (r,g,b,1) FOGC Coord. de niebla (f,0,0,1) DIFF Luz difusa SPEC Luz especular TEX0 Coord. Textura 0 (s,t,r,q) TEX1 Coord. Textura 1 (s,t,r,q) TEX2 Coord. Textura 2 (s,t,r,q) TEX3 Coord. Textura 3 (s,t,r,q) TEX4 Coord. Textura 4 (s,t,r,q) TEX5 Coord. Textura 5 (s,t,r,q) TEX6 Coord. Textura 6 (s,t,r,q) TEX7 Coord. Textura 7 (s,t,r,q) Atributos de salida para vértices Nombre Descripción Formato HPOS Posición (x,y,z,w) COL0 Color prim. frontal (r,g,b,a) COL1 Color sec. frontal (r,g,b,a) BFC0 Color prim. trasero (r,g,b,a) BFC1 Color sec. trasero (r,g,b,a) FOGC Coord. se niebla (f,*,*,*) A0 Dir. Indir. Paráms. (Sin usar) TEX0 Coord. Textura 0 (s,t,r,q) TEX1 Coord. Textura 1 (s,t,r,q) TEX2 Coord. Textura 2 (s,t,r,q) TEX3 Coord. Textura 3 (s,t,r,q) TEX4 Coord. Textura 4 (s,t,r,q) TEX5 Coord. Textura 5 (s,t,r,q) TEX6 Coord. Textura 6 (s,t,r,q) TEX7 Coord. Textura 7 (s,t,r,q) PIPELINE ó CAUCE GRÁFICO (I) Vamos a estudiar los pasos del proceso de síntesis de de 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) Introducción Division Conceptual y Funcional Etapas: Aplicación Transformación Rasterizado Sombreado (3D Total) De la descripción de una escena 3D: polígonos que forman la superficie de los objetos, materiales, luces... NOTAS: A una representación 2D convincente desde un determinado punto de vista Veamos un poco las APIs que vamos a utilizar 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 OpenGL y DirectX: Bajo nivel Es una especificación, no exactamente una API Hay implementaciones en muchos S.O. multiplataforma No tiene “cosas escondidas” De la mano de Silicon Graphics Ciertos estudios de software tienen clara preferencia Tiene versiones “light” para plataformas móviles SIGGRAPH ‘10 Presentación OpenGL 4.0 NOTAS: APIs/INTEFACES: DirectX Alto nivel Es practicamente una plataforma de desarrollo La API 3D es sólo una parte Sólo funciona en plataformas Microsoft (Windows, XBoX) Cerrado Puede cambiar mucho de una versión a otra Muy popular en la industría de los videojuegos Por ahora, tiene menos sobrecarga del” driver” que OpenGL a la hora de utilizar intensivamente las GPUs Muchos intereses económicos de por medio... Windows Vista Dx10 NOTAS: Pelea Shader models Venta de montones de tarjet. PROC. DE GENERACIÓN DE IMG. (II) AGRUPACIÓN DE VÉRTICES Con los vértices se componen líneas o triángulos (la primitiva básica) 2 vértices 3 vértices píxeles 1 línea 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. ETAPAS del CAUCE GRÁFICO (II) ETAPA DE TRANSFORMACIÓN Transforma las coordenadas de los vértices de los objetos de su sistema local a su respectiva proyección 2D Espacio Espacio Espacio Espacio Espacio del de la del de la Visualizable Ventana Mundo cámara Introducción Objeto 3D 2D Division Conceptual Además se calcula la iluminación en cada vértice y Funcional Etapas: Aplicación Transformación Rasterizado Sombreado Imágenes tomadas del libro “The Cg Tutorial - The Definitive Guide To Programmable Real-Time Graphics” tetera con pocos polígonos tetera con más polígonos NOTAS: Los 10 tipos de primitivas que se pueden especificar en OpenGL una vez definida la lista de vértices PROC. DE GENERACIÓN DE IMG. (II) AGRUPACIÓN DE VÉRTICES v0 v4 v2 v1 v3 v0 v6 v1 v5 v3 v0 v2 Triángulos independientes v4 v3 Puntos v0 v2 v5 v7 v2 Líneas independientes Bucle cerrado de líneas v2 v3 v4 Tira de lineas v2 v3 v6 v5 Tira de triángulos v3 v4 v4 v1 v7 v0 v5 v3 v6 Quads independientes v0 v2 v1 Abanico de triángulos (Triangle Fan) ETAPAS del CAUCE GRÁFICO (II) v2 v0 v4 v6 v3 v1 v7 v5 ETAPA DE TRANSFORMACIÓN Transforma las coordenadas de los vértices de los objetos de su sistema local a su respectiva proyección 2D Tira de Quads Espacio Espacio Espacio Espacio Espacio del de la del de la Visualizable Ventana Mundo cámara Introducción Objeto 3D 2D Division Conceptual Además se calcula la iluminación en cada vértice y Funcional Imágenes tomadas del libro “The Cg Tutorial - The Definitive Guide To Programmable Real-Time Graphics” 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. v3 v4 Etapas: v2 v0 v1 Polígono NOTAS: v5 v1 v3 v4 v1 Aplicación Transformación Rasterizado Sombreado v1 v2 v4 v5 v6 v4 v5 v7 v8 v6 v0 v0 v1 Los 10 tipos de primitivas que se pueden especificar en OpenGL una vez definida la lista de vértices PROC. DE GENERACIÓN DE IMG. (III) TRANSFORMACIÓN EN EL ESPACIO 3D Se aplican las matrices de rotación y traslación 3D, utilizando el punto de vista 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 esta etapa del renderizado. ETAPAS del CAUCE GRÁFICO (II) ETAPA DE TRANSFORMACIÓN Transforma las coordenadas de los vértices de los objetos de su sistema local a su respectiva proyección 2D Espacio Espacio Espacio Espacio Espacio del de la del de la Visualizable Ventana Mundo cámara Introducción Objeto 3D 2D Division Conceptual Además se calcula la iluminación en cada vértice y Funcional Traslación Etapas: Aplicación Transformación Rasterizado Sombreado NOTAS: Rotación Imágenes tomadas del libro “The Cg Tutorial - The Definitive Guide To Programmable Real-Time Graphics” PROC. DE GENERACIÓN DE IMG. (IV) ACOTACIÓN AL ÁREA VISIBLE EN PANTALLA Delimitación del espacio 2D visible en pantalla (clipping) y de la cara visible 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 aportar información gráfica a la escena y agilizar las etapas siguientes 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 no son necesarios de una etapa a la Introducción siguiente, y conviene eliminarlos tan pronto como sea posible Division para no aumentar el coste computacional por su procesado Conceptual y Funcional Así tendremos numerosos test entre etapas, para dejar pasar Etapas: Aplicación sólo aquellos elementos que nos interesen Transformación Rasterizado test Sombreado NOTAS: Puede apreciarse cómo se han eliminado las caras posteriores (que quedaban tapadas) en las teteras PROC. DE GENERACIÓN DE IMG. (V) 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) ETAPAS del CAUCE GRÁFICO (II) ETAPA DE TRANSFORMACIÓN Transforma las coordenadas de los vértices de los objetos de su sistema local a su respectiva proyección 2D Espacio Espacio Espacio Espacio Espacio del de la del de la Visualizable Ventana Mundo cámara Introducción Objeto 3D 2D Division Conceptual Además se calcula la iluminación en cada vértice y Funcional Etapas: Aplicación Transformación Rasterizado Sombreado NOTAS: Imágenes tomadas del libro “The Cg Tutorial - The Definitive Guide To Programmable Real-Time Graphics” PROC. DE GENERACIÓN DE IMG. (VI) CREACCIÓN DE FRAGMENTOS DE LA IMAGEN 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 se interpolan las áreas de los polígonos que contienen en memoria Tenemos dos áreas de memoria en las que se realiza esta transformación: 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 Los bufferes y sus implicaciones en la arquitectura se verán en detalle en el tema de mem.vid. 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 (potencial) (color, profundidad, pincel...) No es programable, Introducción por ahora... Division Interpola las cantidades calculadas en cada vértice Conceptuala lo largo de los “píxeles” y Funcional Etapas: Aplicación Transformación Rasterizado Sombreado Rasterizado Vértices NOTAS: Fragmentos 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. PROC. DE GENERACIÓN DE IMG. (VII) PEGADO DE TEXTURAS 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 Rendering Avanzado y en las prácticas de esta asignatura desde el punto de vista de síntesis 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...) Introducción Ya no tenemos el límite Es una tarea fácilmente paralelizable en el número de fuentes Division de luz, ni ningún otro... Conceptual Ha de ser muy flexible: programable y Funcional Suele haber más pixeles Etapas: que vértices, y las Aplicación operaciones son más Transformación complejas Mayor número Rasterizado de procesadores de fragmentos Sombreado NOTAS: PROC. DE GENERACIÓN DE IMG. (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 utilizan operadores de máscara (AND & OR), filtros... Este mezclado nos permite reutilizar el renderizado parcial de la escena en los siguientes frames de una animación o juego. La GPU realiza estas operaciones de forma ordenada y sistemática, como si 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. se encontrara en un bucle infinito De 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: ETAPAS del CAUCE GRÁFICO Flujo de Listas de “vértices” puntos 3D Flujo de fragmentos sin procesar Texturas Programa de vértices Rasterización Programa de fragmentos Flujo de vértices transformados Flujo de triángulos en el espacio de pantalla Flujo de triángulos Clip/Cull/ Viewport Composición Flujo de fragmentos Stream de píxeles Píxeles de colores Imagen NOTAS: Ensamblado de triángulos Framebuffer ¿CÓMO ENCAJA EL CAUCE EN LA GPU? Pasos del Flujo (simplificado) Arquitectura Tarj. Gráf. Aplicación Aplicación Comandos Proc. Vértices Transformación Proc. Teselación Geometría Proc. Geometría Rasterización Rasterización Texturas Sombreado Fragmentos Visualización NOTAS: Proc. de Fragmentos Visualización SHADERS: RECONFIGURACIÓN (SOMBREADORES) DEL HW GRÁFICO (I) Las etapas del cauce de segmentación fueron evolucionando durante la 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. Estas partes programables se implementan mediante un firmware de forma similar a una unidad de control microprogramada de los años 80 (familia 80x86 de Intel) o a una CPU adaptativa de finales de los 90 (procesadores Crusoe y Caruso de Transmeta). 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) Llamamos shaders ó sombreadores a los programas que se “microcodifican” en los procesadores programables de la GPU El nombre viene de que este programa “oscurece” la función estándar que tiene asignada la segmentación estandar en esa etapa, anulándola para reemplazarla por otra nueva que se coloca en su lugar. NOTAS: SHADERS: RECONFIGURACIÓN (SOMBREADORES) DEL HW GRÁFICO (II) Aplicación Comandos Geometría Rasterización Texturas Fragmentos Visualización NOTAS: Evaluación Transformación Iluminación Coord. Texturas Clipping Shaders para Vértices, Teselación y Geometría Direc. texturas Filtro texturas Regs. combiners Shader para Fragmentos Niebla Mezclado Test Alpha, S y Z Operadores lógicos Niebla Mezclado Test Alpha, S y Z Operadores lógicos Evaluación Clipping SHADERS: RECONFIGURACIÓN (SOMBREADORES) DEL HW GRÁFICO (III) 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: ensamblador optimizado para el perfil de la GPU del 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 LECTURA RECOMENDADA No es un trabajo, pero conviene leerlo para reforzar los conceptos que hemos visto hoy y su relación con lo que habéis estudiando en Informática Gráfica El nivel de este paper es sencillo e introductorio http://graphics.stanford.edu/~liyiwei/courses/GPU/ NOTAS: ACTIVIDAD SEMANAL No es un trabajo, pero conviene verlo para reforzar los conceptos que hemos visto hoy y su relación con lo que habeis estudiando en Informática Gráfica Bienvenida e Introducción al Curso de GPGPU del SIGGRAPH’06 por Marc Olano El nivel de este vídeo es sencillo e introductorio Campus Virtual Aquellos que no tengáis todavía acceso, podéis descargarlo de la consigna: PGATR 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 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 capacidad de cálculo y programación de juegos. Implementan en su hardware el cauce gráfico Su orientación a datos y especialización hace que tengan una arquitectura muy especial 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 Tienen un rápido crecimiento asegurado, aunque se trata de un mundo en vertiginosa evolución, de ahí la necesidad de estudiar los procesadores con un espíritu crítico que nos permita adaptarnos y comprender los cambios NOTAS: