Tema 2: Sistemas Computacionales Conjunto de elementos que interaccionan con una computadora ofreciendo una salida a una entrada ( programa ). Programa Input Condiciones del problema Output Solución del problema
Qué es un problema computacional? 3x + 2y z = 1 x + 4y 2z = 3 x + y + z = 2 Tiempo de duración. Utilización de recursos. Y para un sistema lineal de ecuaciones n x n? Solución? Algoritmos? Complejidad Computacional
Complejidad Computacional: Medida de la utilización de recursos (número de operaciones) necesarias para resolver una tarea. Por ejemplo, pensemos en resolver el sistema lineal anterior para cada punto en un volumen de 256x256x256. Clasificación: Problemas de orden polinómico (n). Problemas de orden exponencial (n^(log(n)). Ejemplos: Suma binaria de x1...xm1, y1...ym2 con operaciones proporcional a n=m1+m2. Problemas con grafos.
Resolver problemas de alta complejidad: Necesidad de computación de altos recursos (high performance computing). Definición: Computación con alta velocidad de procesado. Alta capacidad de memoria. Actúa sobre una densidad alta de datos. Es necesaria la computación a alta velocidad? Física de altas energías: Requieren muchos ciclos de computación para describir modelos atómicos de interacción, etc. Diseño de chips. Simular las respuestas y características de los semiconductores. Animación por computador. Generar modelos 3d dinámicos. Ciencias del mar. Modelos de fluidos que reproducen las corrientes.
Industria automovilística. Modelos de flujo del aire a lo largo del chasis. Análisis de impactos en tiempo real, etc. Química y farmacia. Análisis de interacción entre elementos. Finanzas. Procesado de datos, tarjetas de crédito, cuentas bancarias. etc. Según el problema, el tiempo de procesado óptimo es diferente. Necesidad de medidas de computación para el diseño del sistema: Velocidad pico de procesado. Máxima velocidad del chip (velocidad teórica del chip). Nivel de rendimiento que puede soportar. Es más realista que el anterior. Relación coste/rendimiento(flops). Relación de velocidad mono-multiprocesador.
Tipos de computación de alto rendimiento: Control. Se reparte la tarea a realizar. Datos. Ejecuta el mismo programa sobre diferentes partes de datos. Modelos desarrollados: Vector processing: ejecuta operaciones vectoriales (ej. resolver sistemas de ecuaciones lineales). Computadoras multiproceso: arrays de procesadores controlados por un sistema operativo. Utilizan memoria compartida o distribuida.
Modelos multiprocesador Ejecución de subtareas en cada procesador: Granunalidad. Niveles de paralelismo: -Instrucción (hardware) -Alto nivel (lenguajes) -Nivel tarea (programación explícita) Coordinación y sincronización: Comunicación entre procesos. Notificación de actualización.
Modelos de memoria: Compartida y Distribuida. La diferencia está en el modo de acceder a la misma. Memoria compartida: Muchos procesadores comparten la misma memoria. Lleva asociado caches. El caché necesita de coherencia (escalabilidad). Memoria distribuida: Cada procesador tiene asignado una porción de memoria (comunicación entre procesadores mediante paso de mensajes). Ambos sistemas se pueden simular entre ellos.
Colección de estaciones de trabajo: Clusters. Estaciones de trabajo conectadas en red. Cada una de ellas constituye un nodo, y todas juntas se pueden ser vistas como una sola máquina. En el ámbito de supercomputing se les llama también COW (Collections Of Workstations) o NOW (Network Of Workstations). Ventajas frente a las máquinas multiprocesador: Aumentar el número de procesadores tiende a saturar el resultado. Añadir nodos no satura tan fácilmente. Se busca que el sistema sea escalable. Posibilidad de renovar nodos a tecnología más moderna y eficiente. Conexión de alta velocidad utilizando redes rápidas. Reutilización de nodos como estaciones de trabajo. Menor coste e igual rendimiento que los multiprocesadores de diseño.
Beowulfs. Recibe el nombre de un héroe de la mitología que libera al pueblo de la opresión del monstruo Grendel. En este sentido se ha utilizado para definir una nueva estrategia de supercomputación que rompe el monopolio de las grandes empresas generadoras de supercomputadoras a alto coste. Beowulf: Colección de PCs conectados mediante una red de alta velocidad construidos a partir de software libre (S.O. y aplicaciones) Ideas generales del Beowulf: Computación de altas prestaciones a bajo coste. Reutilización de sus nodos como estaciones de trabajo independientes. Liberalización de la supercomputación. Los nodos son computadores convencionales con el mantenimiento necesario de cualquier PC: acercamiento al usuario.
Computación paralela Clusters Vector Processing Otros,.. Pila de PCs NOW/COW Beowulfs NT-PCs
Ventajas del Beowulf: Como se ha dicho, buena relación coste/prestaciones. Tan pronto como se mejore la tecnología del computador, se puede añadir al sistema. Compatibilidad del software en paralalo, no depende de arquitecturas propietario. El sistema es totalmente escalable. No existe un modelo fijo de nodo. No es complicado de programar sobre él, e incluso programadores acostumbrados a arquitecturas propietario no les costaría acostumbrarse a este sistema. Se ha demostrado que es robusto y estable.
Los Beowulfs reales suelen estar formados entre 8 y 32 nodos, dependiendo de las prestaciones de cada nodo y las necesidades. Ejemplos de nodos: En ambos casos hay que incluir teclados, ratones y monitores. Intel Pentium II 450MHz Placa Intel SE440BX Memoria SDRAM genérica a 100MHz, 128MB DIMM de RAM Disco dura de 8.4G a 5400r.p.m. Unidad de disco y CD. Tarjeta de red Fast Ethernet 10/100Mbps Tárjeta de vídeo Trident 9680 1MB Torre, cables, etc. DEC alpha DEC Alpha 21164A, 533MHz DEC AlphaPC 164LX SDRAM genérica, 256 MB DIMM de RAM Disco duro de 3.1G Unidad de disco y CD. Tarjeta de red Fast Ethernet 10/100Mbps Torre, cables, etc.
Un ejemplo local: En el CTM se desarrolló un Beowulf para el procesado de imágenes médicas: Medical Image Segmentation Using High Performance Computers Cluster R. Cárdenes et al. (2001). Nuestro Beowulf: 4 Pentiums II a 800MHz y con 1GByte de RAM También se generó un COW/NOW con 10 estaciones Sun (de mucho mayor coste) UltraSPARC II 440 Mhz, 2MB de cache y 512 MB de RAM. Y dos Sun Ultra80, cada una con 4 procesadores a 450MHz con 4MB de cache y 2G de RAM. Salvo en situaciones puntuales, el Beowulf daba resultados mejores o, al menos, comparables.
Otras formas de supercomputación. Grid Computing: Trabajo distribuido por medio de una red abierta a través de internet con tareas muy específicas. Un ejemplo de ello es el seti@home (http://setiathome.berkeley.edu) promovido por Sun y el Spaces Science Lab. de la Universidad de Calirfornia para la búsqueda de vida extraterrestre. Configuración: Arrays de servidores Sun y estaciones de trabajo distribuidos en todo el mundo y conectados por internet a través del BOINC (Berkeley Open Infrastructure for Networking Computing). Cada computador cliente (en contacto con el servidor) tiene asignada una tarea que realiza de forma independiente, y cuando la acaba se le asigna otra.
Otras formas de supercomputación. FlashMob: Agrupación ad-hoc de cientos de computadores en una red de alta velocidad para trabajar como supercomputadora temporalmente Iniciativa de la Universidad de San Francisco para el 3 de abril de 2004 http://www.flashmobcomputing.org. Utilizarán una red local de 10 Gbits y requieren PCs típicos: PentIII, 1.3GHz, 256 MB de RAM y tarjeta de red. Ejecutarán el S.O. y el software desde CD (dejarán disponibles las ISO) Interesante!!!!. Objetivos: Liberalizar la supercomputación. No hay necesidad de instalar nada se ejecuta desde CD (Knoppix). Acercar la supercomputación a cualquiera que no tenga millones de $. Comparar los resultados con los supercomputadores actuales: http://www.top500.org (se suele utilizar el Linpack como benchmark).