S01: Introduction · • Los sistemas UMA no escalan bien –Los sistemas basados en bus se pueden...

Post on 21-Mar-2020

6 views 0 download

Transcript of S01: Introduction · • Los sistemas UMA no escalan bien –Los sistemas basados en bus se pueden...

S01: IntroductionParallel ProgrammingProf. Herminio Paucar

.

Contenido• Motivación

• ¿Qué es la Programación Paralela?

• Modelos de Sistemas Paralelos

• Análisis del rendimiento

.

Motivación C.P. La velocidad de los computadores secuenciales convencionales se ha

incrementado continuamente para adaptarse a las necesidades de las aplicaciones

Simultáneamente hay una demanda continua de un poder computacional superior, tenemos: El modelado y simulación numérica de problemas en ciencias e ingeniería

Costosos cálculos iterativos sobre grandes cantidades de datos y fuertes restricciones temporales:

Ejemplos predicción meteorológica, bioInformatica, astrofísica. Son sistemas cada vez más complejos que requieren mayor tiempo de cómputo.

.

Motivación C.P.Global Weather Forecasting Example

Nx = Ny = 1000 Kms, Nz= 10 kms.• Descomponemos el Dominio en segmentos cúbicos de

(1 m)3 , entonces sabemos que existe aprox. 1016

segmentos cubicos por día.• Comp. Secuencial• Evolución temporal (2 días): Asumiendo que el proceso

de cálculo de los 2 días lo realiza en 30’ min ejecutando un total de 10xx ops (operaciones por segundo).

• Modificación dominio, ahora lo queremos para 100 días → 10xx × 100 = 10xx segmentos. La cantidad de tiempo de cálculo será de 10yy seg ≈ Xdías.

• Comp. Paralelo

• 10xx opera./procesador, con 1000 procesadores

tenemos: Y’ minutos de procesamiento paralelo.

• Siempre habrá aplicaciones que requieren más poder computacional

• La relación coste/rendimiento se hace desfavorable si se pretende incrementar más aún la potencia de los computadores secuenciales.

• Además, el rendimiento de los computadores secuenciales está comenzando a saturarse.

• En todo caso hay límites para una única CPU– Memoria disponible

– Rendimiento

5

Motivación C.P.

• Solución: Usar varios procesadores. Sistemas paralelos con la tecnología VLSI (very-large-scale integration), el costo de los procesadores es menor.

• Muchas posibilidades:– Pipeline– Cachés– Paralelismo a nivel de instrucción– Ejecución fuera de orden– Varios procesadores en un chip– entre otras técnicas...

Motivación C.P.

• ...uso de varios procesadores trabajando juntos para resolver una tarea común

• El modo de uso de los procesadores puede ser diseñado por el programador:– Cada procesador trabaja en una porción del problema.– Los procesos pueden intercambiar datos, a través de la

memoria o por una red de interconexión.

¿Qué es la programación paralela?

• La programación paralela permite:– Resolver problemas que no caben en una CPU– Resolver problemas que no se resuelven en un tiempo

razonable

• Se pueden ejecutar– Problemas mayores– Más rápidamente (aceleración)– Más número de problemas

Ventajas de la Computación Paralela

• Programación concurrente: Varios procesos trabajando en la solución de un problema, puede ser paralela (varios procesadores)

• Computación heterogénea: Varios procesadores con características distintas

• Programación adaptativa: Durante la ejecución el programa se adapta a las características del sistema

• Programación distribuida: Varios procesadores geográficamente distribuidos. Hay paso de mensajes pero se necesita infraestructura especial

• Computación en la web: Necesidad de herramientas que permitan la utilización de sistemas de computación en la web

• Computación cuántica o biológica: La computación cuántica es un paradigma de computación distinto al de la computación clásica. Se basa en el uso de cúbits en lugar de bits, y da lugar a nuevas puertas lógicas que hacen posibles nuevos algoritmos, ejem: 001 y a1*001+a2*010+a3+...

Conceptos relacionados pero no iguales

