ESPG MAESTRÍA EN INGENIERIA DE SISTEMAS E INFORMÁTICA ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN Tema 01: Introducción al Procesamiento Paralelo Prof: Alberto E. Cohaila Barrios T em pe ra tu re F lo w P re 07/11/2008 Arquitectura de Computadores Paralelos s su re A la rm Co nd ito i ns ST Co n tro l Pa nel OP [email protected], [email protected], [email protected] 1 Temas a desarrollar: 1. 2. 3. 4. 5. 6. 7. Introducción al procesamiento paralelo Rendimiento en los computadores Paralelismo en sistemas monoprocesadores Principios de Segmentación encauzada Computadores de Segmentación encauzada Estructura y algoritmos en procesadores matriciales Arquitectura y programación de los multiprocesadores: Pascal FC, LabVIEW y C++ 8. Multiprocesamiento 9. Arquitectura paralela distribuida: Cluster 10. Aplicaciones 07/11/2008 Arquitectura de Computadores Paralelos 2 1. Introducción al procesamiento paralelo • Conceptuación de Procesamiento Paralelo (PP) Computador de altas prestaciones • Servidor • PC industrial • PC usuario Evolución de la arquitectura Concurrencia en sistemas informáticos modernos Aplicaciones avanzadas - Demanda creciente 07/11/2008 Arquitectura de Computadores Paralelos 3 1. Introducción al paralelismo • Conceptuación de Procesamiento Paralelo (PP) Estructura de los computadores paralelos clasificación: Computadores de segmentación encausada Procesadores matriciales Sistemas multiprocesadores técnicas: • VLSI y 07/11/2008 • Flujo Arquitectura de Computadores Paralelos de datos 4 1.1 Concepto de Arquitectura de computadores • Primera aparición del término en 1964 (Amdahl): – “Estructura de un computador que el programador en lenguaje máquina debe conocer si quiere escribir un programa correcto para dicho computador” – Básicamente: • • • • Registros y memoria Conjunto de instrucciones y su formato Modos de direccionamiento Codificación de las instrucciones • No considera la forma en que se implementan las instrucciones 07/11/2008 Arquitectura de Computadores Paralelos 5 1.1 Concepto de Arquitectura de computadores • Bell y Newell, en 1970, introdujeron una descripción multinivel jerárquica: – – – – Nivel Nivel Nivel Nivel de de de de circuito eléctrico diseño lógico programación conmutación procesador-memoria • El tercer nivel corresponde al de Amdahl. • El cuarto nivel trata sobre las interconexiones entre el procesador, la memoria y el resto de elementos del sistema (buses, etc. hardware PCB). 07/11/2008 Arquitectura de Computadores Paralelos 6 1.2 Evolución de los computadores • Para diseñar un sistema informático potente y de costo razonable; y para idear programas eficaces que resuelva un problema computacional, deben comprenderse las estructuras hardware y software subyacentes y los algoritmos de computación que vayan a ser implementados en la máquina mediante lenguajes de programación orientados al usuario y/o concurrentes. 07/11/2008 Arquitectura de Computadores Paralelos 7 1.2 Evolución de los computadores Seguridad Banco de datos Canales de comunicació comunicación Dispositivos perifé periféricos El sistema informático moderno Composición de elementos tales como: Sistemas operativos Procesadores Memorias 07/11/2008 Unidades funcionales Redes de interconexió interconexión Arquitectura de Computadores Paralelos Compiladores 8 Ejemplo 01: Sistema de monitoreo remoto de variables de clima como alternativa de solución al Agro en la región de Tacna Problema computacional Medició Medición de variables de temperatura, radiació radiación, humedad, velocidad de viento; adquirir, visualizar y almacenar el BD. Luego el envió envió de informació información historica de modo remoto a usuarios (agricultor) final. Sistema operativo + lenguaje de programación Comprender la estructura Hardware y software + Algoritmo computacional 07/11/2008 Arquitectura de Computadores Paralelos 9 Ejemplo 02: Comunicación entre Host basados en el estándar USB 2.0 (NO ethernet) Problema computacional Elaborar el algoritmo de protocolo de red bajo la normativa USB 2.0 que comunique mas de 2 host. host. Sistema operativo + lenguaje de programación Comprender la estructura Hardware y software + Algoritmo computacional 07/11/2008 Windows vista + Java - Algoritmo de multiprogramació multiprogramación - Driver del fabricante Arquitectura de Computadores Paralelos 10 1.2 Evolución de los computadores • 1ª Generación (1938-1953): – Primer computador analógico: 1938 – Primer computador digital electrónico: 1946 (ENIAC) – Dispositivos de conmutación: paso de relés a válvulas de vacío. – Componentes hardware muy caros – Operaciones en CPU bit a bit (en serie) – Lenguaje de programación: código máquina binario – Primer programa almacenado (1950) 07/11/2008 Arquitectura de Computadores Paralelos 11 1.2 Evolución de los computadores • 2ª Generación (1952-1963): – – – – Primer computador con transistores: 1954 Memorias de ferrita Primeros lenguajes de alto nivel: FORTRAN y ALGOL Primeros ordenadores con mejoras en arquitectura: LARC (1959), con E/S independiente de otras unidades de proceso – Forma normal de trabajo: procesamiento por lotes, donde los programas se ejecutan secuencialmente, uno cada vez y de principio a fin. 07/11/2008 Arquitectura de Computadores Paralelos 12 1.2 Evolución de los computadores • 3ª Generación (1962-1975): – Circuitos integrados de pequeña y mediana escala de integración. – Memorias de estado sólido (abaratamiento de memoria) – Programas más grandes – Introducción a la multiprogramación, con el propósito de permitir la ejecución de múltiples segmentos de programa intercalados con operaciones de E/S – Primeros procesadores vectoriales – Introducción a la memoria virtual 07/11/2008 Arquitectura de Computadores Paralelos 13 1.2 Evolución de los computadores • 4ª Generación (1972-1986): – Circuitos VLSI (reducción de tamaños y costes) – Ampliación de los lenguajes de alto nivel, para considerar a un tiempo datos escalares y vectoriales – La mayoría de los sistemas operativos son de tiempo compartido y emplean memoria virtual. – Compiladores con capacidad de vectorización 07/11/2008 Arquitectura de Computadores Paralelos 14 1.2 Evolución de los computadores • 5ª Generación (1986-…): – Multiprocesamiento de mas de 2 núcleos – Mas de 1000 Megaflops – Procesadores a escala nanometrica ( <60 nm) • Futuro … – Procesadores moleculares – Procesadores a escala nanometrica (nm) – Masa de 1 millon de millones de operaciones aritméticas de punto flotante por segundo (Teraflops) – Lenguajes cada vez de más alto nivel (casi lenguaje natural) – … 07/11/2008 Arquitectura de Computadores Paralelos 15 1.3 Generación de computadores 19901990-actualidad Sexta Quinta 19721972-1986 Mas de 1000 19821982-1989 Megaflops es la productividad VLSI, des. de esperada comp. persocales LSI, leng. leng. de alto nivel, 19621962-1975 compiladores de vectorizació vectorización 19521952-1963 19381938-1953 SSI y MSI como circuito integrado Transistor+diodos Reles+tubo Reles+tubo vací vacío 07/11/2008 Arquitectura de Computadores Paralelos 16 2000 • Video: – Evolución de procesadores Intel • El procesador 07/11/2008 Arquitectura de Computadores Paralelos 17 1.4 Tendencias hacia el procesamiento paralelo • Según Sidney Fernbarch: “Los maxicomputadores (mainframe) de hoy habían sido considerados “supercomputadores” hace 10 o 20 años. Por la misma razón, los supercomputadores de hoy serán considerados equipos estándar de técnica avanzada dentro de 10 ó 20 años” • Procesamiento del computador, • Tendencia, 3 puntos de vista: 07/11/2008 • Sistema operativo y • Velocidad del procesador Arquitectura de Computadores(chip) Paralelos 18 a) Desde el punto de vista del procesamiento • La corriente es la tendencia de 4 niveles de sofisticación ascendente: – – – – – Procesamiento de datos Procesamiento de información Procesamiento de conocimiento Procesamiento de inteligencia Procesamiento de imagen 07/11/2008 Arquitectura de Computadores Paralelos Alto grado de paralelismo 19 Volumen creciente de material a procesar Proces. Proces. de inteligencia Procesamiento de conocimientos Procesamiento de informació información Creciente complejidad y sofisticació sofisticación del proceso (alto grado de paralelismo) Procesamiento de datos 07/11/2008 Arquitectura de Computadores Los espacios de datos, información, conocimiento e inteligencia desde el punto de vista del Paralelos procesamiento por computador. 20 b) Desde el punto de vista del sistema operativo • Han mejorado en 4 fases: – – – – Procesamiento por lotes (batch) Multiprogramación Tiempo compartido Multiprocesamiento Aumenta el grado de paralelismo • Se refuerzan los 4 niveles (datos, información, conocimiento e inteligencia) ascendentemente del procesamiento por computador 07/11/2008 Arquitectura de Computadores Paralelos 21 1.5 Paralelismo Conceptos básicos de paralelismo • Programa: – Para el programador: Conjunto ordenado de instrucciones. – Para el S.O: Fichero ejecutable en memoria externa • Proceso: Es un concepto del SO, ligado al de programa: – – – – • Realización de un trabajo, con los recursos asociados que necesite Espacio de memoria (instrucciones+datos) Tiempo de procesador Tarea: Término usado en los SO antiguos (DOS, MVT…) para definir los procesos. No implica ningún tipo de reserva de memoria ni gestión de concurrencia (no lo permitían los SO). Hilo ó Hebra (Threading): Secuencia de instrucciones que se crea y pertenece a un proceso concreto. Todas las hebras creadas en un proceso comparten los recursos, en concreto el espacio de memoria – OS/2, WinNT utilizaban hebras – Una hebra puede estar ejecutándose, preparada para ejecutarse o bloqueada. 07/11/2008 Arquitectura de Computadores Paralelos 22 1.5 Paralelismo Conceptos básicos de paralelismo • Ejecución concurrente: es el comportamiento temporal del modelo 1 servidor-N clientes. Es secuencial si lo miramos en un instante pequeño de tiempo pero simultáneo si lo vemos con una perspectiva temporal más amplia – Cuestión a resolver: cómo los clientes acceden a los recursos del servidor de una manera eficiente y justa. • Tiempo compartido: ninguna tarea se apropia del servidor, sino que este va rotando entre las distintos clientes • Ejecución paralela: Corresponde con el modelo N Clientes – N Servidores. Esto permite estar trabajando a la vez con más de un cliente (proceso o hilos) a la vez. – Debe haber mecanismos para la gestión de los recursos compartidos (memoria, dispositivos). 07/11/2008 Arquitectura de Computadores Paralelos 23 1.5.1 Tipos y niveles • Tipos de paralelismo – Paralelismo funcional: Aquel que se refleja en la lógica de la solución de un problema (en los diagramas de flujo y, por tanto, en el código). – Paralelismo de datos:Se consigue mediante el uso de estructuras de datos que permiten operaciones paralelas sobre sus elementos (vectores, matrices…) • Niveles de paralelismo – A nivel de instrucción (fine-grained) Explota la concurrencia entre múltiples instrucciones. Es deseable la vectorización – A nivel de bucle (middle-grained) Operaciones mas rápidas y concurrentes dentro de c/instrucción, se implementa con frecuencia directamente por medio de hardware – A nivel de procedimiento o tarea (middle-grained) Descomposición de un programa en múltiples tareas – A nivel de programa (coarse-grained) Desarrollo de algoritmos procesables en paralelo • Los niveles 1 a 3 se pueden explotar mediante la arquitectura dela máquina 07/11/2008 Arquitectura de Computadores • Los niveles 2 a 4 se pueden explotar mediante el sistema operativo Paralelos 24 Ejemplo Concurrencia, uso de Cobegin 07/11/2008 Arquitectura de Computadores Paralelos 25 1.5.2 Técnicas • Utilización del paralelismo funcional – A nivel de instrucción. Arquitecturas ILP (Instruction Level Parallel) • Se encargan los compiladores – A nivel de proceso y/o hebra. • Depende de un buen diseño y programación • Modelos de ejecución concurrente – Multihilo:Para cada proceso se pueden generar varias hebras que son ejecutadas concurrentemente en un mismo procesador bajo la gestión del SO. – Multitarea: Ejecución concurrente de procesos. – Multiprogramación:Utilización efectiva del procesador por varios procesos correspondientes a varios usuarios (internamente es una multitarea). Si un proceso se bloquea, entonces otro se comienza a ejecutar. – Tiempo compartido: No espera a que un proceso se bloquee para ejecutar otro, sino que asigna a cada uno un espacio de tiempo dependiendo de varios factores. 07/11/2008 Arquitectura de Computadores Paralelos 26 1.5.3 ¿Qué es procesamiento paralelo? • Es una forma eficaz de procesamiento de información que favorece la explotación de los sucesos concurrentes en el proceso de computación. presente pasado P1 P2 ... t P1 t P2 P3 P4 07/11/2008 Arquitectura de Computadores Paralelos ... sucesos 27 1.5.3 ¿Qué es procesamiento paralelo? Concurrencia implica Paralelismo • Los sucesos paralelos son los que pueden producirse en diferentes recursos durante el mismo intervalo de tiempo 07/11/2008 Simultaneidad • Los sucesos simultá simultáneos son los que pueden producirse en el mismo instante Arquitectura de Computadores Paralelos Solapamiento [segmentación encauzada (pipelining)] • Los sucesos solapados son los que pueden producirse en intervalos de tiempo superpuestos 28 1.5.3 ¿Qué es procesamiento paralelo? • Estos sucesos concurrentes pueden darse en un sistema computador en varios niveles de procesamiento (monoprocesador o multiprocesador). • El procesamiento paralelo exige la ejecución concurrente en el computador de muchos programas. • El nivel mas alto de procesamiento paralelo se aplica a trabajos y programas múltiples a través de multiprogramación, tiempo compartido y multiprocesamiento. 07/11/2008 Arquitectura de Computadores Paralelos 29 1.5.3 ¿Qué es procesamiento paralelo? • Conforme las tecnologías de comunicaciones de datos progresa, la distinción entre procesamiento paralelo y distribuido se hace mas y mas pequeño. Procesamiento Distribuido - Redes de computadoras dispersos y débilmente acoplados - Se puede alcanzar alto grado de concurrencia en sistemas distribuidos 07/11/2008 Arquitectura de Computadores Paralelos 30 1.6 Paralelismo en sistemas Monoprocesadores • Inicio Un solo procesador central • Prog. Prog. concurrente Sist. monoprocesador • Límite en la consecució consecución de alto rendimiento •Necesidad de un controlador de procesamiento paralelo, para incrementar la potencia de cá cálculo • Actualidad Procesadores múltiples Sist. multiprocesador 07/11/2008 • Memoria y perifé periféricos compartidos bajo control de un sistema operativo integrado Arquitectura de Computadores Paralelos 31 1.6.1 Arquitectura básica de un monoprocesador • Consta de 3 partes esenciales: – Unidad Central de proceso (UCP) – Memoria principal – Subsistema de entrada/salida (E/S) 07/11/2008 Arquitectura de Computadores Paralelos 32 Bus synchronous backplane Interconnect (TriTri-State) State) 07/11/2008 Arquitectura del sistema monoprocesador 11/780 de tipo supermidi. Arquitectura de VAX Computadores (Cortesia de Digital Equipment ParalelosCorporation) 33 Arquitectura del computador monoprocesador IBM Sistema 360/Modelo 168 de tipo maxicomputador. Computadores (Cortesia deArquitectura Internationalde Business Machines Corp.) 07/11/2008 Paralelos 34 Hoy Día CPU Memoria E/S Buses de dirección, datos y control (BusTri-State) 07/11/2008 Arquitectura de Computadores Paralelos 35 • Video: – Dentro del PC 07/11/2008 Arquitectura de Computadores Paralelos 36 1.6.2 Mecanismo de procesamiento paralelo • Los sistemas monoprocesador se basan en la arquitectura Von Neumann. • Formas de dotar paralelismo: 1. 2. 3. 4. 5. 6. 07/11/2008 Multiplicidad de unidades funcionales Paralelismo y segmentación encauzada (pipeling) dentro de la UCP Solapamiento de operaciones de E/S y UCP Uso de sistemas jerárquicos de memoria Equilibrado de los anchos de banda de los subsistemas Multiprogramación y tiempo compartido Arquitectura de Computadores Paralelos 37 1. Multiplicidad de unidades funcionales • • Los primeros computadores disponían de un solo ALU en la UCP. El ALU podía realizar una función cada vez, proceso demasiado lento para efectuar una larga secuencia de instrucciones aritméticas y lógicas. • La multiplicidad de unidades funcionales, en la practica, equivale a que muchas de las funciones de la ALU pueden estar distribuidas sobre múltiples unidades funcionales especializadas que pueden operar en paralelo (posibilidad de varias ALU’s) • Actualmente el PC y procesadores periféricos están equipados con múltiples unidades funcionales para realizar operaciones aritméticológicas paralelas o simultaneas (multiplicidad altamente encauzada) 07/11/2008 Arquitectura de Computadores Paralelos 38 Arquitectura del computador CDC-6000, 10 ALU’s ALU (son independientes y pueden operar simultaneamente) simultaneamente) (UCP) •07/11/2008 Con 10 Unidades funcionales 24 registros Arquitectura disponibles, de Computadores la velocidad velocidad de procesamiento de instrucciones se 39 Paralelos incrementa significativamente 2. Segmentación encauzada • Fases de ejecución de una instrucción – – – – – Extracción de la instrucción Decodificación Extracción de operandos Ejecución operación Almacenamiento de resultados • Estas etapas se ejecutan una tras otra • Se puede estar a la vez ejecutando distintas instrucciones, pero cada una estará en una etapa distinta • Incorporan sumadores paralelos, empleando técnicas de anticipación de acarreo y salvaguarda de acarreo (incorporados hoy en día en casi la mayoría de ALU’s) 07/11/2008 Arquitectura de Computadores Paralelos 40 2. Segmentación encauzada Extracción de instrucción Segmento 1 Almacenamiento del resultado Segmento 2 Segmento 5 Decodificación 1 CPI n Nro. instrucciones CPI i * CPI i i 1 Nro. instruccio nes Total CPI: Ciclo de reloj por instrucción Segmento 4 Segmento 3 Ejecución aritmético-lógico 07/11/2008 Extracción del operando Arquitectura de Computadores Paralelos 41 3. Solapamiento de las operaciones de E/S y CPU • Las operaciones de E/S son mucho más lenta que los cálculos (dependen del dispositivo) • ¿Por qué tener el procesador parado esperando a que responda el dispositivo? • Uso de controladores de E/S Descarga CPU • El DMA puede utilizarse para transmitir directamente la información desde los dispositivos de E/S hasta la memoria del sistema. • El canal de acceso directo a memoria (DMA: Direct Memory Acces) trabaja mediante robos de ciclos a la UCP • De esta gestión se encarga el SO 07/11/2008 Arquitectura de Computadores Paralelos 42 4. Uso de sistemas jerárquicos de memoria • La memoria se divide en niveles jerárquicos • Debido a las propiedades de localidad espacial y temporal, se puede hacer uso de memorias más pequeñas pero más rápidas entre el procesador y la memoria principal. – Localidad espacial: la siguiente instrucción suele estar cerca – Localidad temporal: la siguiente instrucción suele haberse ejecutado hace poco • Los niveles más rápidos son los más próximos en la jerarquía 07/11/2008 Arquitectura de Computadores Paralelos 43 5. Equilibrado del ancho de banda en los subsistemas • • • • • El ancho de banda se define como el número de operaciones efectuadas por unidad de tiempo En general, la UCP es la unidad más rápida, con un tiempo de ciclo Tp. (p.e. Tp=10 ns) El tiempo de ciclo de memoria se denota por Tm (p.e. Tm=200 ns) Los dispositivos de E/S son los más lentos, y en general se denomina Td (p.e. Td=5 ms) Se cumple por tanto la siguiente relación: – Td>Tm>Tp • Td<Tm<Tp Estas diferencias hacen necesario equiparar los anchos de banda de procesamiento – Número de operaciones que se pueden realizar por unidad de tiempo. – Número de palabras que se pueden acceder por unidad de tiempo – Número de bytes que se pueden acceder por unidad de tiempo 07/11/2008 Arquitectura de Computadores Paralelos 44 5. Equilibrado del ancho de banda en los subsistemas • Técnicas de equilibrado: – Entre CPU y memoria: Uso de caché – Entre memoria y disp. E/S: • Uso de canales a diferentes velocidades (multiplexación y memorización) • Uso de controladores dedicados • Sistema equilibrado: BUp BdU BmU 07/11/2008 Arquitectura de Computadores Paralelos 45 5. Equilibrado del ancho de banda en los subsistemas 07/11/2008 Arquitectura de Computadores Paralelos 46 6. Multiprogramación y tiempo compartido (multitarea) • Manera eficaz de cómo reparte recursos un monoprocesador apoyado por el SO. • Aun cuando en un sistema monoprocesador solo exista una UCP, se logra alcanzar alto grado de compartición de recursos entre muchos programas de usuario. 07/11/2008 Arquitectura de Computadores Paralelos 47 6. Multiprogramación y tiempo compartido (multitarea) • Multiprogramación: Usar las operaciones de E/S de un proceso para ejecutar otro (siempre que no se pisen recursos) – Ejecución simultanea de varios programas dentro del sistema durante el ancho de banda del procesador (Bp) • Tiempo compartido: Evitar que un proceso monopolice el procesador (p.ej. Si no hace operaciones de E/S) – Da igual de oportunidad a todo slos programas que compiten por el uso del UCP 07/11/2008 Arquitectura de Computadores Paralelos 48 07/11/2008 Arquitectura de Computadores Paralelos 49 6. Multiprogramación y tiempo compartido (multitarea) Por tanto: • Es eficaz cuando se aplica a un computador conectado a muchos terminales interactivos (p.e Betwin) • El tiempo compartido es indispensable para el desarrollo de computadores de tiempo real. • Compartir el tiempo en multiprocesadores es complicado. • El rendimiento de un multiprocesador depende en gran medida de la capacidad del sistema operativo. • La función principal de un SO es optimizar la asignación y administración de los recursos. 07/11/2008 Arquitectura de Computadores Paralelos 50 1.7 Estructuras de computadores paralelos • Para favorecer al procesamiento paralelo se conoce tres Arquitecturas: – Procesadores de segmentación encauzada – Procesadores matriciales – Sistemas multiprocesadores 07/11/2008 Arquitectura de Computadores Paralelos 51 1.7.1 Procesadores de segmentación encauzada • Se aprovecha que las instrucciones se dividen en etapas separadas para solapar la ejecución de varias instrucciones. • Un ciclo de ejecución consta de varios ciclos de cauce. El ciclo de cauce viene determinado por el retardo de la etapa más lenta. • En teoría, un ordenador con k-etapas podría ser kveces más rápido que su equivalente no segmentado. 07/11/2008 Arquitectura de Computadores Paralelos 52 1.7.2 Procesadores matriciales • Computador paralelo y síncrono con múltiples ALUs que pueden operar en paralelo realizando la misma función. • Las instrucciones escalares y de control se ejecutan en la UC, mientras que las vectoriales se transmiten a los elementos de proceso (ALU+Mem) • Los elementos de proceso están conectados mediante una red dinámica. 07/11/2008 Arquitectura de Computadores Paralelos 53 1.7.3 Sistemas Multiprocesadores • • • • Consta de varios procesadores con capacidades similares, compartiendo accesos a una memoria común y dividida en módulos. El sistema entero está gestionado por un único sistema operativo Cada procesador dispone de su propia memoria local y puede acceder a dispositivos propios de E/S. La comunicación entre procesadores se puede realizar mediante: – Memoria principal – Red de interconexión – Gestión de interrupciones • Se considera la descentralización de operaciones: sistemas distribuidos. 07/11/2008 Arquitectura de Computadores Paralelos 54 Nuevas tendencias • La realización de las tareas está limitada a la disponibilidad de datos: – Ordenar las instrucciones en función de las dependencias de datos – Los programas se representan como grafos de flujos de datos. – Las instrucciones se implementarían con plantillas. – Esto permite un análisis formal del programa y verificar su corrección. • Implementación hardware de algoritmos masivamente paralelos. 07/11/2008 Arquitectura de Computadores Paralelos 55 1.8 .Aplicaciones del procesamiento paralelo • Modelización predictiva y simulaciones – La modelización de la superficie terrestre o de la atmósfera supone una gran carga computacional (unos 1000 millones de MFLOPS) – P. ej. La predicción del tiempo a 24 horas vista, con precisión de 160000 km2 (400x400) supone unos 100 billones de operaciones (100 minutos en un Cray-1). Si queremos precisión de 40.000 km2, se necesitarían 14 horas. • Diseño y automatización de proyectos de ingeniería – Análisis de elementos finitos, aerodinámica computacional, inteligencia artificial, robótica, visión computacional … • Exploración de recursos energéticos – Modelización de yacimientos, seguridad de reactores nucleares • Investigación médica – Tomografía computerizada, síntesis de proteínas, … 07/11/2008 Arquitectura de Computadores Paralelos 56