S01: Introduction · • Los sistemas UMA no escalan bien –Los sistemas basados en bus se pueden...
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