SESION 04_2
SuperComputadoras. Redes P2P
Computación Distribuida
Ing. Rolando Navarro Jara
SuperComputadoras
Una computadora que lidera el mercado en términos de capacidad de procesamiento, velocidad de cálculo.
La velocidad de cálculo se mide en FLOPS (FLoating Point Operations Per Second).
Floating Point es la manera de representar números reales en una computadora.
Usualmente los números reales se representan por: significant digits × baseexponent
Floating Point Operation es una operación matemática entre floating point numbers.
En la actualidad, el LINPACK Benchmark es la documentación oficial que se usa para determinar la velocidad de las
computadoras: [Link]
Para identificar a los líderes del Mercado de supercomputadoras se debe de visitor la web TOP500:
[Link]
SuperComputadoras
Líderes en SuperComputadoras – Noviembre 2012
SuperComputadoras – Evolución Ley de Moore
Arquitectura SuperComputadoras – Computación paralela
El arte de la programación en paralelo es identificar
que parte del problema puede ser paralelizado.
La computadora es dividida en nodos.
Cada nodo posee multiples procesadores.
Cada procesador tiene acceso a la memoria que le
corresponde al nodo al cual pertenece.
Cada procesador puede hacer uso del total de la
memoria del nodo al cual pertenece.
El lenguaje de progranmación más empleado es
FORTRAN.
Herramientas que se emplean son del tipo:
Distribuited Memory o Shared Memory.
Introducción MPI
Supongamos que se tiene un problema matemático
que consiste en obtener el área de la f(x) y nuestro
supercompuytador consta de 4 procesadores. Lo
primero que se debe de realizer es dividir la f(x) en 4
secciones para paralelizar la solución.
En programación paralela cada una de las secciones
se conoce como RANK.
Notar que cada rank resuelve una parte del problema.
Para determinar el rsultado final es necesario
comunicar el resultado de cada rank a un único rank.
Esto se logra a través del Passing Message.
Consideraciones en MPI
• Which processor is sending a message? (which rank)
• Where is the data on the sending processor? (which
variable)
• What kind of data is being sent? (e.g., integer, real,
…)
• Hey, what do you have for ?
• How much data is being sent? (e.g., a single integer,
how many array elements)
• Which processor(s) is (are) receiving the message?
(which rank)
• Where should the data be left on the receiving
processor? (which variable)
• How much data is the receiving processor prepared
to accept? (e.g., how many array elements)
Sistemas distribuidos
Es una colección de computadoras separadas físicamente y
conectadas entre sí por una red de comunicaciones
distribuida que usan un software para conseguir un objetivo
en común
Cada máquina posee sus componentes de hardware y
software que el usuario percibe como un solo sistema (no
necesita saber qué cosas están en qué máquinas).
El usuario accede a los recursos remotos de la misma
manera en que accede a recursos locales, o un grupo de
computadores.
Sistemas distribuidos – características
Concurrencia.- Esta característica de los sistemas distribuidos permite que los recursos disponibles en la red
puedan ser utilizados simultáneamente por los usuarios y/o agentes que interactúan en la red.
Carencia de reloj global.- Las coordinaciones para la transferencia de mensajes entre los diferentes
componentes para la realización de una tarea, no tienen una temporización general, esta más bien distribuida a
los componentes.
Fallos independientes de los componentes.- Cada componente del sistema puede fallar independientemente,
con lo cual los demás pueden continuar ejecutando sus acciones. Esto permite el logro de las tareas con mayor
efectividad, pues el sistema en su conjunto continua trabajando.
Sistemas distribuidos – ventajas
Economía: Buena relación rendimiento/coste debido a los avances en tecnología de microprocesadores y de
comunicaciones.
Alto rendimiento: Procesamiento paralelo.
Soporte de aplicaciones inherentemente distribuidas. Por ejemplo: empresas multinacionales
Capacidad de crecimiento: Escalabilidad.
Fiabilidad y disponibilidad: Tolerancia a fallos.
Carácter abierto y heterogéneo: Necesidad de estándares de interoperabilidad.
Compartir recursos y datos.
Sistemas distribuidos – desventajas
Falta de experiencia en el diseño e implantación y uso de software distribuido
Tipos de sistemas operativos, lenguajes de programación y aplicaciones adecuados
Conocimiento de los usuarios
Redes de Comunicación
Pérdida de mensajes.
Saturación de la red
Dependencia de la red baja (saturación y/o perdida de paquetes)
Compartir y Seguridad
Si las personas tienen acceso a los datos en todo el sistema, entonces también a otros que no tiene nada que ver.
Aspectos del diseño en los Sistemas Distribuidos
Para el usuario es transparente la estructura
TRANSPARENCIA
interna.
FIABILIDAD Garantizar la disponibilidad y coherencia.
RENDIMIENTO Mejorar la eficiencia versus un Sistema centralizado
CAPACIDAD DE RENDIMIENTO Evitar ser el cuello de botella.
FLEXIBILIDAD Facilidad al cambio.
TRANSPARENCIA
Acceso: Manera de acceder a recurso local igual que a remoto.
Posición: Se accede a los recursos sin conocer su localización.
Migración: Recursos pueden migrar sin afectar a los usuarios.
Concurrencia: Acceso concurrente no afecta a los usuarios.
Replicación: La existencia de réplicas no afecta a los usuarios.
Fallos: La ocurrencia de fallos no afecta a los usuarios.
Crecimiento: El crecimiento del sistema no afecta a los usuarios.
Heterogeneidad: Carácter heterogéneo no afecta a los usuarios.
FIABILIDAD
1. Disponibilidad:
Teóricamente: OR-lógico de sus componentes.
En ciertos casos: AND-lógico de varios componentes.
Mecanismos: redundancia y evitar componentes críticos.
2. Coherencia:
La fiabilidad está relacionada con la seguridad
Se dificulta con caching y redundancia
Heterogeneidad: Carácter heterogéneo no afecta a los usuarios.
RENDIMIENTO
1. Servicio multiusuario: Rendimiento no peor que un sistema
centralizado.
2. Ejecución paralela de aplicaciones: Rendimiento proporcional a
procesadores empleados.
3. Factores:
Uso de esquemas de caching: Intentar que muchos accesos
se hagan localmente
Uso de esquemas de replicación: Reparto de carga entre
componentes replicados
En ambos casos: Costo de mantener la coherencia
CAPACIDAD DEL RENDIMIENTO
Diseño de un sistema distribuido debe evitar “cuellos de botella” como: Componentes
centralizados, tablas centralizadas y algoritmos centralizados
Características deseables en un algoritmo distribuido:
Ninguna máquina tiene información completa del estado del sistema
Las decisiones se basan sólo en información disponible localmente
El fallo de una máquina no debe invalidar el algoritmo
No debe asumir la existencia de un reloj global
Flexibilidad
FLEXIBILIDAD
Debe ser adaptable: Facilidad para incorporar cambios y extensiones al sistema
Uso preferible de arquitectura microkernel
Importancia de sistemas abiertos:
Sus interfaces y protocolos deberían ser públicos.
Contrario a ”tecnología propietaria”.
Uso de estándares siempre que sea posible.
Disponibilidad de su código fuente (libremente o no).
Regulación por parte de un colectivo (usuarios u organizaciones) y no por particulares (fabricantes).