Programación Gráfica de Altas Prestaciones Plataformas de altas prestaciones para Infomática Gráfica. Máster de Desarrollo de Software Depto. de Lenguajes y Sistemas Informáticos lsi.ugr.es/~jmantas/PGAP 1. Plataformas y Modelos de Programación • Aplicaciones Gráficas (y de cómputo general) Crecientes demandas de realismo Generación de imágenes en tiempo real Modelos cada vez más complejos • Elevado costo computacional Solución: Uso de Arquitecturas de altas prestaciones Multiprocesadores Simétricos: SMPs. Clusters de SMPs Procesadores Gráficos (GPUs) Considerable reducción en tiempo de ejecución ¡Muchas de estas arquitecturas son de uso convencional! • ¿Cómo sacar provecho de estas arquitecturas? Diseño para aprovechar paralelismo Modelos de programación, notaciones y herramientas adecuadas. 14 de Abril de 2015 José Miguel Mantas Ruiz Desarrollar software de forma diferente 2 1.1. Arquitecturas. Clasificación • Concepto clave para mejorar las prestaciones: Paralelismo Hardware • Hardware Paralelo Clasificación de Flynn Único flujo de instrucciones Múltiples flujos de instrucciones .. SISD Único flujo de datos Monoprocesadores MISD No se usa MIMD SIMD Múltiples flujos de datos .. . 14 de Abril de 2015 procesadores con ex- tensiones SIMD: SSE, ... Multiprocesador de una GPU - Proc. Multicore - Multiprocs. NUMA - Clusters de ordenadores José Miguel Mantas Ruiz 3 1.2. Procesadores Gráficos (GPUs) DEVICE HOST CPU GPU PCI-E Multiprocesador Multiprocesador Registros Multiprocesador Memoria compartida Multiprocesador Memoria compartida Registros Memoria compartida DRAM 14 de Abril de 2015 DRAM José Miguel Mantas Ruiz 4 1.2. Procesadores Gráficos (GPUs) Grandes prestaciones en computaciones paralelas de datos – Prestaciones muy superiores a CPU en cálculos intensivos. – Su uso se ha extendido más allá del mundo de los gráficos 3D. 14 de Abril de 2015 José Miguel Mantas Ruiz 5 Procesadores Gráficos (GPUs) ● ● La GPU contiene N multiprocesadores. Cada multiprocesador incluye: - M procesadores - Banco de registros - Memoria compartida: muy rápida, pequeña. - Cachés de ctes y de texturas (sólo lectura) ● 14 de Abril de 2015 La memoria global es 500 veces más lenta que la memoria compartida José Miguel Mantas Ruiz 6 Procesadores Gráficos (GPUs) Fermi (GT400) ● 512 cores ● 16 multiprocs. ● ● 14 de Abril de 2015 Cada multiprocs. con 32 cores y 16 Unidades de doble precisión. 64 KB. de SRAM a repartir entre memoria compartida y Cache L1. José Miguel Mantas Ruiz 7 1.3. Multiprocesadores • Espacio de direcciones único: espacio de direcciones compartido. Procesadores. interactúan modificando datos en • Fácil programar con datos compartidos: • Clasificación dependiendo de la localización de la memoria ppal: Multiproc. UMA (Uniform Memory Access) o SMP (Symmetric MultiProcessors) NUMA (NonUniform Memory Access) Difícil aumentar el no de procesadores: máx. 16. • Ejemplos: Dual PCs, Quad PCs, multicore, ... P … … … … . Red de interconexión P … … … … . P P Red de interconexión Módulos de memoria M … … … … . … … … … . M M M Memoria compartida Memoria Compartida 14 de Abril de 2015 José Miguel Mantas Ruiz 8 1.3.1. Procesadores multinúcleo (multicore) ● ● Arquitectura multicore: cada procesador contiene dos o más núcleos que pueden ejecutar instrucciones de forma simultánea. Multiprocesador en un solo chip: el sistema operativo percibe cada núcleo como procesador independiente. – ● ● ● Teóricamente, paralelismo perfecto. Procesadores visibles al Sist. Operativo Ventajas: – Menor consumo y mejor disipación calor. Thread 1 – Mejor aprovechamiento multithreading. Thread 2 P Thread 3 P Ejemplos: Intel Core i7 (4/6), IBM Cell (8+1), ... Presente: Ordenadores basados en esta tecnología y adaptación software al nuevo hardware. 14 de Abril de 2015 Thread 4 José Miguel Mantas Ruiz Productividad P P + + 9 1.3. Multiprocesadores. Programación Procesos/Hebras comparten un espacio de memoria común donde leen y escriben asíncronamente . ● Sincronización y Comunicac. mediante variables. compartidas ● • Mecanismos Sincronización: Secciones críticas, Sincronización de barrera, ... • Simplifica el desarrollo de programas • – MEMORIA Procesador Hebra maestra F O R K J O I N Región paralela 14 de Abril de 2015 Procesador Procesador Notación estándar: OpenMP: - Conjunto de directivas de compilador y funciones para programación paralela multihebrada en multiprocesadores No es necesario especificar explícitamente la comunicación de datos Eficiente sólo en arquitecturas de memoria compartida. Procesador José Miguel Mantas Ruiz Hebra maestra F O R K J O I N Hebra maestra Región paralela 10 1.4. Clusters de Ordenadores • Conexión de ordenadores mediante red de interconexión. – Cada ordenador con su memoria local y su propio espacio de direcciones – Red de interconexión: Red de Interconexión • envío/recepción de mensajes. • Punto de vista del programador: – Difícil programar con paso de mensajes. – No se necesitan mecanismos de Exclusión mútua – Aplicable a redes de ordenadores • Mayor flexibilidad y adaptación a los avances tecnológicos 14 de Abril de 2015 José Miguel Mantas Ruiz 11 1.4. Clusters de Ordenadores. Programación • Modelo de programación basado en paso de Mensajes – – – – • Gran difusión Válido para un amplio rango de arquitecturas (MIMD). Computación paralela = número fijo o variable de procesos concurrentes. Proceso = Programa secuencial aumentado con paso de mensajes + memoria local Operaciones de paso de mensajes: Envío/Rec. a procesos nombrados • • SEND (valor, P0) RECEIVE (buffer, P1) • Envíar mensaje • Recibir mensaje 14 de Abril de 2015 asíncrono síncrono José Miguel Mantas Ruiz 12 1.4. Clusters de Ordenadores. Programación • Estilo de programación SPMD (Single Program Multiple Data) • Cada proceso ejecuta mismo programa sobre diferentes datos PROC rank (Programa SPMD para 2 procesos) {while (true){ If (rank=0) {Produce (&dato); send (&dato,1,1);} Else {receive(&buffer,1,0); Consume (&buffer);} } • Notación estándar: MPI (Message Passing Interface) Funciones para paso de mensajes y operaciones complementarias. Paso de mensajes portable y relativamente fácil de usar. Modelo de Programación • Computación Número fijado de procesos se comunican mediante llamadas a funciones de envío y recepción de mensajes. • Modelo básico: SPMD 14 de Abril de 2015 José Miguel Mantas Ruiz 13 1.4. Composición de Plataformas 14 de Abril de 2015 José Miguel Mantas Ruiz 14