Procesadores gráficos

Download Report

Transcript Procesadores gráficos

CURSO DE PROGRAMACIÓN PARALELA EN PROCESADORES GRÁFICOS
Presentación y organización del curso
CURSO DE PROGRAMACIÓN PARALELA EN PROCESADORES GRÁFICOS
Presentación del curso
David Miraut
Marcos García
Ricardo Suárez
Contenidos
CURSO DE PROGRAMACIÓN PARALELA EN PROCESADORES GRÁFICOS
• Profesores
• Organización del curso
• Laboratorio
Profesores
CURSO DE PROGRAMACIÓN PARALELA EN PROCESADORES GRÁFICOS
Marcos García Lorenzo
David Miraut Andrés
Despacho 0051
Ampliación del Rectorado
Despacho 2011A
Ampliación del Rectorado
[email protected]
[email protected]
Ricardo Suárez Mesa
Organización del curso
CURSO DE PROGRAMACIÓN PARALELA EN PROCESADORES GRÁFICOS
LUNES
MARTES
MIÉRCOLES
JUEVES
BLOQUE 3
BLOQUE 1
BLOQUE
2
BLOQUE 2
Teoría
Estado del proyecto
Prácticas
BLOQUE
4
BLOQUE 4
VIERNES
BLOQUE
4
BLOQUE 5
BLOQUE 1: Sistemas paralelos y procesadores gráficos
BLOQUE 2: CUDA Arquitectura y programación
BLOQUE 3: Estado del proyecto
BLOQUE 4: Prácticas de programación en CUDA
BLOQUE 5: Sistemas masivamente paralelos
BLOQUE 1: Sistemas paralelos y procesadores gráficos
CURSO DE PROGRAMACIÓN PARALELA EN PROCESADORES GRÁFICOS
•
•
•
Introducción a arquitecturas masivamente •
paralelas
- Tipos de procesadores gráficos (GPUs)
- Componentes de la tarjeta gráfica
- Motivación del uso de estas arquitecturas
Paralelismo en sistemas monoprocesador
•
- Segmentación
- Unidades SIMD
- Latencia del sistema de memoria (muro
de memoria)
- Necesidad de la jerarquía de memoria
•
- Estrategias básicas para aumentar la
localidad en los algoritmos
Paralelismo en sistemas multiprocesador
- Modelos de programación
- Memoria compartida
- Paso de mensajes
- Memoria distribuida
•
- Sistemas SIMD
- Sistemas heterogéneos
Procesadores gráficos
- Historia y evolución
- Retos en el diseño de soluciones gráficas
- Cauce gráfico clásico
- Arquitecturas streaming
- Shaders
Tecnología de memoria de vídeo
- Evolución
- Estrategias de mejora de ancho de banda
- Coste energético
GPGPU Clásica
- Uso del cauce clásico para computación
genérica
- Limitaciones en precisión aritmética
- Shader models
- Ejemplo de arquitectura streaming
- Jerarquía de memoria en modo gráfico
Comunicación CPU-GPU
- PCI-Express
- Sistemas multitarjeta
BLOQUE 2: CUDA Arquitectura y programación
CURSO DE PROGRAMACIÓN PARALELA EN PROCESADORES GRÁFICOS
•
•
•
Origen e introducción a la Arquitectura Unificada
- Causas que provocan el cambio en arquitectura
- Mercado
- Selección del hardware en función de los
requerimientos de la aplicación
- CUDA como arquitectura
- CUDA como modelo de programación
- Chip G80 a fondo
Programación en CUDA (I)
- Modelo SPMD
•
- Organización de la carga computacional
- Jerarquía de memoria
- Modelo de ejecución
- API de CUDA
- Compilación, enlazado y depuración
Arquitectura Unificada
- Gestión y ejecución de hebras
- Influencia del buffer de instrucciones y algoritmos
de marcación
•
- Jerarquia de memoria en detalle
- Register File
- Constantes
- Texturas
- Memoria compartida
- Resolución de conflictos entre bancos
- Coalescencia en el acceso a la memoria
- Equilibrado entre procesamiento y comunicación
- Compromiso entre número de hilos, cantidad de
registros y uso de memoria compartida
- Ocupación de la GPU
- Cuestiones sobre la precisión de las operaciones
- Acumulación de errores en coma flotante
- Unidades de coma flotante en modelos de alta
gama
Programación en CUDA (II)
- Máquina virtual PTX
- Dependencia entre instrucciones
- Control de flujo en la GPU
- Divergencia y predicación
- Memoria pinned
- Multitarjeta
- Estrategias de depuración
- Interoperatibilidad con APIs gráficas
Librerías de medio nivel
- CUBLAS
- CUFFT
- CUSparse
- CURAND
- CULATools...
BLOQUE 3: Estado del proyecto
CURSO DE PROGRAMACIÓN PARALELA EN PROCESADORES GRÁFICOS
• Personal URJC
• Estado del proyecto
– Visión global
– Algoritmos implementados
•
•
•
•
Extended MD5
UNRAR Attack
Office Attack
PDF Attack
– Estructura de la librería general
• Trabajo futuro
• Recursos utilizados
BLOQUE 4: Prácticas de programación en CUDA
CURSO DE PROGRAMACIÓN PARALELA EN PROCESADORES GRÁFICOS
• Instalación del entorno
• Ejemplos básicos
• Herramientas y depuración
– Occupancy calculator
– CUDAgdb
• Ejemplos avanzados
BLOQUE 5: Sistemas masivamente paralelos
CURSO DE PROGRAMACIÓN PARALELA EN PROCESADORES GRÁFICOS
• Introducción a OpenCL
– Ventajas y desventajas de OpenCL
– Cómo portar kernels de CUDA a OpenCL
• Perspectiva sobre futuras arquitecturas
masivamente paralelas
– Arquitecturas CPU+GPU
– Arquitecturas manycore (Knight's Corner)
– Proyecto Echelon
¿Por qué tanto énfasis en Arquitectura?
CURSO DE PROGRAMACIÓN PARALELA EN PROCESADORES GRÁFICOS
• Los procesadores gráficos que vamos a tratar en
esta asignatura tienen una gran capacidad de
cálculo “potencial”
• Su arquitectura no se parece a nada que se haya
visto durante la carrera
• Para poder aprovechar “a tope” sus capacidades
es necesario conocerlos a bajo nivel y programar
consecuentemente
Veremos muchas más razones cuando entremos en materia…
Página Web del curso
CURSO DE PROGRAMACIÓN PARALELA EN PROCESADORES GRÁFICOS
•
•
•
•
•
Calendario de trabajo
Las transparencias
La bibliografía
Enunciados de Prácticas
Enlaces al material
necesario para hacerlas
• Los datos de contacto de
los profesores
• Lecturas
complementarias
Laboratorio
CURSO DE PROGRAMACIÓN PARALELA EN PROCESADORES GRÁFICOS
Clase interactiva
CURSO DE PROGRAMACIÓN PARALELA EN PROCESADORES GRÁFICOS
• ¿Quiénes sois?
• ¿Qué os interesa aprender?
• ¿Cúales son vuestras espectativas sobre el
curso?