Está en la página 1de 15

Programacin Grfica de Altas prestaciones

Master en Desarrollo de Software


Departamento de Lenguajes y Sistemas Informticos lsi.ugr.es/~jmantas/PGAP

Contenidos
1. Plataformas de altas prestaciones para Inf. Grfica. Modelos de programacin. 2. Metodologa de diseo de Algoritmos paralelos 3. Programacin de arquitecturas paralelas convencionales 4. Programacin de GPUs
6 de abril de 2011 Jos Miguel Mantas Ruiz 1

1. Plataformas y Modelos de Programacin


Aplicaciones Grficas (y de cmputo general)
Crecientes demandas de realismo Generacin de imgenes en tiempo real Modelos cada vez ms complejos

Elevado costo computacional

Solucin: Uso de Arquitecturas de altas prestaciones


Multiprocesadores Simtricos: SMPs. Clusters de SMPs Procesadores Grficos (GPUs)

Considerable reduccin en tiempo de ejecucin

Estas arquitecturas son de uso convencional!


Cmo sacar provecho de estas arquitecturas?
Diseo para aprovechar paralelismo Modelos de programacin, notaciones y herramientas adecuadas.
6 de abril de 2011 Jos Miguel Mantas Ruiz

Desarrollo software algo diferente

1.1. Arquitecturas. Clasificacin


Concepto clave para mejorar las prestaciones: Paralelismo Hardware
Clasificacin de Flynn nico flujo de instrucciones (Single Instruction) Mltiples flujos de instrucciones (Multiple Instruction)

SISD
nico flujo de datos (Single Data)
Monoprocesadores
UI EP M

MISD
No se usa

SIMD
Mltiples flujos de datos (Multiple Data)

MIMD
EP M M M - Proc. Multicore - Multiprocs.

. . .

. . .

- Procesadores con extensiones SIMD (SSE,...) - Multiproc. GPU

UI UI UI

EP EP EP

M M M

UI

EP EP

- Clusters de ordenadores

6 de abril de 2011

Jos Miguel Mantas Ruiz

1.2. Graphics Processing Units (GPUs)


Arquitectura NVIDIA GeForce serie 9
(GTX 260, GTX 280, Tesla C1060)

240 cores 30 multiprocesadores cada uno con 8 cores, una unidad de doble precisin y memoria compartida de 16KB.

6 de abril de 2011

Jos Miguel Mantas Ruiz

1.2. Graphics Processing Units (GPUs)


Arquitectura NVIDIA Fermi (GT400)
(GTX 460, GTX 480, GTX580, Tesla C2070) - 480 procesadores de hebras. - 15 multiprocesadores cada uno con 32 cores, 16 unidades de doble precisin y 64 KB. de SRAM a repartir entre memoria compartida y Cache L1

6 de abril de 2011

Jos Miguel Mantas Ruiz

1.2. Graphics Processing Units (GPUs)


GPU como coprocesador

CPU y GPU actan como dispositivos separados, cada uno mantiene su propia memoria DRAM

HOST

DEVICE

GPU

CPU

PCI-E

Multiprocesador Multiprocesador Registros Multiprocesador Memoria compartida Multiprocesador


Memoria Registros compartida Memoria compartida

DRAM
6 de abril de 2011 Jos Miguel Mantas Ruiz

DRAM
6

1.2. Graphics Processing Units (GPUs)


Grandes prestaciones en computaciones paralelas de datos
Prestaciones muy superiores a CPU en clculos intensivos (en simple precisin) Su uso se ha extendido ms all del mundo de los grficos 3D

6 de abril de 2011

Jos Miguel Mantas Ruiz

1.2. Graphics Processing Units (GPUs).


Compute Unified Device Architecture (CUDA)
Plataforma hardware-software para asignar clculo paralelo de datos de propsito general a la GPU sin apoyarse en API grfica.

GPU

Modelo de Hardware: Varios Multiprocesadores SIMD con memoria compartida. Modelo de Ejecucin basado en ejecucin multihebra de grano fino con varios niveles de memoria.

Memoria compartidaProc. Proc. 1 Proc. 2 ... M

UI

Memoria compartida

Hebra (0,0) Hebra (1,0) Hebra (2,0) Hebra (3,0)

Modelo de programacin apoyado por una extensin de C y biblioteca de tiempo ejecucin.


6 de abril de 2011 Jos Miguel Mantas Ruiz

Memoria compartida Memoria compartida

DRAM

... Registros Multiprocesador 2 Memoria compartida Multiprocesador 1

Multiprocesador N

1.3. Multiprocesadores
Espacio de direcciones nico Fcil programar con datos compartidos: Clasificacin dependiendo de la localizacin de la memoria ppal
UMA (Uniform Memory Access) o SMPs (Symmetric MultiProcessors)
Difcil aumentar el n de procesadores: mx. 16.

