computación paralela

Download Computación paralela

If you can't read please download the document

Upload: fernando-pabon

Post on 20-Jun-2015

693 views

Category:

Documents


0 download

TRANSCRIPT

Computacin paralelaLa computacin paralela es una tcnica de programacin en la que muchas instrucciones se ejecutan simultneamente.1 Se basa en el principio de que los problemas grandes se pueden dividir en partes ms pequeas que pueden resolverse de forma concurrente ("en paralelo"). Existen varios tipos de computacin paralela: paralelismo a nivel de bit, paralelismo a nivel de instruccin, paralelismo de datos y paralelismo de tareas. Durante muchos aos, la computacin paralela se ha aplicado en la computacin de altas prestaciones, pero el inters en ella ha aumentado en los ltimos aos debido a las restricciones fsicas que impiden el escalado en frecuencia. La computacin paralela se ha convertido en el paradigma dominante en la arquitectura de computadores, principalmente en los procesadores multincleo.2 Sin embargo, recientemente, el consumo de energa de los ordenadores paralelos se ha convertido en una preocupacin.3 Los ordenadores paralelos se pueden clasificar segn el nivel de paralelismo que admite su hardware: los ordenadores multincleo y multiproceso tienen varios elementos de procesamiento en una sola mquina, mientras que los clusters, los MPP y los grids emplean varios ordenadores para trabajar en la misma tarea. Los programas de ordenador paralelos son ms difciles de escribir que los secuenciales4 porque la concurrencia introduce nuevos tipos de errores de software, siendo las condiciones de carrera los ms comunes. La comunicacin y la sincronizacin entre las diferentes subtareas son tpicamente las grandes barreras para conseguir un buen rendimiento de los programas paralelos. El incremento de velocidad que consigue un programa como resultado de la paralelizacin viene dado por la ley de Amdahl.

AntecedentesEl software se ha orientado tradicionalmente hacia la computacin en serie. Para resolver un problema, se construye un algoritmo y se implementa en un flujo de instrucciones en serie. Estas instrucciones se ejecutan en la unidad central de procesamiento de un ordenador. En el momento en el que una instruccin se termina, se ejecuta la siguiente.5 La computacin paralela emplea elementos de procesamiento mltiple simultneamente para resolver un problema. Esto se logra dividiendo el problema en partes independientes de tal manera que cada elemento de procesamiento pueda ejecutar su parte del algoritmo a la misma vez que los dems. Los elementos de procesamiento pueden ser diversos e incluir recursos tales como un nico ordenador con muchos procesadores, varios ordenadores en red, hardware especializado o una combinacin de los anteriores.5

Computaci

paral lo

Con l ll de l tecnolog VLSI en l que el t o de los procesadores es casi infinitesi al es natural pensar en un futuro ordenador compuesto por miles de tales procesadores trabajando en paralelo para resol er un solo problema. Aunque todava no se han construido muchos computadores de proposito general de este tipo, hay proyectos dirigidos en esa direcci n (ver Rumelhart 1986 y Dierstein 1987). Esto ha motivado el desarrollo de una nueva rama en el campo de la complejidad algoritmica: la teora de la computaci n en paralelo a gran escala, en la que el nmero de procesadores est acotado por un parmetro espacio est acotado por es un polinomio fijado. Un gran nmero de modelos de computaci n en paralelo han sido propuestos (ver Cook 1981 para una relaci n de ellos), entre los que destacan dos modelos alternativos. El primero es la clase de los modelos de memoria compartida, en la que un gran nmero de procesadores se comunican via una memori de acceso aleatorio que tienen en comn. a Para este modelo se han desarrollado numerosos algoritmos. Si embargo, la teora matemtica de estos modelos no es muy satisfactoria porque se dejan muchos detalles sin determinar: Como se resuelven los conflictos de lectura y escritura en la memoria comn? Qu operaciones bsicas se permiten a cada procesador?, etc.. La otra alternativa es el modelo presentado por Borodin (1977), en el que un computador en paralelo es una familia uniforme acclicos, tales que Entonces circuito es simplemente el nmero de puertas en de circuitos Booleanos y es la profundidad del tiene n entradas y as tiene en cuenta las entradas de longitud n. (H es por Hardware) de la misma forma que el en la teora de la complejidad secuencial. Generalmente