Prog. Concurrente vs ParalelaLa ejecución concurrente es la forma generalizada de ejecución paralela. Por ejemplo, el programa paralelo también se puede llamar concurrente, pero lo contrario no es cierto.

1. La ejecución simultánea es posible en un solo procesador (varios subprocesos, administrados por el programador)

2. La ejecución paralela no es posible en un solo procesador sino en múltiples procesadores. (Un proceso por procesador)

Ejm: Tenemos la suma sucesiva0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 = 45Prog. Concurrente: (1 + 9) + (2 + 8) + (3 + 7) + (4 + 6) + 5 + 0 = 45Prog. Paralela:

• Process01: 0 + 1 + 2 + 3 + 4 = 10• Process02: 5 + 6 + 7 + 8 + 9 = 35

Aspectos a tener en cuenta en la computación paralela son:

• Diseño de computadores paralelos. Escalabilidad y Comunicaciones.

• Diseño de algoritmos eficientes. No hay ganancia si los algoritmos no se diseñan adecuadamente.

• Métodos para evaluar los algoritmos paralelos: ¿Cómo de rápido se puede resolver un problema usando una máquina paralela? ¿Con qué eficiencia se usan esos procesadores?

• Lenguajes para computadores paralelos, flexibles para permitir una implementación eficiente y que sean fáciles de programar.

• Herramientas para la programación paralela (MPI y OpenMP)

• Compiladores paralelizantes.

Aspectos a considerar

.Modelos de Sistemas Paralelos

Tipos de computadores según la taxonomía de Flynn• SISD: Computador secuencial. Un procesador y una

memoria. Computador secuencial.• SIMD: Máquina con varios procesadores pero una única

Unidad de Control. Computador vectorial.• MIMD: Máquina con varios procesadores

“completos”. Computador paralelo.

Tipos de computadores

Michael J. Flynn

.

Modelos de Sistemas ParalelosClasificación de Flynn

Computador secuencial: SISD

• SIMD. Una única Unidad de Control. La misma instrucción se ejecuta síncronamente por todas las unidades de procesamiento. Sincronización automática. Requiere menos hardware porque sólo necesita una U.C global y menos memoria porque tiene una sola copia del programa.

Computador “paralelo” : SIMD

• MIMD. Cada procesador ejecuta un programa diferente independientemente de los otros procesadores.

Computador paralelo: MIMD

Computador paralelo: MIMD Alternativa exitosa: Utilizar múltiples CPUs y unidades de mem.

Interconectadas – Ordenador Paralelo MIMD (Multiple Instruction, Multiple Data)

Criterio: Forma de interacción entre procesadores.

Multiproc. de mem. Compartida Procesadores. interactúan modificando datos en espacio de direcciones compartido.

… … … … .

Red de interconexión

P P

M M

Un espacio de direcciones

Módulos de memoria… … … … .

Multiproc. de paso de mensajes Memoria local a cada procesador. Red de interconexión. Interacción vía Paso de mensajes.

… … … … .

Red de interconexión

P

… … … … .

M M

Memoria local

Mensajes

Ordenadores

Difícil emular

Fácil emularP

M M

P P P P P P

B U S

Memory

Memoria compartida – un único espacio de memoria. Todos los procesadores tienen acceso a la memoria a través de una red de conexión:

-Bus-Red de barras cruzadas-Red multietapa

Memoria distribuida – cada procesador tiene su propia memoria local. Se utiliza paso de mensajes para intercambiar datos.

MULTICOMPUTADOR

M

P

M

P

M

P

M

P

M

P

M

P

Network

19

Tipos de computadores paralelos

MULTIPROCESADOR

Comp.Paralelos de memoria compartida

Uniform memory access (UMA)Cada procesador tiene acceso uniformea memoria. También se llaman symmetric multiprocessors (SMPs)

P P P P

BUS

Memory

Non-uniform memory access (NUMA)El tiempo de acceso depende de dónde están los datos. El acceso local es más rápido. Más fácil y barato de escalar que SMPs