NUMA (NonUniform Memory Access)

Ejemplos: Dual PCs, Quad PCs, multicore,

Red de interconexin P . P M Mensajes

Red de interconexin Mdulos de memoria M . M

M .

Memoria compartida 6 de abril de 2011 Jos Miguel Mantas Ruiz

Memoria compartida 9

1.3.1. Procesadores Multincleo (multicore)


Arquitectura multicore: cada procesador contiene varios ncleos que pueden ejecutar instrucciones de forma simultnea. Es el presente y el futuro inmediato. Multiprocesador en un solo chip: el sistema operativo percibe cada ncleo como procesador independiente. Tericamente, paralelismo perfecto. Ventajas: Menor consumo y mejor disipacin calor. Mejor aprovechamiento multithreading. Ejemplos: Core i7 (4 cores, 8 hebras, 6 cores 12 hebras), IBM Cell (8+1), ...
Procesadores visibles al Sist. Operativo
Thread 1 Thread 2 Thread 3 Thread 4

Productividad

P P P P
10

6 de abril de 2011

Jos Miguel Mantas Ruiz

1.3. Multiprocesadores. Programacin


Modelo de programacin paralela basado en memoria compartida
Procesos o Hebras comparten un espacio de memoria comn donde leen y escriben asncronamente. Eficiente slo en multiprocesadores Existen variables privadas a una hebra y variables compartidas Requiere mecanismos de Sincronizacin o Exclusin mutua: Secciones crticas o Sincronizacin de barrera entre grupos de hebras

Notacin estndar: OpenMP


Conjunto de directivas de compilador y funciones para programacin paralela multihebrada en multiprocesadores Paralelizacin incremental
F O R K J O I N
Regin paralela

Hebra maestra

Hebra maestra

F O R K

J O I N
Regin paralela

Hebra maestra

6 de abril de 2011

Jos Miguel Mantas Ruiz

11

1.4. Multicomputadores
Conexin de ordenadores completos mediante una red de interconexin Clusters de ordenadores
Cada ordenador con su memoria local y su propio espacio de direcciones Red de interconexin:
envo/recepcin de mensajes.
P ro c e s a d o r 0 P ro c e s a d o r 1

Red de Interconexin

M e m o r ia R ed d a to

M e m o ria d a to

s e n d (d a to s )

r e c e iv e ( d a to s )

- Ms difcil programar explcitamente con paso de mensajes - No se necesitan mecanismos de Exclusin mutua - Mejor escalabilidad que multiprocesadores - Aplicable a redes de ordenadores: Mayor flexibilidad y adaptacin a los avances tecnolgicos
6 de abril de 2011 Jos Miguel Mantas Ruiz 12

1.4. Clusters de Ordenadores. Programacin


Modelo de programacin basado en paso de Mensajes
Gran difusin Vlido para un amplio rango de arquitecturas (MIMD). Computacin paralela = nmero fijo o variable de procesos concurrentes. Proceso = Programa secuencial aumentado con paso de mensajes + memoria local

Operaciones de paso de mensajes: Envo/Rec. a procesos nombrados


SEND (valor, P0) RECEIVE (buffer, P1)

P0

P1

No excluye creacin dinmica de procesos.

6 de abril de 2011

Jos Miguel Mantas Ruiz

13

1.4. Multicomputadores. Programacin


Estilo de programacin 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);} }

Notacin estndar: MPI (Message Passing Interface)


Funciones para paso de mensajes y operaciones complementarias. Paso de mensajes portable y relativamente fcil de usar. Modelo de Programacin Computacin Nmero fijado de procesos se comunican mediante llamadas a funciones de envo y recepcin de mensajes. Modelo bsico: SPMD
6 de abril de 2011 Jos Miguel Mantas Ruiz 14

1.5. Composicin de plataformas. Sistemas Paralelos Heterogneos


Lo normal es encontrarse plataformas compuestas de varios niveles: - Clusters de multiprocs. multicores. - Sistemas multiprocesador con varias GPUs. (sistemas multiGPU de memoria compartida). - Clusters de nodos multicore con GPUs. La programacin de este tipo de sistemas requiere del uso combinado de varias tecnologas: MPI + OpenMP o Pthreads + CUDA.
Nodo 0 Nodo 1 PCI-E

CPU multicore

GPU

CPU multicore
Gigabit Ethernet Switch

PCI-E

GPU

Nodo 2

Nodo 3 PCI-E

CPU multicore
6 de abril de 2011

GPU

CPU multicore
Jos Miguel Mantas Ruiz

PCI-E

GPU

15

También podría gustarte