• 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