P P P P

BUS

Memory

Network

P P P P

BUS

Memory

20

Redes basadas en buses.

• Cuando un procesador necesita acceso global a memoria, genera una solicitud al bus.

• Esta red es atractiva, dada su simplicidad y capacidad para proporcionar acceso uniforme a la memoria compartida.

• Pero el bus sólo puede llevar una determinada cantidad de datos entre la memoria y los procesadores.

• El rendimiento se satura para un número pequeño de procesadores.

• Si los procesadores disponen de memorias locales caché se puede solventar el problema.

21

Sistemas de memoria compartida

Sistemas de memoria compartida

Redes de barras cruzadas.

• Utiliza una red de conmutadores.

• Conecta p procesadores con b módulos de memoria.

• El número total de conmutadores requeridos es Θ(pb).

• Conforme crece p, la complejidad de la red aumenta según Ω(p2).

• Por tanto no son muy escalables en términos de coste.

SwitchesProcessors

Memories

Redes de interconexión multietapa.

Es un tipo de red intermedia en términos de escalabilidad en costo y rendimiento.

Sistemas de memoria compartida

Conecta p elementos con otros p elementos.

000001

110111

000001

110111

010011

Inputs100101

010011Outputs100101

2 ´ 2 switch elements (straight-through or crossover

connections)

• Los sistemas UMA no escalan bien– Los sistemas basados en bus se pueden saturar.– Una red de barras cruzadas grande puede ser muy cara.

• Problema de la coherencia de caché– Puede haber copia de una variable en varias cachés– Cuando un procesador escribe puede no ser visible al

resto– Es necesario asegurar la visibilidad o la coherencia de

caché

Problemas de los sistemas UMA

Ejemplo NUMA: SGI Origin 2000

• En esta arquitectura, el computador paralelo es esencialmente una colección de procesadores secuenciales, cada uno con su propia memoria local, que pueden trabajar conjuntamente.

• Cada nodo tiene rápido acceso a su propia memoria y acceso a la memoria de otros nodos mediante una red de comunicaciones, habitualmente una red de comunicaciones de alta velocidad.

• Los datos son intercambiados entre los nodos como mensajes a través de la red.

Comp.Paralelos con memoria distribuida

M

P

Network

P P P P P

MMMM M

Redes de ordenadores

• Una red de ordenadores, especialmente si disponen de una interconexión de alta velocidad, puede ser vista como un multicomputador de memoria distribuida y como tal ser utilizada para resolver problemas mediante computación paralela.

Comp.Paralelos con memoria distribuida

M

P

Network

P P P P P

MMMM M

Topologías de interconexión

•Conexión completa

•Estrella

•Árbol

Topologías de interconexión estáticas

•Línea / Anillo

•Matriz 2-D (malla) / Toro

•Hipercubo

Topologías de interconexión

Topologías de interconexión

30

Topologías de interconexión

31

Topologías de interconexión

32

Topologías de interconexión estáticas

• Resumen de características

Topologías de interconexión

34

.

Clusters de ordenadores

Modelos de Sistemas Paralelos

Conexión de ordenadores de uso convencional

(monoprocesador o multiprocesador) mediante

red de interconexión de alta velocidad donde el

conjunto se ve como un único ordenador.

Ventajas sobre multiprocesador normal Disponibilidad a bajo costo de potentes

estaciones de trabajo y PCs Fácil incorporación de últimos avances en CPUs

y redes Usa software ya existente.

Inconvenientes: cada vez menos Se tiende a mejorar con

avances software/hardware de redes

.

Procesadores Gráficos (GPUs)

Modelos de Sistemas Paralelos

CPU

GPU*HOST

DEVICE

PCI-E

DRAM DRAM*

MultiprocesadorRegistrosMemoria compartid

MultiprocesadorMultiprocesador

Memoria compartida

MultiprocesadorRegistrosMemoria compartida

DRAM* Memoria dinámica de acceso aleatorioGPU* Unidad de procesamiento gráfico

.

Procesadores Gráficos (GPUs)

