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
© Copyright 2025