Programación Gráfica de Altas Prestaciones

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