|
Bloque temático |
Tema |
Apartados |
|
I.-“Introducción” |
Tema 1. “Arquitecturas de streaming y tarjetas gráficas” |
-Evolución de las arquitecturas de Von Neumann en mejora de
prestaciones y cuellos de botella
-
Arquitecturas streaming como solución
-
El procesador gráfico (GPU)
- Historia de las tarjetas gráficas
- La tarjeta gráfica y sus elementos
constitutivos
-
Motivación y Capacidad de computo de los chips gráficos (ventajas y
limitaciones) |
|
I.- “Cauce gráfico clásico” |
Tema 2. “El cauce gráfico y su realización en la GPU” |
-Introducción funcional del cauce
gráfico
· Etapa de Transformación
· Etapa de Rasterizado
· Etapa de Fragmentos
-Procesadores de streams
· Pasado: Harvest y pixelPlanes
· Presente: Merrimac, Imagine y Cepos
· Aternativas en silicio: PIM, VIRAM y
MIT-RAW
-Cauce gráfico en detalle y su
implementación en el hardware de la tarjeta gráfica |
|
Tema 3. “Influencia y evolución de la memoria en arquitecturas
gráficas: Caso de estudio NVidia serie 6” |
- Características de la memoria en las
tarjetas gráficas.
- Evolución y estado actual de la
memoria
- Framebuffer y relación con el sistema
- Extrapolación de conceptos de
programación clásicos a GPUs: interfaces de memoria
-Influencia de los Shader Models
- Arquitectura de la Serie 6
- Jerarquía y gestión de memoria en la
tarjeta
- Técnicas de compresión dinámica de
texturas, prebúsqueda (prefetching) y predicción de datos en el
bus
- Necesidades de memoria de una
aplicación gráfica. Consideraciones en gestión de este recurso.
-
Diferencias fundamentales con la arquitectura contemporánea de ATI |
|
Tema 4: “Influencia y evolución de los buses gráficos: Caso de estudio
nVIDIA serie 7” |
- Introducción al bus gráfico desde el
punto de vista del programador: AGP y PCI-E
- El bus gráfico y su influencia en el
acceso a memoria del sistema (y las cachés del procesador principal):
TurboCache e HiperMemory
- Consideraciones de ancho de banda
- Introducción a soluciones multi-GPU
presentes en el mercado de consumo: SLI y CrossFire
- Mercado y presiones de los diseñadores
de chips gráficos
- Caso de estudio: NVidia Serie 7 y RSX
- Diferencias principales con la
arquitectura equivalente de ATI
- Influencia de la frecuencia de
funcionamiento de los distintos componentes en el rendimiento y
consumo
- Aspectos de segmentación y
superescalaridad en el chip gráfico
- Programación de la GPU de la forma
“clásica” |
|
|
Tema 5. “Análisis de rendimiento y búsqueda de cuellos de botella” |
- Herramientas de profiling y
análisis de rendimiento, uso y aplicación en shaders: NVPerfHUD,
NVPerfKit, NVShaderPerf, gDEBugger…
-
Benchmarks
y análisis neutral: Estado del arte y diseño
-
Caso práctico en shaders multipasada |
|
II.-“Arquitectura
unificada” |
Tema 6. “Introducción a la arquitectura unificada” |
- Análisis de las causas que nos han
llevado al nuevo modelo
· Restricciones del modelo anterior
· DirectX 10
· Equilibrado de carga
- Acercamiento desde el punto de vista
de la programación GPGPU
- Bloques y hebras
- Modelo distribuido de memoria
- Ejemplos ilustrativos de la API de
CUDA para entender la arquitectura
· Reserva de memoria a distintos
niveles
· Transferencia de bloques de memoria
(comunicación)
· Limitaciones de las funciones
· Creación de hebras
·Multiplicación de matrices |
|
Tema 7. “Arquitectura unificada y modelo de memoria” |
-Las dos personalidades del procesador
gráfico
-Limitaciones debidas a la “herencia”
gráfica y cómo se solucionan
-Espacios y arquitectura de memoria
-Procesadores SIMD
-Modelo de ejecución: hebras, warps y
bloques
-Consideraciones de utilización de los
espacios de memoria
-Relación HW-SW de la API de CUDA
-Compilación, linkado y emulación
|
|
|
Tema 8. “Arquitectura unificada en detalle. Caso práctico serie 8
nVIDIA” |
- Introducción y terminología
- Arquitectura de los arrays de
procesadores streaming
- Cluster de procesadores de texturas
- Multiprocesadores streaming
· Buffer de instrucciones
· Scoreboarding de instrucciones
· Ramificación: efectos y
consecuencias
· Sincronización
· File register del procesador
streaming
· Constantes
· Memoria compartida
· Cauces de ejecución
· Precauciones con el acceso a memoria
de texturas
- Máquina virtual PTX y traducción del
código
-
Factores a tener en cuenta en el rendimiento |
|
Tema 9. “Conceptos básicos de programación paralela en procesadores
masivamente paralelos” |
-Introducción y retos
-Búsqueda de la concurrencia en el
problema
· Introducción
· Descomposición en tareas
· Descomposición en datos
· Ejemplo: multiplicación de matrices
· Agrupación de tareas y orden
· Compartición de datos
· Diseño y evaluación
· Ejemplos:
+ Multiplicación de matrices
+ MPEG
+ Dinámica molecular
-Estructuración del algoritmos en
paralelo
· Estrategias
· Ejemplo: MPEG
+ Paralelismo de datos
+ Fusión de bucles y localidad de
memoria (reducir comunicación)
+ Segmentación (no muy util en CUDA
pero sí en CELL)
· Ejemplo: Dinámica molecular
· Modelos de computación paralela
-“Estilos” de codificación
· OpenMP, MPI y CUDA
· SPMD en detalle
· Fases del programa en CUDA
+ Ejemplos
-“Estilos” de datos
· Datos compartidos (CUDA), cola
compartida y arrays distribuidos |
|
|
Tema 10. “Aspectos críticos de rendimiento en CUDA” |
-Fundamentos
· Rendimiento de las instrucciones
· Intensidad aritmética
· Desviaciones respecto al IEEE 754
· Control del flujo
· Instrucciones de memoria
· Ancho de banda
· Transferencias entre host y device
-Estrategias
· Optimizaciones de threads por
bloques
· Conflictos entre bancos
· “Fusión” de accesos a memoria
· Precisión y exactitud en la serie 8
de nVIDIA |
|
Tema 11. “Nuevas tendencias” |
-Aspectos avanzados de arquitectura de
CPUs: puentes a la integración CPU-GPU
· Procesadores “matriciales” de Intel:
· Fusion de ATI
-Serie 9 de nVIDIA
-R600 de ATI y Close to Metal
-Tarjetas y middleware para cálculo de
simulación de efectos gráficos basados en física (Ageia, Havok…)
-RPUs (Raytracing processing units) |
|
Bloque de prácticas 1
guiadas |
Práctica 1 |
Familiarización con el lenguaje de programación Cg |
|
Práctica 2 |
Iluminación phong y goraud en Cg (y CgFX) |
|
Práctica 3 |
Sombreado avanzado: mapas de bultos
Programa completo en OpenGL y Cg |
|
Bloque de prácticas 2
guiadas |
Práctica 4 |
Familiarización con la extensión del lenguaje C de CUDA |
|
Práctica 5 |
Multiplicación básica de matrices |
|
Práctica 6 |
Convolución 2D y algoritmo scan básico |
|
Práctica 7 |
Multiplicación de matrices por bloques: manejo de memoria compartida |
|
Práctica 8 |
Convolución 2D y scan avanzados.
Comunicación entre APIs gráficas y CUDA |
|
Explicación práctica de mejora de eficiencia y rendimiento en CUDA |
|
Proyecto final de la asignatura |
|
BLOQUE 1 |
Introducción |
|
Título |
Stream Processor Architecture |
|
Autor |
Scott Rixner |
|
Editorial |
Springer |
|
Título |
Computer Architecture, Fourth Edition: A Quantitative Approach |
|
Autor |
John L. Hennessy y David A. Patterson |
|
Editorial |
Morgan Kaufmann |
|
BLOQUE 2 |
Cauce gráfico clásico |
|
Título |
GPU Gems 2: Programming Techniques for High-Performance Graphics and
General-Purpose Computation |
|
Autor |
Mat Pharr y Radima Fernando |
|
Editorial |
Addison-Wesley Professional |
|
Título |
GeForce 6 Series Technical Briefs |
|
Autor |
nVIDIA |
|
Editorial |
nVIDIA Corporation |
|
Título |
Procesadores gráficos para PC |
|
Autor |
Manuel Ujaldón Martínez |
|
Editorial |
Ciencia-3 |
|
Título |
Real-Time Shader Programming |
|
Autor |
Ron Fosner |
|
Editorial |
Morgan Kaufmann |
|
Título |
Advanced Graphics Programming Using OpenGL |
|
Autor |
Tom McReynolds y David Mlythe |
|
Editorial |
Morgan Kaufmann Publisher |
|
Título |
OpenGL Shading Language (2nd Edition) |
|
Autor |
Randi J. Rost |
|
Editorial |
Addison-Wesley |
|
Título |
Real-Time Rendering Tricks and Techniques in DirectX |
|
Autor |
Nelly Dempski |
|
Editorial |
Premier Press |
|
Título |
The Cg tutorial. The definitive guide to programmable Real-Time
graphics |
|
Autor |
Randima Fernando y Mark J. Kilgard |
|
Editorial |
Addison-Wesley Professional |
|
BLOQUE 3 |
Arquitectura unificada |
|
Título |
nVIDIA GeForce 8800 GPU Architecture Overview. Technical Brief. |
|
Autor |
nVIDIA |
|
Editorial |
nVIDIA Corp. |
|
Título |
GPU Shading and Rendering (SIGGRAPH 2007 Course Notes) |
|
Autor |
Marc Olando et al. |
|
Editorial |
IEEE |
|
Fecha |
Temas |
Metodología |
|
Semana 1 |
Tema 1. “Arquitecturas de streaming y tarjetas gráficas” |
Técnica expositiva apoyada en material audiovisual: transparencias,
demostraciones y vídeos. Modelo participativo. |
|
Semana 2 |
Tema 2. “El cauce gráfico y su realización en la GPU” |
|
Semana 3 |
Tema 3. “Influencia y evolución de la memoria en arquitecturas
gráficas: Caso de estudio NVidia serie 6” |
|
Semana 4 |
|
Semana 5 |
Tema 4: “Influencia y evolución de los buses gráficos: Caso de estudio
nVIDIA serie 7” |
|
Semana 6 |
Tema 5. “Análisis de rendimiento y búsqueda de cuellos de botella” |
|
Semana 7 |
Tema 6. “Introducción a la arquitectura unificada” |
|
Semana 8 |
Tema 7. “Arquitectura unificada y modelo de memoria” |
|
Semana 9 |
Tema 8. “Arquitectura unificada en detalle. Caso práctico serie 8
nVIDIA” |
|
Semana 10 |
|
Semana 11 |
Tema 9. “Conceptos básicos de programación paralela en procesadores
masivamente paralelos” |
|
Semana 12 |
|
Semana 13 |
Tema 10. “Aspectos críticos de rendimiento en CUDA” |
|
Semana 14 |
Tema 11. “Nuevas tendencias” |
|
Fecha |
Temas |
Metodología |
|
Semana 3 |
Familiarización con el lenguaje de programación Cg |
Proyectos de aprendizaje y experimentación guiados. |
|
Semana 4 |
Iluminación phong y goraud en Cg (y CgFX) |
Proyectos de aprendizaje y experimentación guiados. |
|
Semana 5 |
Sombreado avanzado: mapas de bultos
Programa completo en OpenGL y Cg |
Proyectos de aprendizaje y experimentación guiados. |
|
Semana 7 |
Familiarización con la extensión del lenguaje C de CUDA |
Proyectos de aprendizaje y experimentación guiados. |
|
Semana 13 |
Explicación práctica de mejora de eficiencia y rendimiento en CUDA |
Proyectos de aprendizaje y experimentación guiados. |
|
Semana 15 |
Exposición del proyecto final de la asignatura |
Proyectos de aprendizaje y experimentación. |
|
Nombre y apellidos |
Óscar David Robles Sánchez |
|
Departamento/área de conocimiento |
Arquitectura y Tecnología de
Computadores y Ciencia de la Computación e Inteligencia Artificial |
|
Categoría |
Titular de Universidad Interino |
|
Universidad |
Rey Juan Carlos |
|
Titulación Académica |
Doctor en Informática por la Universidad
Politécnica de Madrid |
|
Experiencia Docente |
Impartición de diversas asignaturas
troncales y obligatorias en las diferentes titulaciones con presencia
de asignaturas de informática en la Universidad Rey Juan Carlos desde
Noviembre de 2002. Cabe destacar la coordinación de Estructura y
Tecnología de Computadores en Ingeniería Técnica en Informática de
Gestión (campus de Móstoles) desde el curso 2005/06, siendo en la
actualidad su único profesor de teoría.
Impartición de diferentes asignaturas
optativas y de libre elección en las titulaciones de Informática,
relacionadas con los campos de Gráficos y Paralelismo.
Impartición, durante el curso 2006/2007
de la asignatura Técnicas Avanzadas de Gráficos en 3D en el presente
Máster. |
|
Experiencia Investigadora |
Participación en más de 15 proyectos de
investigación, liderando en la actualidad sendos proyectos con las
empresas “Acciona Infraestructuras” y “Abadía”.
Más de 20 publicaciones nacionales e
internacionales de investigación. |
|
Experiencia profesional |
|
Junio 2007 – |
Responsable del Máster en Informática
Gráfica, Juegos y Realidad Virtual |
|
Octubre 2005 – |
Profesor Titular Interino en la URJC. |
|
Noviembre 2002 – Octubre 2005
|
Profesor Ayudante en la URJC |
|
Noviembre 1999 – Noviembre 2002 |
Becario para la realización del
Doctorado en los Departamentos e institutos de la U. P. M. |
|
|
Nombre y apellidos |
David Miraut |
|
Departamento/área de conocimiento |
Arquitectura y Tecnología de
Computadores |
|
Categoría |
Profesor Ayudante |
|
Universidad |
Universidad Rey Juan Carlos |
|
Titulación Académica |
Ingeniero de Telecomunicaciones |
|
Experiencia Docente |
Profesor ayudante en
DATCCCIA dentro del área de Arquitectura y Tecnología de Computadores
desde diciembre del año 2005 en la Escuela
Superior de Ciencias Experimentales y Tecnología de la Universidad Rey
Juan Carlos. |
|
Experiencia Investigadora |
|
2006-actualidad |
Miembro del Grupo de Modelado y Realidad Virtual (GMRV) |
|
2003 - 2005 |
Ingeniero de Software en BLISS (Beamline Instrumentation
Software Group) del ESRF (European Synchrotron Radiation
Facilities) |
|
2003 |
Beca de Colaboración. Departamento de Electromagnetismo y Teoria
de Circuitos (ETSIT-UPM) |
|
2002 |
Beca de colaboración en el CNES (Centro Nacional de Estudios
Espaciales Frances) |
|
2001 – 2002 |
Beca de Colaboración. Departamento de Electromagnetismo y Teoria
de Circuitos (ETSIT-UPM) |
Áreas de
interes: Arquitectura y programación de hardware gráfico de consumo,
modelado
y representación basados en imagen, fotografía computacional, sistemas
catadióptricos e Inverse Rendering. Aplicación de estas áreas
de conocimiento a sistemas hardware/software de realidad virtual
fotorealistas en tiempo real. |