Tema1

Anuncio
• Mayor demanda de capacidad computacional (Grand
Challange): Problemas de ciencia e ingeniería, de gran impacto
cuya solución es difícilmente alcanzable en un tiempo razonable
con los computadores actuales.
•
Características: Generación de datos complejos, simulaciones
realistas, visualizaciones complejas de los resultados, ...
•
Necesidades: Computadores más rápidos, con más memoria y
más espacio de disco
•
Ejemplos
– Aplicaciones requieren mayor potencia:
• Grandes Servidores: Datos, aplicaciones o internet. Google.
• Aplicaciones científicas e ingeniería:
– Búsqueda de partículas elementales
– Decodificación del genoma
– Modelado del clima global
• Tolerancia a fallos. Alta disponibilidad.
• Aplicaciones embebidas. DSPs
GOOGLE
•
•
Paralelismo multinivel
– A nivel de petición: Se resuelven en paralelo múltiples peticiones independientes
– A nivel de término de búsqueda: Cada término de búsqueda puede chequearse
en paralelo en los servidores de índice
– A nivel de índice: El índice de los documentos está dividido en piezas que
comprenden una selección elegida aleatoriamente de documentos
Principios de diseño de Google
– Fiabilidad hardware: Existe redundancia a diferentes niveles, como alimentación
eléctrica, discos magnéticos en array (RAID), componentes de alta calidad, …
– Alta disponibilidad y servicio: Mediante la replicación masiva de los servicios
críticos
– Preferencia en precio/rendimiento frente a rendimiento pico: Múltiples servidores
hardware de bajo coste configurados en cluster
– PC convencionales: Uso masivo de PCs convencionales frente a hardware
especializado de alto rendimiento
GOOGLE: Infraestructura
•
•
Múltiples clusters
– 2 en Silicon Valley (California)
– 1 en Virginia
Hardware global
– Más de 6000 PCs y 12000 discos magnéticos (1 PB)
– PCs: desde 1xIntel Celeron a 533 MHz hasta 2xIntel Pentium III a 1.4
GHz, con 256
– MB DRAM
– Discos duros: 1 o varios discos IDE en cada PC, de 40 o 80 GB cada
uno
– Los PCs se organizan en racks
– La red entre PCs dentro de cada rack es fast Ethernet (100 Mbps)
– La red entre PCs de racks diferentes es Gigabit Ethernet
– El sistema operativo es Linux
GOOGLE: Una consulta
•
•
•
•
•
Contactar (DNS) para mapear www.google.com a una particular IP.
Múltiple distribución geográfica de clusters (varios miles de PCs en cada
uno) para evitar perdida servicio ante fallos en centros de datos (incendio,
terremoto, etc).
Balanceo de carga entre los clusters en función parámetros como cercanía
al cliente y disponibilidad de otros clusters.
Asignación de consulta a un solo cluster que la antederá.
Se asigna un GWS (Google Web Server) que coordinará la consulta y
devolverá el resultado al cliente.
GOOGLE: Arquitectura de una consulta
GOOGLE: Ejecución de la consulta
•
•
Fase 1: Servidores de índices.
– Realiza un mapeo entre palabras buscadas e identificadores de
documentos (hit lists).
– Es un proceso ALTAMENTE PARALELIZABLE.
– División del índice en fragmentos.
– Cada fragmento es consultado por un grupo de máquinas propio.
– Cada consulta se asigna a una máquina de ese grupo mediante
balanceo de carga intermedio.
– Alta disponibilidad ante caídas parciales.
– Resultado: Lista ORDENADA de documentos.
Fase2: Servidor de Documentos
– Realiza un mapeo entre los identificadores de documentos y los
documentos en sí.
– Se utiliza la misma técnica de división y paralelización que en la fase
anterior.
GOOGLE: Replicación-Tolerancia a fallos
•
Sistema de sólo lecturas. Pocas actualizaciones.
•
Se transforma una gran búsqueda en varias búsquedas menores.
•
Añadir máquinas a los grupos incrementa la capacidad de servicio.
•
Aumentar el número de fragmentos acomoda el crecimiento de los índices
•
Consecuencia: Velocidad CPU individual no afecta de forma importante en
la eficiencia del sistema (incrmentar CPUs o fragmentos).
•
Máquinas que incrementan la productividad. No es tan importante la tiempo
respuesta individual.
GOOGLE: Principios fundamentales
•
Fiabilidad (reliability) software. Se cambia redundancia en SAIS, RAID,
componentes de alta calidad, etc por software tolerante a fallos.
•
Replicación a todos los niveles para mayor fiabilidad.
•
Preferencia en precio/rendimiento frente a rendimiento pico. Generación de
CPUs que proporciona mejor precio por unidad de rendimiento no la CPU
con mejor rendimiento y alto precio.
•
Utilizar PCs reduce el coste computacional.
GOOGLE: Principios cuantitativos
•
•
•
•
•
•
Cluster de 176 2-GHz Xeon CPUs con 176 Gbytes de RAM y 7 Tbytes de
disco cuesta $278,000.
Servidor multiprocesador de ocho 2-GHz Xeon CPUs, 64 Gbytes de RAM, y
8 Tbytes disco cuesta $758,000.
El multiprocesador es tres veces mas caro que el cluster pero con 22 veces
menos CPUs, tres veces menos RAM y similar capacidad de disco.
El coste del multiprocesador se debe a la interconexión interna y la
fiabilidad.
Administrar miles de PCs puede suponer un coste. Se asumen
herramientas para instalar y actualizar software de PCs con idéntica
configuración.
Coste de monitorizar cluster no incrementa en demasía.
Modos de mejorar el rendimiento ?
Modos de mejorar el rendimiento
• HW más rápido
• Optimizar código y algoritmos
• Procesar de forma paralela
Limitaciones de los computadores secuenciales?
Modos de mejorar el rendimiento
• HW más rápido
• Optimizar código y algoritmos
• Procesar de forma paralela
Limitaciones de los computadores secuenciales
• Limitaciones físicas del HW (Velocidad del reloj, de rotación de los discos,
etc.)
• Segmentación, ILP (superescalaridad, ejecución fuera de orden, …), no son
suficientes para aplicaciones límite, y no son escalables
ARQUITECTURAS ESCALABLES (¿Qué pedimos?)
•
Capacidad de un sistema para aumentar sus recursos con el fin de soportar una mayor
demanda de rendimiento y funcionalidad, y/o disminuir sus recursos para reducir costes.
•
La potencia computacional del sistema debe incrementarse de forma proporcional al
aumento en recursos. De forma ideal, debiera observarse un aumento de capacidad
computacional próximo a un factor N cuando se mejoran los recursos en ese mismo
factor.
•
El coste de escalado debe ser razonable. Típicamente, si el escalado se produce en un
factor N, se espera que su coste sea un factor entre N y N log N.
•
Los componentes ya existentes, hardware y software, deben poderse reutilizar cuando se
proceda al escalado del sistema (escalabilidad incremental).
ARQUITECTURAS ESCALABLES: RECURSOS
•
Escalabilidad en los Recursos
– Escalabilidad en Tamaño
• Aumento del número de procesadores.
• Debe mejorarse el susbsistema de comunicaciones, incluyendo la red
de interconexión.
• Limitación debida a la programación y la comunicación.
– Escalabilidad en Otros Recursos
• Aumento en la capacidad de memoria, de cache, de disco, …
– Escalabilidad en Software de Sistema
• Versión mejorada del S.O.
• Compiladores con optimizaciones más eficientes.
• Librerías científicas/ingeniería más eficientes.
• Entornos de programación más avanzados.
ARQUITECTURAS ESCALABLES: APLICACIONES
•
Escalabilidad en las Aplicaciones
– Las aplicaciones deben ser escalables, esto es, ejecutarse con un
rendimiento proporcionalmente mejor en un computador escalado
– Escalabilidad en Tamaño del Computador
• Indica la mejora en rendimiento de la aplicación cuando se añaden
procesadores al computador.
• Lo que se espera es que el factor de proporcionalidad sea similar (factor
de aumento de procesadores similar al factor de mejora del rendimiento
de la aplicación).
• Muchas veces las aplicaciones dependen de otros recursos, como
capacidad De memoria, capacidad de E/S, ancho de banda con
memoria o E/S, etc.
– Escalabilidad en Tamaño del Problema
• Indica el comportamiento de la aplicación cuando aumenta el tamaño de
los datos a procesar.
ARQUITECTURAS ESCALABLES: TECNOLOGÍA
Es la capacidad de adaptación a cambios en la tecnología
• Escalabilidad Temporal (Generación)
– El sistema debe acomodar con el menor cambio posible, así como mejorar su
rendimiento correspondientemente, cuando se sustituyen componentes por otros de
una generación posterior (tanto hardware como software).
– Es habitual que una parte crítica sea el software. Un cambio de generación del
sistema suele conllevar nuevas inversiones en software de sistema y rediseño de las
aplicaciones de usuario.
•
Escalabilidad Espacial
– Indica el comportamiento del sistema frente a cambios de orden espacial, esto es, de
ocupar un espacio limitado a ocupar una habitación, un edificio, múltiples edificios, …
•
Escalabilidad en la Heterogeneidad
– Capacidad del sistema a integrar componentes hardware y software de diferentes
fabricantes.
– Esta escalabilidad se favorece usando arquitecturas abiertas.
– En el caso de software, se denomina portabilidad.
Von Newmann:
•Programa almacenado
•Operandos escalares
•Ejecución secuencial del
programa
Paralela:
• Clasificación de Flynn:
Flujos de instrucciones y datos
–
–
–
–
SISD (Single Instruction, Single Data)
SIMD (Single Instruction, Multiple Data)
MIMD (Multiple Instruction, Multiple Data)
MISD (Multiple Instruction, Single Data)
• Clasificación de Flynn:
• Ejemplo de mejora de las prestaciones en un bucle
!
• Tipos paralelismo:
– De datos: Misma función, instrucción, etc ejecuta paralelo
con datos diferentes.
– Funcional: Iguales o distintas funciones, bloques o
instrucciones se ejecutan en paralelo.
• Nivel Instrucciones (ILP)
• Nivel de Bucle
• Nivel de Funciones
• Nivel de Programas
"
• $ %
"#
#"
• & '()"
• # ')" "
#"#
• # #()"
(#$ )'"
• # #()"
" ')" *"
# +'
*$ )
' ---
",+ ($ ) + (
) & '()"
# ')" "
(
*#
+*#
(#
#$$
+
* ' )
)"
Clasificación sistemas multiprocesadores
• Función organización sistema memoria
– Memoria compartidas (SM). Multiprocesadores.
• Espacio direcciones compartido.
– Memoria distribuida (DM). Multicomputadores.
• Espacio direcciones privado. Memoria local.
.
• MPP (Procesadores paralelos masivos)
– Número de procesadores >100
– Multiprocesadores o multicomputadores
– Red propietaria
– Software administración trata al conjunto como
una máquina.
– Sistemas basados en procesadores vectoriales
• Cluster (Cluster Beowulf)
– Computador constituido por conjunto
computadores completos.
– Red comercial
– Nodos:
•
•
•
•
Componen un recurso de cómputo único.
Son utilizables y adquiribles individualmente.
Varios procesadores SMP.
S.O. Propio + herramientas de programación aplicaciones
paralelas (MPI/PVM) y administración.
– Montados: Usuarios, empresas o fabricantes.
• Constelaciones
– Clusters con nodos SMP, número nodos < número
procesadores nodo.
– Modelo programación basado en hebras (tipo OpenMP)
• GRID
– Colección de recursos geográficamente distribuidos
conectados mediante infraestructura de telecomunicaciones
– Compuesto por sistemas independientes y autónomos con
gestor propio (Cluster: gestión centralizada)
– Configuración dinámica en el tiempo
– Compartición de recursos a gran escala
• Computadores uso personal
– PCs sobremesa, portátiles y estaciones trabajo.
– Nivel más bajo.
– 1 procesador o SMP de 2.
• Servidores
– Ficheros, impresión, base de datos, web, aplicaciones,
potencia de cálculo,...
• Supercomputadores
– Usados en aplicaciones HPC (aplicaciones de cálculo
intensivo). www.top500.org.
– Multiprocesadores, clusters con redes comerciales y
multicomputadores con redes propias.
•
•
•
•
•
•
•
•
Punto de Partida
Modos de programación
Herramientas
Comunicación
Estilos de Programación
Crear-Terminar procesos o hebras
Estructuras de programas paralelos
Proceso de paralelización
• Punto de Partida
– Código secuencial resuelva problema.
– Definición aplicación
– Trabajo ya realizado
• Modos de programación
– SPMD: Único programa, múltiples datos
• Compilación del mismo programa
• Cada copia usa conjunto datos diferente y se ejecuta en un
procesador diferente
• switch(identificador)
• Más utilizado
– MPMD: Múltiples programas, múltiples datos
• Compilación de programas diferentes
• Cada unidad trabaja con un conjunto de datos y se asigna un
procesador diferente
– Sistemas híbridos: Maestro-Esclavo (if then else)
• Herramientas
– Tareas a realizar:
•
•
•
•
•
Crear y terminar procesos
Localizar paralelismo
Distribuir carga trabajo entre procesos
Comunicación y sincronización entre procesos
Asignación de procesos a procesadores
– Cómo se realizan dichas tareas.
• Programador: Forma explícita
• Herramienta: Forma implícita
• Herramientas
– Alternativas obtención programas paralelos:
• Bibliotecas de funciones
– Lenguaje secuencial (C o Fortran) + Biblioteca funciones
– Bajo nivel: Programador tareas explícitamente
– Ejemplos: Pthread, MPI, PVM y OpenMP
• Lenguajes paralelos y directivas compilador
– Nivel abstracción superior: Construcciones propias del
lenguaje, Directivas del compilador y funciones
– Ejemplos: HPF y Occam
• Compiladores paralelos
– Nivel alto de abstracción: Extraen paralelismo da datos y
funcional a partir de programa secuencial directamente.
– Analizan dependencias: RAW, WAW, WAR entre bloques
de código (iteraciones)
• Comunicación
• Comunicación: Uno a todos
• Comunicación: Uno a todos
– Difusión: Encontrar en un misma imagen diferentes siluetas
u objetos.
– Dispersión: Búsqueda de ciertas palabras en un texto
grande que se divide. Aplicar filtro a una imagen
dividiendola.
• Comunicación: Todos a uno
• Comunicación: Todos a uno
– Reducción: Sumar elementos de una lista para integración
numérica. Recuento del número de palabras encontrado en
un texto.
– Acumulación: Recomposición de una imagen tras aplicar el
filtro.
• Comunicación: Múltiple uno a uno
• Comunicación: Múltiple uno a uno
– Rotación: En algoritmos de ordenación
– Baraje: Transposición de matrices
• Comunicación: Todos a todos
• Comunicación: Servicios compuestos-recorrido
• Comunicación: Funciones en MPI
• Comunicación
– Funciones explícitas para estos esquemas de comunicación
incrementa eficiencia: tiempo de programación y rapidez de
ejecución.
• Estilos de Programación
– Paso de mensaje
•
•
•
•
•
•
•
•
•
•
Multicomputadores con su espacio de direcciones.
Llevan datos de un espacio a otro.
Duplicación de datos en sistema de memoria.
Lenguajes de programación: ADA u Occam
Bibliotecas funciones: MPI y PVM
Funciones básicas de comunicación: Send(Proceso
destino,Variables a enviar), Receive(Proceso fuente,Variables
donde guardar).
Transmisiones síncronas y asíncronas.
Send-Receive síncronos-> Rendezvous ADA.
MPI, PVM: Asíncrona (Send no bloqueante, Receive
bloqueante) es más usada. También implementaciones
Receive no bloqueante y comunicaciones colectivas.
MPI: Tb comunicación síncrona
• Estilos de Programación
– Variables compartidas
• Multiprocesadores con espacio de direcciones compartido.
• No transferencia explícita de datos. Lectura/Escritura en
memoria.
• Lenguajes de programación: ADA95 y Java
• Bibliotecas funciones: POSIX-Thread u OpenMP
• Lenguaje secuencial más directivas compilador: OpenMP.
• Variables compartidas: Directo en hebras mismo proceso
(comparten espacio direcciones). Entre procesos se necesitan
llamadas al sistema especiales.
• Sincronización: Cerrojos, semáforos, variables condicionales,
monitores u otras construcciones que implementen secciones
críticas o acceso en exclusión mutua.
• Estilos de Programación
– Paralelismo de datos
• Datos organizados en estructuras: vectores o matrices
• Compilador genera las sincronizaciones
• Lenguajes de programación: C* (Para procesadores
matriciales)
• Procesadores matriciales ya no aparecen en TOP500
• Compiladores para paralelismo de datos: Fortran 90 y HPF.
• Crear-Terminar procesos o hebras
– Herramientas programación paralela: diversos métodos para
crear-destruir procesos-hebras
– Creación dinámica:
• En tiempo de ejecución (Procesos crear otros procesos o
hebras)
• Número procesos-hebras se decide en tiempo de ejecución
• Penalización de tiempo
– Creación estática:
• Previa a la ejecución
• Número se conoce antemano
• Crear-Terminar procesos o hebras
– Alternativas desde el punto de vista programador:
• Creación no simultánea y terminación síncrona
– Padre espera fin hijo (fork-join)
• Creación simultánea y terminación asíncrona
– En ejecución se permite sincronización entre sí y con el padre
• Creación no simultánea y terminación asíncrona
• Creación simultánea y terminación síncrona
– Padre espera finalización de todos los hijos (forall{})
/
• Estructuras de programas paralelos
–
–
–
–
Master-slave (Dueño-esclavo) (MPMD-SPMP)
Paralelismo/descomposición de datos (SPMD)
Divide y vencerás (SPMD)
Segmentada o flujo de datos (MPMD)
• Estructuras de programas paralelos
• Estructuras de programas paralelos
• Estructuras de programas paralelos
• Estructuras de programas paralelos
• Estructuras de programas paralelos
• Proceso de paralelización
–
–
–
–
Descomponer aplicación en tareas independientes
Asignar tareas a proceso o hebras
Redactar código paralelo
Evaluar prestaciones
• Proceso de paralelización
• Proceso de paralelización
–
–
–
–
Asignar tareas a proceso o hebras
SMP: Hebras (Más eficiente)
Clusters SMP-Constelaciones: Procesos y hebras
S.O. y Herramientas de programación debe soportar hebras
y procesos.
– Asignación carga trabajo y tipos arquitecturas:
• Homogéneas-Hereogéneas (distintios tipos procesadores)
• Uniforme y no uniforme.
• Asignación tareas a procesadores: Estática o dinámica
• Proceso de paralelización
– Redactar código paralelo. Depende:
• Estilo programación (variables compartidas, paso de mensajes,
paralelismo de datos)
• Modo de programación SPMD-MPMD
• Del punto de partida
• De la herramienta software utilizada: lenguajes, directivas,
bibliotecas o compilador
• Estructura
• Ejemplo: Paralelizar cálculo número pi.
– Problema de integración numérica: Área entre 0 y 1 de la
derivada del arco tangente.
– Dividir intervalo en subintervalos. Aproximar el área de cada
subintervalo mediante un rectángulo.
– El error disminuye cuanto mayor es el número de
subintervalos.
• Ejemplo: Paralelizar cálculo número pi.
• Ejemplo: Paralelizar cálculo número pi.
• Ejemplo: Paralelizar cálculo número pi.
• Ejemplo: Paralelizar cálculo número pi.
• Introducción
• Benchmarks
• Ganancia. Escalabilidad
Introducción
• Medidas de prestaciones principales:
– Tiempo de ejecución (respuesta)
– Productividad (throughput)
• Medidas adicionales:
– Funcionalidad: Orientación arquitectura. (Bases de datos,
servidores de internet, aplicaciones científicas...)
– Alta disponibilidad (high availability). Tiempo reducido de
inactividad ante fallos. Requiere redundancia en HW y SW
especializado.
Introducción
• Medidas adicionales:
– RAS.
• Fiabilidad (reliability). Proporcionar resultado esperado.
Influyen errores de diseño, fabricación y desgaste. 99%
funciones bien 1 año.
• Disponibilidad (availability). Penalización ante fallos.
• Servicialidad (serviceability). Facilidad para realizar el
mantenimiento.
– Tolerancia a fallos. Capacidad de un sistema de seguir
funcionando ante un fallo. Genera alta disponibilidad.
– Expansibilidad. Posibilidad de expandir el sistema
modularmente.
– Escalabilidad. Incremento de prestaciones al añadir recursos.
– Consumo de potencia. Refrigeración.
Introducción
• Eficiencia: Evalúa si las prestaciones ofrecida por un
sistema se acercan a las que idealmente debiera
ofrecer debido a sus recursos.
• Medidas prestaciones realizadas por terceros:
– Conjunto entradas representativos. Evaluación de los
distintos componentes del sistema. Reproducibles.
– Usar entradas aceptadas por fabricantes, vendedores y
usuarios.
Benchmarks para computadores paralelos.
• Medir prestaciones:
– Aplicaciones paralelas: Servidores de bases de datos, webs,
científicas,...
– Realizaciones del sistema: Paso de mensaje o variables
compartidas
– Diferentes partes de la arquitectura: Sistema de
comunicación, procesador, memoria ,...
Difícil encontrar benchmarks.
Benchmarks para computadores paralelos.
• Bajo nivel o microbenchmarks. Evalúan prestaciones de los
distintos componentes de la arquitectura y software: Procesador,
memoria, E/S, comunicación send-receive, sincronización, etc.
• Núcleos. Trozos de códigos muy utilizados en aplicaciones:
multiplicación de matrices, resolución sistemas ecuaciones, ...
• Sintéticos. Trozos de código sin obtener resultados significativos.
• Programas reales. Bases de datos, servidores, etc.
• Aplicaciones diseñadas. Intentan acercarse a las aplicaciones
reales.
Benchmarks para computadores paralelos.
• Aplicaciones científicas: Bechmarks implementados para MPI
(paso mensajes) y OpenMP (variables compartidas). 1994 SPEC
(Standard Performance Evaluation Corporation) grupo HPG.
• Aplicaciones comerciales:
– Bases de datos: Procesamiento de transacciones (OLTP). Gestión
de muchas peticiones simultáneas. Mucha multiprogramación y
cambios de contexto.
– Sistemas de soporte de decisiones (DSS).
– Análisis de tendencias (Data mining)
– Servidores web, correo, comercio electrónico
Consorcio TCP: benchmarks para las bases de datos más
conocidas.
Ganancia en prestaciones
Ganancia en prestaciones
0 1=
0 1
=
01
( )
( ) = ( )+ ( )
Ts = Tiempo de ejecución secuencial.
Tc = Tiempo de cómputo
To = Tiempo de penalización:
– Tiempo de comunicación sincronización procesos.
– Tiempo crear-terminar procesos
– Tiempo de ejecución operaciones añadidas al paralelizar
Ganancia en prestaciones
• Grado de paralelismo de una aplicación: Número máximo
de tareas independientes que se pueden ejecutar en paralelo.
• Ganancia en función del número de procesadores
• Tiempo de ejecución esperado:
• Ganancia lineal: p
( )=
Benchmarks para computadores paralelos.
Ganancia en prestaciones
• Eficiencia: Prestaciones programa paralelo respecto prestaciones
máximas esperadas.
(
•
2
)=
0 2 1
0 2 1
=
02 1
Al aumentar el número de procesadores nos interesa mantener
constante la eficiencia.
Ganancia en prestaciones
=
≤
0 1=
≤
0 2 1=
≥
0 2 1=
0 2 1=
0 2 1=
(
0 2 1
2 )+ ( 2
0 2 1
=
+
)
(
=
2
+
)
(
2
)
=
−
(
2
)
Ganancia en prestaciones
• Ley de Amdahl: La ganancia en prestaciones al aplicar una
mejora a un sistema está limitada por la parte o fracción del sistema
que no utiliza dicha mejora.
0 1=
0 1
=
+0 − 1
=
+ 0 − 1
Descargar