(la longitud del camino mas largo desde una entrada hasta una salida).

Afortunadamente para la teora, los valores de y de no son muy diferentes entre los distintos modelos de computaci n en paralelo. En particular, hay un hecho interesante que es verdad en todos estos modelos; que fu probado en primer lugar por Pratt y Stockmeyer para un modelo en particular en 1974 y fu llamada la "tesis de la computaci n en paralelo" en general. Esta tesis es: un problema se puede resolver con tiempo polinomial en una mquina en paralelo

(con ilimitado) si y solo si se puede resolver con espacio polinomial por una mquina secuencial (con tiempo ilimitado). Una cuesti n bsica en la computaci n en paralelo es: qu problemas se pueden resolver sustancialmente de forma ms rpida usando muchos procesadores en lugar de solo uno? N. Pippenger (1979) formali esta cuesti n definiendo la clase (ahora llamada NC) de problemas con soluci n ultrarpida) [ ] sobre una mquina de computaci n en paralelo y con una cantidad de Hardware no redu cida [

] . Afortunadamente la clase NC no depende del modelo de computaci n en paralelo elegido. Es fcil comprobar que NC es un subconjuntode la clase FP de las funciones computables secuencialmente en tiempo polinomial. La cuesti n quedara formali ada como: Qu problemas de FP estn tambin en NC? Pudiera ocurrir que NC = FP, pero todos los indicios indican lo contrario. Dado que no se sabe como probar que una funci n est en FP y no en NC, lo que se hace es probar que f es de espaciologartmica completa para FP. Esto es anlogo a probar que un problema es NP completo, y tiene el efecto prctico de evitar los intentos de encontrar algoritmos paralelos ultrarapidos para f. La razn es que si f es espacio-logartmica completa para FP y f est en NC, entonces FP = NC, lo que sera una gran sorpresa. No se han obtenido demasiados progresos en la clasificaci de los problemas de FP n como problemas de NC o problemas espacio-logartmico completos. El primer ejemplo de problema espacio-logartmica completa para FP fu presentado por Cook en 1973, aunque el resultado no se establece como un resultado de completitu Poco tiempo d. despus, Jones y Laaser (1977) definieron la nocin de completitud y dieron cinco ejemplos. El ejemplo ms simple de problema completo en FP es el problema del valor en un circuito: dado un circuito Booleano junto con valores para sus entrad encontrar as, el valor de la salida. Entre los problemas conocidos de la clase NC estn las cuatro operaciones aritmticas sobre nmeros binarios (+,-,*,/), la ordenacin, la conexin de un grafo, las operaciones con matrices (multiplicacin, inversa, determinante y rango), el mximo comn divisor entre polinomios y los lenguajes de contexto libre. El problema ms interesante de FP para el que no se sabe si est en NC o es completo es el de encontrar el mximo comn divisor de dos enteros. Muchos otros ta mpoco han sido clasificados, como el del matching maximal o del clique maximal de un grafo.

