Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Los ordenadores paralelos se pueden clasificar según el nivel de paralelismo que admite
su hardware: los ordenadores multinúcleo y multiproceso tienen varios elementos de
procesamiento en una sola máquina, mientras que los clusters, los MPP y los grids
emplean varios ordenadores para trabajar en la misma tarea.
Los programas de ordenador paralelos son más difíciles de escribir que los secuenciales
porque la concurrencia introduce nuevos tipos de errores de software, siendo las
condiciones de carrera los más comunes. La comunicación y la sincronización entre las
diferentes subtareas son típicamente las grandes barreras para conseguir un buen
rendimiento de los programas paralelos. El incremento de velocidad que consigue un
programa como resultado de la paralelización viene dado por la ley de Amdahl.
Antecedentes
El software se ha orientado tradicionalmente hacia la computación 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 instrucción se termina, se
ejecuta la siguiente.
Un gran número 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 número de
procesadores se comunican via una memoria de acceso aleatorio que tienen en común.
Para este modelo se han desarrollado numerosos algoritmos. Si embargo, la teoría
matemática 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
común? ¿Qué operaciones básicas se permiten a cada procesador?, etc..
Entre los problemas conocidos de la clase NC están las cuatro operaciones aritméticas
sobre números binarios (+,-,*,/), la ordenación, la conexión de un grafo, las operaciones
con matrices (multiplicación, inversa, determinante y rango), el máximo común divisor
entre polinomios y los lenguajes de contexto libre.
Pese a todas las cosas asombrosas que realizan los ordenadores, sólo hacen una cosa cada vez.
Las instrucciones se entregan en un solo archivo, como un paquete entregado a través de una
única puerta. El procesamiento en paralelo abre más puertas, pero también crea desafíos
debido a los múltiples paquetes o conjuntos de instrucciones requeridos.
"Imagínese 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, podrían hacerlo
más rápido que una sola persona", explica Faisal Saied, investigador en Tecnologías de la
Información, de la Universidad Purdue, quien estudia este problema. "Esa es la ventaja de la
computación multinúcleo. Múltiples PCs, todos en el mismo chip, y cada PC trabajando en uno
de múltiples aspectos de una tarea. La dificultad está en dividir la tarea en esos múltiples
componentes".
El ingeniero Steve Kirsch, de la empresa Raytheon Systems, cree que la computación
multinúcleo nos presenta tanto el sueño de la capacidad de cómputo infinita como la pesadilla
de programarla. "La verdadera lección aquí es que las industrias del hardware y del software
tienen que prestarse atención mutua", sentencia Kirsch. "Sus futuros están entrelazados de un
modo tan estrecho como no lo han estado en mucho tiempo, y eso cambiará el modo en que
ambos sectores industriales tendrán que actuar.
Los fabricantes de chips Intel, IBM, AMD y Sun han anunciado que pronto comenzarán a
producir chips multinúcleo. En febrero, Intel hizo públicos detalles sobre una investigación
acerca de un chip con 80 núcleos, un chip del tamaño de una uña que tiene nada menos que la
misma potencia de procesamiento que en 1996 sólo podía lograrse con una supercomputadora
de gran tamaño consumiendo mil veces más electricidad.
Tal como Kirsch advierte, a pesar del magnífico potencial de la computación multinúcleo, ésta
representa un problema para compañías e investigadores que dependen de software escrito
previamente y que ha sido depurado y mejorado concienzudamente en una evolución de años
o incluso varias décadas. Continuar aprovechando esta herencia de software, puede, por tanto,
llegar a ser imposible.
E incluso, la programación en paralelo para ordenadores multinúcleo puede llegar a requerir
nuevos lenguajes de programación.
Algunos procuran prepararse con antelación para ese gran desafío, y así un grupo de
investigadores de la Universidad Purdue, trabajando estrechamente con expertos de la
industria, está desarrollando nuevos modelos de programación y herramientas que
simplifiquen la tarea de escribir programas para una plataforma de este tipo.