Modelos de Sistemas Paralelos

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)

La memoria global es 500 veces más lenta que la memoria compartida.

.

Procesadores Gráficos (GPUs)

Modelos de Sistemas Paralelos

Fermi (GT400)

512 cores

16 multiprocs.

Cada multiprocs. con 32 cores y 16 Unidades de doble precisión.

64 KB. de SRAM a repartir entre memoria compartida y Cache L1.

.

Modelo abstracto. MultiComputador ideal• Modelo simple y realista

• Nodos secuenciales (CPU + memoria) enlazados con red de interconexión.

• Cada nodo ejecuta su propio programa: podría acceder a memoria local o

enviar/recibir mensajes (comunicación remota).

• Costo de comunicación es independiente de localización del nodo y tráfico en la red,

pero depende de la longitud del mensaje.

• Costo (acceso a memoria local) < Costo (acceso remoto).

• Localidad: indica proporción costo accesos locales y remotos.

Modelos de Sistemas Paralelas

.

Definición y Propiedades deseables

Modelo de Progr. Paralela → Mecanismo para el desarrollo de

programas paralelos eficientes

• Debe permitir describir concurrencia, ocultar complejidad máquina paralela

(abstracción), obtener programas que den buen rendimiento sobre diferentes

máquinas (portabilidad) y usando técnicas de diseño modular.

• Escalabilidad: Los programas desarrollados deben poder ejecutarse de forma

eficiente sobre un número creciente de procesadores.

• Independencia de la asignación : Diseño e implementación de las tareas es indep.

del número de procesadores físicos sobre los que se ejecutarán.

• Modelo de costo: estimaciones fiables del costo de un programa en etapas

tempranas del desarrollo.

Modelos de Programación Paralela

.

Paso de Mensajes

• Computación paralela = una o más tareas concurrentes. Número de tareas variable.

• Tarea = programa secuencial + memoria local + identificación dentro del contexto de comunicación

• Correspondencia con Multicomputador

Modelos de Programación Paralela

PROGRAMA

ACCIONES BÁSICAS

• Envía mensaje

• Recibe mensaje

• Crea tarea

• Destruye tarea

asíncrono

síncrono

.

Modelos de Programación ParalelaPaso de Mensajes (2) Envío/Rec. a tareas nombradas

SEND (valor, P0)

RECEIVE (buffer, P1)

Mecanismos para diferenciar mensajes

Práctica: Modelo estático SPMD (Single Program Multiple Data) Cada tarea ejecuta mismo programa sobre diferentes datos

Amplio rango de aplicaciones.

Superar limitaciones SPMD Mecanismos para ejecución de programas SPMD por grupos de procesadores

MPMD (Multiple Program Multiple Data)

Mayor difusión Válido para un amplio rango de arquitecturas (MIMD).

.

Paso de Mensajes (3)Enfoque más común para Programación paralela con paso de

mensajes• Lenguaje secuencial de alto nivel (C, C++) + Biblioteca de paso de mensajes (MPI):

La biblioteca ofrece procedimientos externos para envío/recepción de mensajes entre

procesos.

Procedimientos básicos• Creación de procesos separados para ejecución sobre diferentes máquinas

• Envío y recepción de mensajes

Modelos de Programación Paralela

.

Memoria compartida Tareas/Hebras comparten un espacio de

memoria común donde leen y escriben asíncronamente.

Sincronización y Comunicac. mediante variables. compartidas

Mecanismos control acceso: cerrojos, semáforos, monitores, etc.

Simplifica el desarrollo de programas

• No es necesario especificar explícitamente la comunicación de datos

Eficiente sólo en arquitecturas de memoria compartida, difícil razonar sobre la localidad y escribir programas deterministas.

Modelos de Programación Paralela

F O R K

J O I N

Hebra maestra

Región paralela

F O R K

J O I N

Hebra

maestra

Región paralela

Hebra

maestra

MEMORIA

Procesador Procesador Procesador Procesador

OpenMP: Notación basada en memoria compartida