Computacin Multincleo: Demasiado Lejos?Las supercomputadoras, potentsimas mquinas que slo estn a disposici n de unos pocos y privilegiados centros de investigacin, pronto tendrn un rendimiento an mayor, aprovechando ms y ms la computacin multincleo. El mismo concepto de computacin podra dotar de capacidades asombrosas a los ordenadores domsticos; pero hay un problema: el software de uso comn, no sirve, y habr que empezar desde cero, quiz incluso con nuevos lenguajes de programacin. A pesar de la promesa de un poder computacional casi inimaginable, incluso los expertos se preguntan si los diseadore s de hardware han ido demasiado lejos esta vez, tan por delante de muchos creadores de software, que la nueva capacidad de computacin podra no ser aprovechable salvo en unos pocos mbitos muy especializados.La computacin en paralelo ha sido una capacid ad limitada a las personas que trabajan con supercomputadoras. Esto est cambiando, ya que ahora los nuevos ordenadores de escritorio e incluso los porttiles ya pueden disponer de capacidades de computacin multincleo. Los expertos en informtica de alto rendimiento han aprendido a tratar con estas arquitecturas, pero representan slo una fraccin de los programadores. Cuando, en un futuro no muy lejano, los chips multincleo desplacen a los normales, todos los programadores tendrn que adaptarse a ellos. Incluso en la informtica de alto rendimiento hay reas que todava no estn listas para las nuevas mquinas de computacin multincleo. En la industria, gran parte de los programas de alto rendimiento no son de estructura en paralelo. Estas corporaciones han invertido mucho tiempo y dinero en su software, y estn angustiadas por lo que se les avecina: Tener que redisear su software desde la raz misma. Los ordenadores de computacin multincleo tienen ms de una unidad de procesamiento o CPU, y cada CPU en esencia es un PC individual. En los prximos aos, los nuevos ordenadores de alto rendimiento tendrn docenas o centenares de PCs en un chip, ofreciendo inmensas mejoras en su rendimiento comparados con las mquinas actuales ms rpidas. Si queremos que los ordenadores sigan incrementando su rendimiento como lo han hecho durante las dcadas anteriores, se requieren ordenadores de computacin multincleo. Este incremento en el rendimiento es necesario para una amplia variedad de tareas de alta tecnologa, como los estudios con modelos informticos del clima, el diseo de armamento militar, o el descubrimiento de medicamentos y sus mejoras en la fabricacin, por mencionar algunas de las ms dispares de esas labores. Pero los ordenadores multincleo requiere n de programas de computacin en paralelo porque cada PC, o ncleo, debe obtener su propio juego de instrucciones. Actualmente, la mayor parte del software disponible no est escrito para aprovechar la computacin multincleo .

Pese a todas las cosas asombrosas que realizan los ordenadores, slo hacen una cosa cada vez. Las instrucciones se entregan en un solo archivo, como un paquete entregado a travs de una

nica puerta. El procesamiento en paralelo abre ms puertas, pero tambin crea desafos debido a los mltiples paquetes o conjuntos de instrucciones requeridos. "Imagnese que usted tiene cuatro pelotas de golf y necesita acertar en cuatro blancos. Si dispusiera de cuatro personas y cada una lanzase una pelota al mismo tiempo, podran hacerlo ms rpido que una sola persona", explica Faisal Saied, investigador en Tecnologas de la Informacin, de la Universidad Purdue, quien estudia este problema. "Esa es la ventaja de la computacin multincleo. Mltiples PCs, todos en el mismo chip, y cada PC trabajando en uno de mltiples aspectos de una tarea. La dificultad est en dividir la tarea en esos mltiples componentes". El ingeniero Steve Kirsch, de la empresa Raytheon Systems, cree que la computacin multincleo nos presenta tanto el sueo de la capacidad de cmputo infinita como la pesadilla de programarla. "La verdadera leccin aqu es que las industrias del hardware y del software tienen que prestarse atencin mutua", sentencia Kirsch. "Sus futuros estn entrelazados de un modo tan estrecho como no lo han estado en mucho tiempo, y eso cambiar el modo en que ambos sectores industriales tendrn que actuar. Los fabricantes de chips Intel, IBM, AMD y Sun han anunciado que pronto comenzarn a producir chips multincleo. En febrero, Intel hizo pblicos detalles sobre una investigacin acerca de un chip con 80 ncleos, un chip del tamao de una ua que tiene nada menos que la misma potencia de procesamiento que en 1996 slo poda lograrse con una supercomputadora de gran tamao consumiendo mil veces ms electricidad. Tal como Kirsch advierte, a pesar del magnfico potencial de la computacin multincleo, sta representa un problema para compaas e investigadores que dependen de software escrito previamente y que ha sido depurado y mejorado concienzudamente en un evolucin de aos a o incluso varias dcadas. Continuar aprovechando esta herencia de software, puede, por tanto, llegar a ser imposible. E incluso, la programacin en paralelo para ordenadores multincleo puede llegar a requerir nuevos lenguajes de programacin. Algunos procuran prepararse con antelacin para ese gran desafo, y as un grupo de investigadores de la Universidad Purdue, trabajando estrechamente con expertos de la industria, est desarrollando nuevos modelos de programacin y herramientas que simplifiquen la tarea de escribir programas para una plataforma de este tipo.