Download Diapositiva 1
Document related concepts
no text concepts found
Transcript
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 marcos.garcia@urjc.es david.miraut@urjc.es 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?