
|
Información |
Normativa |
Temario |
Materiales |
Blog |
|
Enunciados |
||||
|
|
|
|||
|
|
|
|
||
|
|
|
|
|
La clase dará comienzo el 2 de Febrero
RESUMEN:
- Asignatura: Optativa
- Nº de créditos: 5
- Cuatrimestre: Segundo
- Modalidad de Impartición: Presencial
- Departamento: DATCCCIA (Departamento de arquitectura y tecnología de computadores, ciencias de la computación e Inteligencia artificial)
- Aula: 201 Aulario III
- Conocimientos recomendados: haber cursado Informática Gráfica y Arquitecturas para Gráficos y Multimedia, nociones de C y OpenGL .
- Blog de la asignatura (Noticias): Zest for Graphics
- Web: http://www.dac.escet.urjc.es/rvmaster/asignaturas/GPGPU/
- Calendario: Google Calendar
- Guía docente: enlace
PRESENTACIÓN:
Los procesadores gráficos modernos, que podemos encontrar en las tarjetas gráficas para PC y en las consolas, tienen arquitecturas muy sofisticadas que explotan las ideas de paralelismo de una forma innovadora y poco convencional. Con múltiples procesadores especializados y un extraordinario ancho de banda son capaces de mantener velocidades de cálculo sostenidas al menos un orden de magnitud por encima de las CPUs más avanzadas. Las prestaciones y funcionalidad de las GPUs crecen a un ritmo superior al marcado por el incremento de la densidad de integración de la ley de Moore.
Aunque su aplicación principal es la representación tridimensional de escenas en tiempo real y este incremento les ayuda a dar vida a entornos cada vez más realistas y complejos, sus capacidades los hacen muy atractivos en otros campos como potentes coprocesadores de bajo coste (cálculo científico, imagen médica, visión artificial…).
Para poder obtener el mejor rendimiento en nuestras aplicaciones (gráficas) es necesario conocer en cierto detalle la arquitectura de las plataformas en las que se vayan a ejecutar. Los profesionales más valorados (en parte por su escasez) son aquellos que saben conjugar la facilidad de análisis y desarrollo con el buen uso de los recursos, ya que esta suele ser la llave para un producto de éxito.
En esta asignatura se estudiará la arquitectura de los chips gráficos y el resto de elementos de la tarjeta gráfica, su evolución como cauce clásico y las nuevas tendencias en la arquitectura unificada. El planteamiento es eminentemente práctico, por lo que las clases teóricas, en las que se explicarán los fundamentos hardware que sirven de pilares a esta tecnología, se complementan con multitud de ejercicios prácticos en el laboratorio, en los que se ilustrará cómo se programan estos chips para sacar partido de toda su capacidad potencial.
Además, los alumnos tendrán la oportunidad de poner en práctica sus conocimientos y adquirir un primer contacto en el campo de la investigación mediante la realización de un proyecto aplicados con un fuerte carácter en arquitectura.
El mundo de tarjetas gráficas está en constante cambio y evolución, por ello en la asignatura se pretende dar una visión práctica, además de estimular el espíritu crítico de los alumnos, que tendrán que seguir al día en estos tema durante su carrera profesional.
Se ha procurado que el material y su presentación sean adecuados para personas con una procedencia multidisciplinar, si bien el nivel exigido corresponde a una asignatura de postgrado de Informática que sigue el planteamiento del EEES.
Se recomienda haber cursado Informática Gráfica y Arquitecturas para Gráficos y Multimedia, así como tener soltura en lenguaje C, OpenGL y matemáticas básicas (Álgebra Lineal…).
- Oscar David Robles Sánchez
- Despacho: 0049 (planta baja) Extensión del Rectorado
- Dirección de contacto: oscardavid.robles |arroba| urjc.es
- Horario de tutorias: por determinar
- David Miraut Andrés
- Despacho: 2011A (segunda planta) Extensión del Rectorado
- Dirección de contacto: david.miraut |arroba| urjc.es
- Horario de tutorias: Lunes (19h-20h), Jueves (19h-21h) Viernes (17h-19h previa cita)
En la primera parte de la asignatura se profundizará en la implementación hardware del cauce gráfico clásico y en su programación desde el punto de vista gráfico.
En la segunda parte de la asignatura se aprenderá a reestructurar el diseño de los algoritmos y aplicaciones para que aprovechen las ventajas de los multiprocesadores. Veremos las causas que han dado origen a la arquitectura unificada y se estudiara a muy bajo nivel para poder explotar su potencial en aplicaciones GPGPU.
Para completar la asignatura, los alumnos deberán realizar un proyecto de carácter aplicado en los que pongan en práctica lo aprendido de estas arquitecturas.
- Clases teóricas
-
Las clases presenciales no son obligatorias, si bien se recomienda la asistencia encarecidamente, ya que los temas tratados en la asignatura son bastante avanzados y sólo una pequeña fracción de lo explicado en clase se recoge en las transparencias.
-
Es posible asistir a las clases teóricas de la asignatura en calidad de lector aunque se haya convalidado o no se curse la asignatura siempre que se esté matriculado del Máster Oficial de Informática Gráfica, Juegos y Realidad Virtual ó se estén cursando asignaturas afines en los másteres que permiten doble y triple titulación con éste. También es posible visitar el laboratorio en el horario en el que se imparten la clases prácticas aunque sin hacer uso de los recursos del laboratorio.
-
Aquellas charlas y conferencias que se consideren de gran interés podrán ser objeto de preguntas en el examen teórico y fuente de ideas para los proyectos. Como comprendemos que no todos los alumnos de la asignatura podrán asistir a las mismas, se habilitarán los recursos necesarios para registrarlas y que los alumnos las puedan ver de forma diferida cuando les sea más cómodo.
-
- Laboratorios
- No se guardarán las notas de prácticas de un año para otro.
-
El criterio más importante es la funcionalidad: un programa que funciona siempre tiene más posibilidades de llevarse una buena puntuación; no se valorarán aquellos programas que no funcionen. Una práctica o proyecto modesto será evaluada mucho más favorablemente que un "proyecto" ambicioso que sólo da core-dumps. El siguientes criterios que se tendrán en cuenta (y que hay que cuidar al realizar las prácticas) son:
- La manera de resolver el problema con el programa
- Estructuras de datos y diseño de los algoritmos
- Claridad y documentación en el código
- Eficiencia y elegancia en la implementación.
-
¡Por favor, no hagáis trampas! Se procura alentar el diálogo y el trabajo en equipo, pero por favor trabajad de forma independiente (a menos que el trabajo sea en grupos). Trabajos muy similares serán considerados como copias, a menos que la naturaleza lo pedido sea tan restrictiva que justifique las similitudes. Y una copia implica el suspenso automático. Simplemente piénsalo de esta manera: hacer trampas dificulta el aprendizaje y la diversión de conseguir hacerlo.
Es vuestra responsabilidad proteger vuestro trabajo y aseguraros que no se convierte en el de otro.
-
-
Si se utiliza (o mejora) código fuente u otro material obtenido a través de internet, la biblioteca... debe darse el crédito a los autores y pedir permiso de ser necesario (si tiene una licencia restrictiva). Tomar código de un libro o de internet sin tener en cuenta estas consideraciones será considerado copia.
-
Está terminantemente prohibido la práctica de técnicas de overclocking en las tarjetas gráficas del laboratorio, así como desbloquear los procesadores de vértices y fragmentos de los chips gráficos. Este tipo de acciones pueden dañar físicamente el equipo del laboratorio y los alumnos responsables serán amonestados severamente.
-
El laboratorio estará abierto y accesible en las horas de tutoria grupal para que todos los alumnos puedan trabajar y preguntar dudas
-
Los monitores de laboratorio tendrán acceso a las instalaciones y enunciados de forma preferente, a cambio de ayudar un poco a sus compañeros durante los periodos en los que esté abierto el laboratorio.
-
- Contenidos del examen
-
En el examen se evaluarán lo explicado en clase de forma teórica, los conocimientos adquiridos en la realización de los ejercicios prácticos, así como lo aprendido a través de las actividades opcionales (lecturas, videos y ejercicios complementarios)
-
El conjunto de ejercicios prácticos se irá anunciando a medida que avance la asignatura en el segundo cuatrimestre. La tutoría grupal tendrá lugar los jueves en el laboratorio 108 del Aulario I los jueves de 19h a 21h.
El listado siguiente se detalla sólo a título orientativo (los ejercicios pueden cambiar en función del ritmo de la clase y sus intereses):
- Práctica 0: Lectura del manual de nVIDIA de Cg 2.0
- Esta práctica implica sólo la lectura del manual, por lo que no tendrá lugar en el laboratorioLectura del capítulo ”Introduction to Cg language” y “Cg Standard Library Functions” del CgToolkit User’s Manual de nVIDIA, esto es, sólo las 42 primeras páginas del manual.
El manual es muy extenso, y el paquete de desarrollo de nVIDIA viene acompañado de una documentación muy detallada, pero para las prácticas iniciales es suficiente con leer estos dos capítulos.
- Practica 1: Programación clásica gráfica en las distintas etapas de la GPU [PDF]
- Practica 2: Programación clásica gráfica: Iluminación [PDF]
- Practica 3: Efectos sencillos en la GPU – Mapas de bultos [PDF] [código en C y Cg]
- Practica 4: GPGPU Clásica – El juego de la vida [PDF]
- Practica 5: Análisis de rendimiento e Investigación de características no documentadas en la GPU
- Práctica 6: Primeros pasos en CUDA (Hola Mundo) [paquete]
- Práctica 7: Multiplicación de matrices y reducción básica en CUDA[practica7_reduccion.rar] [practica7_mult_matrices.rar] [PG_practica07.pdf]
- Práctica 8: Multiplicación eficiente de matrices en CUDA [enunciado][multiplicacion_matrices_a_trozos.rar]
- Práctica 9: Convolución eficiente
- Práctica 10: Repaso y dudas sobre multiplicación de matrices dispersas
-
Cada grupo (pareja) tendrá que realizar un proyecto fuertemente relacionado con la arquitectura de los procesadores de las tarjetas gráficas
-
Este año se propone un proyecto genérico para todos los grupos, relacionado con la multiplicación eficiente de matrices dispersas en CUDA.
-
También es posible proponer otros proyectos que tengan una dificultad y relación con la asignatura equivalentes, tanto de carácter gráfico como de computación de altas prestaciones.
-
Para ello habrá de realizarse un anteproyecto especial
-
-
Para más detalles, véase la sección correspondiente en las transparencias de presentación de la asignatura
ANTEPROYECTO
El anteproyecto está concebido como una primera toma de contacto con el futuro proyecto de la asignatura, de manera que la curva de esfuerzo en su realización sea más suave y -sobretodo- que empecéis a trabajar en el tema elegido con suficiente margen para que os de tiempo.
Se propone un proyecto por defecto que está centrado en la multiplicación de matrices dispersas en CUDA, pero es posible realizar un proyecto alternativo siempre que tenga suficiente relación con la asignatura (y, por tanto, con la arquitectura de procesadores gráficos).
Según la normativa que se expuso el primer día de clase, los proyectos y anteproyectos se pueden realizar por parejas, su evaluzación tiene una contribución significativa en la nota final y son obligatorios.
Se ha eliminado el ejercicio práctico 5 (que era opcional) para hacer hueco en las tutorias grupales y que podáis enfocaros en la redacción del anteproyecto y el código que se ha de presentar.
Anteproyecto de multiplicación de matrices dispersas
Cada vez en más aplicaciones es fundamental llevar a cabo cálculos eficientes que implican la resolución de sistemas lineales y matrices. En aquellos sistemas en la inmensa mayoría de los elementos de las matrices son no-nulos utilizamos rutinas para matrices densas de las librerías BLAS y LAPACK (ó sus equivalententes en CUDA: CUBLAS -Compute Unified Basic Linear Algebra Subprograms- y CUFFT).En la asignatura utilizaremos el ejemplo de la multiplicación de matrices densas para ilustrar los conceptos de paralelismo y optimización en CUDA. A menudo, cuando se consideran modelos de sistemas físicos, e incluso en el procesado de señal de imágenes naturales es necesario lidiar con matrices de grandes dimensiones, afortunadamente suelen ser dispersas. Su tratamiento, dadas sus características, es notablemente diferente al de las matrices densas cuando nos interesa conseguir un mejor rendimiento.
Una matriz se considera dispersa [http://en.wikipedia.org/wiki/Sparse_matrix], si muchos de sus elementos son cero. No existe una regla o fórmula específica para determinar si una matriz es dispersa o no, es un concepto intuitivo.
Por ejemplo, un sistema de ecuaciones definido sobre una malla de triángulos puede formar una matriz con un millón de filas y de columnas, en las que apenas 7 celdas por fila son no nulas.
Este tipo de matrices dispersas requieren rutinas muy diferentes para poder ser calculadas con cierta eficiencia (en otro caso tendríamos a las FPUs calculando valores nulos casi contínuamente).
Las representaciones dispersas representan únicamente las celdas no nulas de la matriz. La representación más simple –generalmente conocida como formato de coordenadas- consiste en utilizar una lista […,(i,j,aij),…] donde cada elemento es un vector de 3 elementos que define una entrada no nula en la matriz. Por supuesto, existe una gran variedad de formatos que comprimen y aprovechan mucho mejor la información. En los enlaces siguiente http://www.netlib.org/linalg/html_templates/node90.html y http://www.cs.utk.edu/~dongarra/etemplates/node372.html podéis encontrar un resumen de los formatos más comunes. A la hora de diseñar el kernel de multiplicación es muy importante elegir adecuadamente el formato a utilizar.
Objetivo
En este anteproyecto se explorará la problemática específica de las matrices dispersas de grandes dimensiones en la operación de multiplicación, para ello se realizará un programa (preferiblemente en lenguaje C) que lleve a cabo estos cálculos en la CPU. Este código podrá ser aprovechado mas adelante para hacer cálculos con matrices más sofisticados en otras asignaturas del Máster.De entre todos los formatos existentes recomendamos el uso de CRS (Compressed Row Storage) en el anteproyecto, y las matrices de prueba se facilitan en este formato; aunque es posible elegir otro.
Si los alumnos tienen una base en programación multicore se considerará como un extra el aplicar estos mecanismos para eparallelizar el código en la GPU (MPI, OpenMP, OpenCL, hebras...)
Trabajo a presentar
- En esta práctica habrá que entregar una memoria escrita en la que se describa la problemática y la forma en la que se ha diseñado el código para CPU
- La extensión de la memoria debería estar entre las 8 y 12 páginas
- Es necesario incluir el código fuente o, al menos, indicar las modificaciones realizadas sobre el código existente.
- Será absolutamente obligatorio comentar los resultados obtenidos.
Recomendaciones
En principio, la práctica se puede hacer en parejas, si alguien no encuentra pareja o, por problemas de horario tiene complicado el poder compaginarlo con el trabajo, también es posible hacerla de forma individual, esta práctica es sencilla y no debería suponer una dificultad añadida el no tener compañero/a para realizarla.Puede ser útil consultar algún libro de Algebra Lineal, como por ejemplo:
- Matrix computations. Gene Golub and Charles Van Loan.
- Iterative methods for sparse linear systems. Yousef Saad. http://www-users.cs.umn.edu/~saad/books.html
Plazo de entrega
Deadline: por determinarDatos de prueba:
Datos de entrada
Los ficheros de entrada que se proporcionan son ficheros de texto plano en ASCII con el formato Compressed Row Storage. Las matrices son de una amplia variedad de tipos: cuadradas, rectangulares, con tamaños que pueden o no ser potencias de 2, grandes,medianas, pequeñas... Se pueden escribir distintos tipos de subrutinas para optimizar casos especiales de estas matrices (en función de la dimensión).Los ficheros de entrada tienen 4 líneas:
- La primera tiene el número de filas y columnas
- La segunda los valores no nulos de la matriz
- La tercera el número de la columna de cada elemento
- La cuarta el número de la fila de cada elemento
Se ha procurado que los ficheros de entrada no tengan ambigüedades debidas a filas con sólo ceros y se ha recortado la precisión de las matrices para que los resultados del futuro proyecto en GPU sean comparables con los de este anteproyecto.
Cada ejemplo en el conjunto de datos tiene 3 ficheros:
- "A.crs," "B.crs" y "AB.crs" en el caso de multiplicaciones matriz-matriz
- "A.crs," "x.crs" y "Ax.crs" en el caso de multiplicaciones matriz-vector
Los ficheros son:
- square.tar.gz (matrices cuadradas con dimensiones que son potencia de 2)
- rectangle.tar.gz (matrices rectangulares con dimensiones distintas a potencia de 2)
- vector.tar.gz (matriz cuadrada por vector columna)
En la evaluación se utilizarán matrices mucho más grandes que las que se adjuntan como ejemplo.
Ficheros de salida
Aunque se utilice otro formato de entrada, la salida debe darse en el formato CRS descrito en la sección anterior.Anteproyecto "alternativo"
Dado que elplanteamiento de esta asignatura da pie a que los alumnos sean creativos, es posible elegir y/o proponer un proyecto diferente al propuesto por defecto, siempre que tenga relación suficiente con las arquitecturas vistas en clase. En este segundo caso, el anteproyecto tiene una función especial además de la mencionada anteriormente: que los profesores os podamos orientar y establecer unos criterios mínimos y máximos de exigencia en la realización del proyecto (no sería la primera vez que un grupo trata de abordar un proyecto demasiado ambicioso)Ejemplos de posibles proyectos:
- Renderizado de Pelo
- Shaders de Geometría
- Cluster de GPUs en el laboratorio
- Efectos gráficos
- Traza de rayos en CUDA
- etc...
En cuanto a los posibles efectos gráficos podéis consultar en los libros de las series GPU Gems, shaderX... para sacar ideas.
Informe
En este caso el anteproyecto ha de presentarse como un informe en el que se indiquen claramente:- una introducción en la que nos expliqueís la motivación por la cual se ha elegido el tema y porqué lo veis interesante
- los problemas potenciales a los que os vais a enfrentar al escribir / modificar el código en la realización del proyecto
- cómo los habéis identificado
- el desglose de las tareas previstas a realizar
- las referencias que se han consultado
Plazo de entrega
Deadline: por determinarSi el anteproyecto alternativo entregado no cumple ciertos mínimos será necesario rehacerlo o bien presentar lo exigido en el anteproyecto por defecto.
- Trasparencias primer bloque (cauce clásico)
- Trasparencias segundo bloque (arquitectura unificada)
- Tema 5: Origen e introducción a CUDA [PDF]
- Tema 6: Conceptos Básicos de Paralelismo
-
Tema 7: La doble personalidad de la GPU: CUDA modelo de programación y jerarquía de memoria [PDF]
- Tema 8: Arquitectura a bajo nivel de la serie 8 y 9 [PDF]
- Tema 9: Optimizaciones en CUDA y Máquina Virtual PTX [PDF]
- Tema 10: Arquitectura Unificada en ATI-AMD y OpenCL [PDF]
- Tema 11: Larrabee y many-cores [PDF]
-
Uno al final del cuatrimestre acerca de los contenidos de la parte teórica de la asignatura y los conceptos que se han debido reforzar a través de los ejercicios prácticos.
- Procesadores Gráficos. Manuel Ujaldón. Ciencia 3
- GPU Gems 1. Radima Fernando. Addison Wesley (versión online gratuita)
- GPU Gems 2. Matt Pharr. Addison Wesley (versión online gratuita)
- GPU Gems 3. Hubert Nguyen. Addison Wesley (versión online gratuita)
-
The Cg Tutorial: The Definitive Guide to Programmable Real-Time Graphics. R. Fernando and M. Kilgard. Addison-Wesley, 2003
- Stream Processor Architecture Scott Rixner Springer
- OpenGL Shading Language (2nd Edition) Randi J. RostAddison-Wesley
-
Advanced Lighting and materials with Shaders Kelly Dempski y Emmanuel Viale Wordware Publising, Inc.
- Manuales de nVIDIA
- Real Time Rendering. Tomas Akenine-Möller. 2nd Edition. A.K. Peters
-
3D computer graphics: a mathematical introduction with OpenGL Buss, S.R. Cambridge U. Press
- Interactive computer graphics: A top-down approach with OpenGL. Angel, E. Addison Wesley
-
GPU Gems, edited by Randima Fernando, GPU Gems 2, edited by Matthew Pharr, and GPU Gems 3, edited by Hubert Nguyen, Addison-Wesley, 2004, 2005, 2007. Fine edited collections of articles on interactive graphics in all-color books. These books were edited by NVIDIA employees, so there is a high level of NVIDIA participation. See the respective websites for the first, second, and third books for sample articles and more information.
-
ShaderX6, ShaderX5, ShaderX4, and ShaderX3, (and out of print: ShaderX2: Introductions and Tutorials, ShaderX2: Tips and Tricks). edited by Wolfgang Engel et al. These books are also edited collections of articles dealing with new graphics techniques that use vertex and pixel shaders. Some are nuts and bolts practical, others are about new techniques in development. See the ShaderX6, ShaderX5, ShaderX4, ShaderX3, ShaderX2, and ShaderX websites for more information, samples, etc.
-
Game Programming Gems, Game Programming Gems 2, and Game Programming Gems 3 by Mark DeLoura (Editor), Charles River Media, 2000, 2001, 2002. A wide range of Graphics Gems-like articles (with which it is not affiliated), it has many articles on subjects relevant to real-time rendering. There are tidbits on intersection calculations, collision detection, LOD and progressive meshes, texture mapping effects, sprite effects, shadows, vertex and pixel shader tricks, and much more. There is also material on modelling, skinning, and animation. About a quarter or more of each book is on artificial intelligence and other topics, so the focus is not entirely on computer graphics.
-
Graphics Gems series, Academic Press. Old, but with useful algorithms. A series of 5 books with a wide range of algorithms for all sorts of areas of computer graphics; visit the web site for a listing of articles and for the latest code.
Los detalles de la evaluación pueden consultarse en las transparencias de la presentación de la asignatura.
- Lectura semana 2: GPU Gems 2 capítulos 29 y 30
-
Lectura semana 3: GPU Gems 2 capítulo 33 y What Every Programmer Should Know About Memory
- Lectura semana 4: GPU Gems 2 capítulo 31
- Lectura semana 5: Prefetching in a cache texture Architecture
- Lectura semana 6: GPGPU Performace Tuning – An illustrated example
- Lectura semana 7: Manual de Programación de CUDA
- Siguientes lecturas por determinar
Las prácticas y proyectos de este curso de Procesadores Gráficos se basarán en OpenGL, la API gráfica de referencia en la industria, y los lenguaje C, Cg y CUDA. Aunque es posible realizar todo lo que se propone con otras librerías (como DirectX) no lo recomendamos por las siguientes razones:
· No tenemos a nuestra disposición software base en DirectX para hacerlas, con lo que tendrían que realizarse desde cero.
· No hay apenas proyectos de software libre con los que ilustrar los conceptos que deseamos resaltar en esta asignatura.
· Es un conjunto de librerías de muy alto nivel, bajar a la “comunicación con el HW” implica un dominio de DirectX que nos desenfocaría del auténtico objetivo de esta asignatura.
· DirectX se enseña en otras asignaturas (como Tecnologías de Juegos)
· Además de didáctico, OpenGL mola
Aquellos alumnos que no estén familiarizados con OpenGL deberían echar un vistazo a los tutoriales de producciones NeHE, en unas semanas –en función del nivel general de la clase- se hará una jornada de repaso de OpenGL a bajo nivel.
El nuevo entorno de programación de nVIDIA y las herramientas de soporte a CUDA pueden ser un interesante punto de partida para medidas de rendimiento (benchmarcks) y proyectos. Así como el sistema que propone ATI-AMD: Close To Metal (requiere registro) y AMD Stream (que estará basado en OpenCL y todavá no tiene soporte en forma de drivers)
Recursos específicos que vais a necesitar para realizar prácticas y proyectos:
· Visual Studio C++
o La Universidad Rey Juan Carlos tiene un acuerdo con Microsoft por el que tenemos una licencia de Campus
· DirectX SDK
o Descarga la versión de Noviembre 2007
· nVIDIA SDK
· Cg Toolkit 2.0
o Descarga
o Manual de Cg (versión 1.5, un poco obsoleto, pero nos vale)
· CUDA 2.3
o Descarga el entorno y el propio sistema de desarrollo de CUDA
· El OpenGL Utility Toolkit: GLUT
Este conjunto de utilidades nos permite realizar tareas que conciernen al sistema operativo, y es necesario para los paquetes mencionados a continuación.
o Descarga la versión de Windows
· Ejemplos del libro Rojo de OpenGL (código en GLSL)
· BrookGPU
Brook para GPUs es un compilador y un sistema runtime para el lenguaje de programación de arquitecturas de streaming que está en beta abierta (y poco abandonado con la futura aparición de AMD Stream)
· GPUBench
GPUBench es un sistema de análisis y medida de prestaciones (benchmarking) orientado a los procesadores gráficos programables de las tarjetas gráficas, está particularmente enfocado a las áreas de mayor interés en GPGPU. Es un proyecto de código libre de la Universidad de Stanford.
· GfxBench
GfxBench es bastante más antiguo, de hecho fue el proyecto que más adelante daría lugar a GPUBench, y fue escrito por Ian Buck. Utiliza OpenGL y GLUT para medir la tasa de relleno y tasa de triángulos de un sisteam gráfico.
o GfxBench.zip (Windows)
o GfxBench.tar.gz (Unix / Linux)
· GLTrace and GLSim
o GLSim es una versión instrumentada de OpenGL. Fue escrita por Ian Buack y Kekoa Proudfoot para que los estudiantes de Stanford pudieran estudiar más profundamente el cauce gráfico en OpenGL.
o GLTrace es un paquete, de Kekoa Proudfoot que permite guardar y repasar trazas de llamadas a OpenGL.
o Página del proyecto desde la que se pueden descargar.
· Mesa
Otro punto inicial para los proyectos en los que se hagan modificaciones al cauce gráfico tradicional podría ser la librería Mesa, proyecto de software libre que lidera Brian Paul (de hecho es la implementación de OpenGL más antigua y asentada).
· Chromium
Chromium es un excelente entorno de trababjo para renderizado en clusters de estaciones de trabajo que puede server de inspiración para algunos proyectos.
· NVPerfHUD
Es una herramienta imprescindible (y gratuita) de nVIDIA, que ayuda a encontrar toda clase de cuellos de botella mediante una interfaz que se adapta sobre cualquiera aplicación Direct3D. Hace estadísticas y muestra gráficas para poder monitorizar el progreso y carga del sistema gráfico en tiempo real.
· GLEW (GL extension Wrangler)
· Es un buen recurso cuando utilizamos extensions de openGL en Windows
· Qsilver, a graphics hardware simulation framework
· Qsilver, fue publicado en un artículo de la conferencia Graphics Hardware de 2004 (SIGGRAPH), como propuesta de un “entorno de trabajo y simulación flexible para arquitecturas gráficas”.
o Para su descarga es necesario rellenar previamente el siguiente formulario.
· gDEBugger, an OpenGL debugger
gDEBugger es un debugger interactive para OpenGL, que te muestra todo tipo de detalles del estado de OpenGL, la pila de llamadas y la relación con el código fuente.
o Aunque es comercial, tiene una licencia gratuita para los estudiantes, y el área de Arquitectura y Tecnología de Computadores de la Escuela de Informática de la URJC ha establecido un acuerdo con Gremedy para que los alumnos puedan utilizar este software en la asignatura de Procesadores Gráficos. Hablad con David Miraut si estais interesados en este software.
· glIntercept
· glIntercept vuelca todos los shaders que se mandan a la tarjeta gráfica en forma de ficheros de texto, así como la información de todas las texturas (en ficheros con un formato gráfico) y da y permite hacer una traza de las llamadas a OpenGL.
- Blog de la Asignatura
- CodePixel
- GameDev
- ShaderTech
- GamaSutra
- Explicación de la arquitectura de la GPU (en francés)
- Papers del SIGGRAPH
- Web de desarroladores de NVidia
- Web de desarrolladores de ATI-AMD
- Tom´s Hardware
- GPGPU
- Pouet
NOVEDADES
[1 FEB 2010]
En principio, las tutorias grupales están puestas el lunes de 19h a 21h, pero es posible que el conjunto de los alumnos prefieran otro horario.
Por ello hemos habilitado una encuesta en Doodle, en el siguiente enlace.
Por favor, poned vuestro nombre completo, sólo contabilizaré los votos de aquellas personas cuya identidad corresponda a alumnos matriculados en la asignatura.
Gracias por vuestra colaboración.
Nos interesa mucho la opinión de los alumnos de la asignatura.
- Podéis dejar vuestras sugerencias en esta página web del Blog de la asignatura