Anda di halaman 1dari 22

Computacin paralela

De Wikipedia, la enciclopedia libre La computacin paralela es una forma de cmputo en la que muchas instrucciones se ejecutan simultneamente,1 operando sobre el principio de que problemas grandes, a menudo se pueden dividir en unos ms pequeos, que luego son resueltos simultneamente (en paralelo). Hay varias formas diferentes de computacin paralela: paralelismo a nivel de bit, paralelismo a nivel de instruccin, paralelismo de datos y paralelismo de tareas. El paralelismo se ha empleado durante muchos aos, sobre todo en la computacin de altas prestaciones, pero el inters en ella ha crecido ltimamente debido a las limitaciones fsicas que impiden el aumento de la frecuencia.n. 1 2 Como el consumo de energa y por consiguiente la generacin de calor de las computadoras constituye una preocupacin en los ltimos aos,n. 2 3 la computacin en paralelo se ha convertido en el paradigma dominante en la arquitectura de computadores, principalmente en forma de procesadores multincleo.n. 3 4 Las computadoras paralelas pueden clasificarse segn el nivel de paralelismo que admite su hardware: equipos con procesadores multincleo y multi-procesador que tienen mltiples elementos de procesamiento dentro de una sola mquina y los clsteres, MPPS y grids que utilizan varios equipos para trabajar en la misma tarea. Muchas veces, para acelerar la tareas especficas, se utilizan arquitecturas especializadas de computacin en paralelo junto a procesadores tradicionales. Los programas informticos paralelos son ms difciles de escribir que los secuenciales,5 porque la concurrencia introduce nuevos tipos de errores de software, siendo las condiciones de carrera los ms comunes. La comunicacin y sincronizacin entre diferentes subtareas son algunos de los mayores obstculos para obtener un buen rendimiento del programa paralelo. La mxima aceleracin posible de un programa como resultado de la paralelizacin se conoce como la ley de Amdahl.
La supercomputadora paralela Blue Gene de IBM.

La supercomputadora Cray-2 fue la ms rpida del mundo desde 1985 hasta 1989.

ndice
1 Conceptos bsicos 1.1 Ley de Amdahl y ley de Gustafson 1.2 Dependencias

1.3 Condiciones de carrera, exclusin mutua, sincronizacin, y desaceleracin paralela 1.4 Paralelismo de grano fino, grano grueso y paralelismo vergonzoso 1.5 Modelos de consistencia 1.6 Taxonoma de Flynn 2 Tipos de paralelismo 2.1 Paralelismo a nivel de bit 2.2 Paralelismo a nivel de instruccin 2.3 Paralelismo de datos 2.4 Paralelismo de tareas 3 Hardware 3.1 Memoria y comunicacin 3.2 Clases de computadoras paralelas 3.2.1 Computacin multincleo 3.2.2 Multiprocesamiento simtrico 3.2.3 Computacin distribuida 3.2.4 Computadoras paralelas especializadas 4 Software 4.1 Lenguajes de programacin en paralelo 4.2 Paralelizacin automtica 4.3 Punto de control 5 Mtodos algortmicos 6 Historia 7 Notas 8 Referencias 9 Bibliografa 10 Lectura adicional 11 Enlaces externos

Conceptos bsicos

Tradicionalmente, los programas informticos se han escrito para el cmputo en serie. Para resolver un problema, se construye un algoritmo y se implementa como un flujo en serie de instrucciones. Estas instrucciones se ejecutan en una unidad central de procesamiento en un ordenador. Slo puede ejecutarse una instruccin a la vez y un tiempo despus de que la instruccin ha terminado, se ejecuta la siguiente.6 La computacin en paralelo, por el contrario, utiliza simultneamente mltiples elementos de procesamiento para resolver un problema. Esto se logra mediante la divisin del problema en partes independientes de modo que cada elemento de procesamiento pueda ejecutar su parte del algoritmo de manera simultnea con los otros. Los elementos de procesamiento son diversos e incluyen recursos tales como una computadora con mltiples procesadores, varios ordenadores en red, hardware especializado, o cualquier combinacin de los anteriores.6 El aumento de la frecuencia fue la razn dominante de las mejoras en el rendimiento de las computadoras desde mediados de 1980 hasta el ao 2004. El tiempo de ejecucin de un programa es igual al nmero de instrucciones multiplicado por el tiempo promedio por instruccin. Manteniendo todo lo dems constante, el aumento de la frecuencia de reloj reduce el tiempo medio que tarda en ejecutarse una instruccin, por tanto un aumento en la frecuencia reduce el tiempo de ejecucin de los programas de cmputo.7 Sin embargo, el consumo de energa de un chip est dada por la ecuacin P = C V2 F, donde P es la potencia, C es el cambio de capacitancia por ciclo de reloj proporcional al nmero de transistores cuyas entradas cambian, V es la tensin, y F es la frecuencia del procesador (ciclos por segundo). 8 Un aumento en la frecuencia aumenta la cantidad de energa utilizada en un procesador. El aumento del consumo de energa del procesador llev a Intel en mayo del 2004 a la cancelacin de sus procesadores Tejas y Jayhawk, este hecho generalmente se cita como el fin del escalado de frecuencia como el paradigma dominante de arquitectura de computadores.9 La ley de Moore es la observacin emprica de que la densidad de transistores en un microprocesador se duplica cada 18 a 24 meses.10 A pesar de los problemas de consumo de energa, y las repetidas predicciones de su fin, la ley de Moore sigue vigente. Con el fin del aumento de la frecuencia, estos transistores adicionales que ya no se utilizan para el aumento de la frecuencia se pueden utilizar para aadir hardware adicional que permita la computacin paralela.

Ley de Amdahl y ley de Gustafson


Idealmente, la aceleracin a partir de la paralelizacin es lineal, doblar el nmero de elementos de procesamiento debe reducir a la mitad el tiempo de ejecucin y doblarlo por segunda vez debe nuevamente reducir el tiempo a la mitad. Sin embargo, muy pocos algoritmos paralelos logran una aceleracin ptima. La mayora tienen una aceleracin casi lineal para un pequeo nmero de elementos de procesamiento, y pasa a ser constante para un gran nmero de elementos de procesamiento. La aceleracin potencial de un algoritmo en una plataforma de cmputo en paralelo est dada por la ley de Amdahl, formulada originalmente por Gene Amdahl en la dcada de 1960.11 Esta seala que una pequea porcin del programa que no pueda paralelizarse va a limitar la aceleracin que se logra con la paralelizacin. Los programas que resuelven problemas matemticos o ingenieriles tpicamente consisten en varias partes paralelizables y varias no paralelizables (secuenciales). Si es la fraccin de tiempo que un programa gasta en partes no paralelizables, luego

es la mxima aceleracin que se puede alcanzar con la paralelizacin del programa. Si la parte secuencial del programa abarca el 10% del tiempo de ejecucin, se puede obtener no ms de 10 de aceleracin, independientemente de cuntos procesadores se aadan. Esto pone un lmite superior a la utilidad de aadir ms unidades de ejecucin paralelas. Cuando una tarea no puede divididirse debido a las limitaciones secuenciales, la aplicacin de un mayor esfuerzo no tiene efecto sobre la programacin. La gestacin de un nio toma nueve meses, no importa cuntas mujeres se le asigne. 12 La ley de Gustafson es otra ley en computacin que est en estrecha relacin con la ley de Amdahl.13 Seala que el aumento de velocidad con procesadores es

Ambas leyes asumen que el tiempo de funcionamiento de la parte secuencial del programa es independiente del nmero de procesadores. La ley de Amdahl supone que todo el problema es de tamao fijo, por lo que la cantidad total de trabajo que se har en paralelo tambin es independiente del nmero de procesadores, mientras que la ley de Gustafson supone que la cantidad total de trabajo que se har en paralelo vara linealmente con el nmero de procesadores.

Dependencias
Entender la dependencia de datos es fundamental en la implementacin de algoritmos paralelos. Ningn programa puede ejecutar ms rpidamente que la cadena ms larga de clculos dependientes (conocida como la ruta crtica), ya que los clculos que dependen de clculos previos en la cadena deben ejecutarse en orden. Sin embargo, la mayora de los algoritmos no consisten slo de una larga cadena de clculos dependientes; generalmente hay oportunidades para ejecutar clculos independientes en paralelo.
Representacin grfica de la ley de Amdahl. La mejora en la velocidad de ejecucin de un programa como resultado de la paralelizacin est limitada por la porcin del programa que no se puede paralelizar. Por ejemplo, si el 10% del programa no puede paralelizarse, el mximo terico de aceleracin utilizando la computacin en paralelo sera de 10x no importa cuntos procesadores se utilicen.

Sea Pi y Pj dos segmentos del programa. Las condiciones de Bernstein14 describen cuando los dos segmentos son independientes y pueden ejecutarse en paralelo. Para Pi, sean Ii todas las variables de entrada y Oi las variables de salida, y del mismo modo para Pj. P i y Pj son independientes si satisfacen

Una violacin de la primera condicin introduce una dependencia de flujo, correspondiente al primer segmento que produce un resultado utilizado por el segundo segmento. La segunda condicin representa una anti-dependencia, cuando el segundo segmento (Pj) produce una variable que necesita el primer segmento (Pi). La tercera y ltima condicin representa una dependencia de salida: Cuando dos segmentos escriben en el mismo lugar, el resultado viene del ltimo segmento ejecutado.15 Considere las siguientes funciones, que demuestran varios tipos de dependencias:
1 fninDpa b : uc e(, ) 2 c =ab : : 3 d =3c : : 4 fnfnin : i uc

La operacin 3 en Dep(a, b) no puede ejecutarse antes de o incluso en paralelo con la operacin 2, ya que en la operacin 3 se utiliza un resultado de la operacin 2. Esto viola la condicin 1, y por tanto introduce una dependencia de flujo.
1 fninNDp(,b : uc oe a ) 2 c =ab : : 3 d b=3 : : 4 e =a+b : : 5 fnfnin : i uc

Supongamos que una tarea tiene dos partes independientes, A y B. B tarda aproximadamente 25% del tiempo total. Con esfuerzo adicional, un programador puede hacer esta parte cinco veces ms rpida, pero esto reduce el tiempo de clculo global por muy poco. Por otro lado, puede que sea necesario poco trabajo para hacer que la parte A sea doble de rpida. Esto hara el clculo mucho ms rpido que mediante la optimizacin de la parte B, a pesar de que B tiene una mayor aceleracin (5x frente a 2).

En este ejemplo, no existen dependencias entre las instrucciones, por lo que todos ellos se pueden ejecutar en paralelo. Las condiciones de Bernstein no permiten que la memoria se comparta entre los diferentes procesos. Por esto son necesarios algunos medios que impongan un ordenamiento entre los accesos tales como semforos, barreras o algn otro mtodo de sincronizacin.

Condiciones de carrera, exclusin mutua, sincronizacin, y desaceleracin paralela


Las subtareas en un programa paralelo a menudo son llamadas hilos. Algunas arquitecturas de computacin paralela utilizan versiones ms pequeas y ligeras de hilos conocidas como hebras, mientras que otros utilizan versiones ms grandes conocidos como procesos. Sin embargo, hilos es generalmente aceptado como un trmino genrico para las subtareas. Los hilos a menudo tendrn que actualizar algunas variables que se comparten

entre ellos. Las instrucciones entre los dos programas pueden entrelazarse en cualquier orden. Por ejemplo, considere el siguiente programa: Hilo A 1A: Lee variable V Hilo B 1B: Lee variable V

2A: Aadir 1 a la variable V 2B: Aadir 1 a la variable V 3A: Escribir en la variable V 3B: Escribir en la variable V Si la instruccin 1B se ejecuta entre 1A y 3A, o si la instruccin 1A se ejecuta entre 1B y 3B, el programa va a producir datos incorrectos. Esto se conoce como una condicin de carrera. El programador debe utilizar un bloqueo (lock) para proporcionar exclusin mutua. Un bloqueo es una construccin del lenguaje de programacin que permite a un hilo de tomar el control de una variable y evitar que otros hilos la lean o escriban, hasta que la variable est desbloqueado. El hilo que mantiene el bloqueo es libre de ejecutar su seccin crtica la seccin de un programa que requiere acceso exclusivo a alguna variable, y desbloquear los datos cuando termine. Por lo tanto, para garantizar la correcta ejecucin del programa, el programa anterior se puede reescribir usando bloqueos: Hilo A 1A: Bloquear variable V 2A: Lee variable V Hilo B 1B: Bloquear variable V 2B: Lee variable V

3A: Aadir 1 a la variable V 3B: Aadir 1 a la variable V 4A: Escribir en la variable V 4B: Escribir en la variable V 5A: Desbloquear variable V 5B: Desbloquear variable V Un hilo bloquear con xito la variable V, mientras que el otro hilo no podr continuar hasta que V se desbloquee. Esto garantiza la correcta ejecucin del programa. Si bien los bloqueos son necesarios para asegurar la ejecucin correcta del programa, pueden ralentizar en gran medida un programa. Bloquear mltiples variables utilizando cerraduras no atmicas introduce la posibilidad de que el programa alcance un bloqueo mutuo (deadlock). Un bloqueo atmico bloquea mltiples variables a la vez, si no puede bloquearlas todas, no se bloquea ninguna de ellas. Si hay dos hilos y cada uno necesita bloquear las mismas dos variables utilizando cerraduras no atmicas, es posible que un hilo bloquee uno de ellas y el otro bloquee la segunda variable. En tal caso se produce un bloqueo mutuo donde ningn hilo puede completar la ejecucin. Muchos programas paralelos requieren que sus subtareas acten en sincrona. Esto requiere el uso de una barrera. Las barreras se implementan normalmente mediante un bloqueo. Una clase de algoritmos, conocida como algoritmos libres de bloqueo y libres de espera, evitan el uso de bloqueos y barreras. Sin embargo, este enfoque es generalmente difcil de implementar y requiere estructuras de datos correctamente diseadas.

No todas las paralelizaciones conllevan una aceleracin. Por lo general, mientras una tarea se divida en cada vez ms hilos, estos hilos pasan una porcin cada vez mayor de su tiempo comunicndose entre s. Eventualmente, la sobrecarga de comunicacin domina el tiempo empleado para resolver el problema, y paralelizacin adicional dividir la carga de trabajo entre incluso ms hilos aumenta la cantidad de tiempo requerido para terminar. la Esto se conoce como desaceleracin paralela.

Paralelismo de grano fino, grano grueso y paralelismo vergonzoso


Las aplicaciones a menudo se clasifican segn la frecuencia con que sus subtareas se sincronizan o comunican entre s. Una aplicacin muestra un paralelismo de grano fino si sus subtareas deben comunicase muchas veces por segundo, se considera paralelismo de grano grueso si no se comunican muchas veces por segundo, y es vergonzosamente paralelo si nunca o casi nunca se tienen que comunicar. Aplicaciones vergonzosamente paralelas son consideradas las ms fciles de paralelizar.

Modelos de consistencia
Los lenguajes de programacin en paralelo y computadoras paralelas deben tener un modelo de consistencia de datos tambin conocido como un modelo de memoria. El modelo de consistencia define reglas para las operaciones en la memoria del ordenador y cmo se producen los resultados. Uno de los primeros modelos de consistencia fue el modelo de consistencia secuencial de Leslie Lamport. La consistencia secuencial es la propiedad de un programa en la que su ejecucin en paralelo produce los mismos resultados que un programa secuencial. Especficamente, es un programa secuencial consistente si ... los resultados de una ejecucin son los mismos que se obtienen si las operaciones de todos los procesadores son ejecutadas en un orden secuencial, y las operaciones de cada procesador individual aparecen en esta secuencia en el orden especificado por el programa. 16 La memoria transaccional es un tipo de modelo de consistencia. La memoria transaccional toma prestado de la teora de base de datos el concepto de transacciones atmicas y las aplica a los accesos a memoria. Matemticamente, estos modelos se pueden representar de varias maneras. Las Redes de Petri, que se introdujeron en primera vez el concepto de 1962 como tesis doctoral de Carl Adam Petri, fueron un primer intento de codificar las reglas de los modelos de consistencia secuencial. consistencia. Ms tarde fueron creadas las arquitecturas de flujo de datos para implementar fsicamente las ideas de la Tambin es conocido por su teora del flujo de datos. A principios de la dcada de 1970, los clculos de procesos tales como la Comunicacin de trabajo en el desarrollo del Sistemas y Comunicacin de Procesos Secuenciales se desarrollaron para permitir un razonamiento algebraico sobre software LaTeX. sistemas compuestos por elementos que interactan entre s. Adiciones ms recientes a la familia de clculo de proceso, como el clculo-, han aadido la capacidad para razonar acerca de las topologas dinmicas. Lgicas tales como la TLA+ de Lamport, y modelos matemticos se han desarrollado para describir el comportamiento de sistemas concurrentes.
Leslie Lamport defini por

Taxonoma de Flynn
Michael J. Flynn cre uno de los primeros sistemas de clasificacin de computadoras, programas paralelos y secuenciales, ahora conocida como la taxonoma de Flynn. Flynn clasifica los programas y computadoras atendiendo a si estn operando con uno o varios conjuntos de instrucciones y si esas instrucciones se utilizan en una o varias series de datos. Instruccin individual Instruccin mltiple Datos individuales SISD Mltiples datos SIMD MISD MIMD

La clasificacin instruccin-nica-dato-nico (SISD) es equivalente a un programa totalmente secuencial. La clasificacin instruccin-nica-datosmltiples (SIMD) es anloga a hacer la misma operacin varias veces sobre un conjunto de datos grande. Esto se hace comnmente en aplicaciones de procesamiento de seales. Instrucciones-mltiples-dato-nico (MISD) es una clasificacin que rara vez se utiliza. A pesar de que se disearon arquitecturas de computadoras en esta categora como arreglos sistlicos, muy pocas aplicaciones se materializaron. Los programas instruccionesmltiples-datos-mltiples (MIMD) constituyen el tipo ms comn de programas paralelos. Segn David A. Patterson y John L. Hennessy , Algunas mquinas son hbridos de estas categoras, por supuesto, este modelo clsico ha sobrevivido porque es simple, fcil de entender, y da una buena primera aproximacin. Adems, es, tal vez por su comprensibilidad, el esquema ms utilizado. 17

Tipos de paralelismo
Paralelismo a nivel de bit
Desde el advenimiento de la integracin a gran escala (VLSI) como tecnologa de fabricacin de chips de computadora en la dcada de 1970 hasta alrededor de 1986, la aceleracin en la arquitectura de computadores se lograba en gran medida duplicando el tamao de la palabra en la computadora, la cantidad de informacin que el procesador puede manejar por ciclo.18 El aumento del tamao de la palabra reduce el nmero de instrucciones que el procesador debe ejecutar para realizar una operacin en variables cuyos tamaos son mayores que la longitud de la palabra. Por ejemplo, cuando un procesador de 8 bits debe sumar dos enteros de 16 bits, el procesador primero debe adicionar los 8 bits de orden inferior de cada nmero entero con la instruccin de adicin, a continuacin, aadir los 8 bits de orden superior utilizando la instruccin de adicin con acarreo que tiene en cuenta el bit de acarreo de la adicin de orden inferior, en este caso un procesador de 8 bits requiere dos instrucciones para completar una sola operacin, en donde un procesador de 16 bits necesita una sola instruccin para poder completarla. Histricamente, los microprocesadores de 4 bits fueron sustituidos por unos de 8 bits, luego de 16 bits y 32 bits, esta tendencia general lleg a su fin con la introduccin de procesadores de 64 bits, lo que ha sido un estndar en la computacin de propsito general durante la ltima dcada.

Paralelismo a nivel de instruccin


Un programa de ordenador es, en esencia, una secuencia de instrucciones ejecutadas por un procesador. Estas instrucciones pueden reordenarse y combinarse en grupos que luego son ejecutadas en paralelo sin cambiar el resultado del programa. Esto se conoce como paralelismo a nivel de instruccin. Los avances en el paralelismo a nivel de instruccin dominaron la arquitectura de computadores desde mediados de 1980 hasta mediados de la dcada de 1990.19

Los procesadores modernos tienen ''pipeline'' de instrucciones de varias etapas. Cada etapa en el pipeline corresponde a una accin diferente que el procesador realiza en la instruccin correspondiente a la etapa; un procesador con un pipeline de N etapas puede tener hasta n instrucciones diferentes en diferentes etapas de finalizacin. El ejemplo cannico de un procesador segmentado es un procesador RISC, con cinco etapas: pedir instruccin, decodificar, ejecutar, acceso a la memoria y escritura. El procesador Pentium 4 tena un pipeline de 35 etapas.20 Adems del paralelismo a nivel de instruccin del pipelining, algunos procesadores pueden ejecutar ms de una instruccin a la vez. Estos son conocidos como procesadores superescalares. Las instrucciones pueden agruparse juntas slo si no hay dependencia de datos entre ellas. El scoreboarding y el algoritmo de Tomasulo que es similar a scoreboarding pero hace uso del renombre de registros son dos de las tcnicas ms comunes para implementar la ejecucin fuera de orden y la paralelizacin a nivel de instruccin.

Un pipeline cannico de cinco etapas en una mquina RISC (IF = Pedido de Instruccin, ID = Decodificacin de instruccin, EX = Ejecutar, MEM = Acceso a la memoria, WB = Escritura)

Paralelismo de datos
El paralelismo de datos es el paralelismo inherente en programas con ciclos, que se centra en la distribucin de los datos entre los diferentes nodos computacionales que deben tratarse en paralelo. La paralelizacin de ciclos conduce a menudo a secuencias similares de operaciones no necesariamente idnticas o funciones que se realizan en los elementos de una gran estructura de datos. 21 Muchas de las aplicaciones cientficas y de ingeniera muestran paralelismo de datos.
Un procesador superescalar con pipeline de cinco etapas, capaz de ejecutar dos instrucciones por ciclo. Puede tener dos instrucciones en cada etapa del pipeline, para un total de hasta 10 instrucciones (se muestra en verde) ejecutadas simultneamente.

Una dependencia de terminacin de ciclo es la dependencia de una iteracin de un ciclo en la salida de una o ms iteraciones anteriores. Las dependencias de terminacin de ciclo evitan la paralelizacin de ciclos. Por ejemplo, considere el siguiente pseudocdigo que calcula los primeros nmeros de Fibonacci:

1 : 2 : 3 : 4 : 5 : 6 : 7 :

PE1: 0 RV = PE2: 1 RV = d: o CR: PE1+PE2 U = RV RV PE1: PE2 RV = RV PE2: CR RV = U wie(U <1) hl CR 0

Este bucle no se puede paralelizar porque CUR depende de s mismo (PREV2) y de PREV1, que se calculan en cada iteracin del bucle. Dado que cada iteracin depende del resultado de la anterior, no se pueden realizar en paralelo. A medida que el tamao de un problema se hace ms grande, la paralelizacin de datos disponible generalmente tambin lo hace.22

Paralelismo de tareas
El paralelismo de tareas es la caracterstica de un programa paralelo en la que clculos completamente diferentes se pueden realizar en cualquier conjunto igual o diferente de datos.21 Esto contrasta con el paralelismo de datos, donde se realiza el mismo clculo en distintos o mismos grupos de datos. El paralelismo de tareas por lo general no escala con el tamao de un problema.22

Hardware
Memoria y comunicacin
La memoria principal en un ordenador en paralelo puede ser compartida compartida entre todos los elementos de procesamiento en un nico espacio de direcciones, o distribuida cada elemento de procesamiento tiene su propio espacio local de direcciones. 23 El trmino memoria distribuida se refiere al hecho de que la memoria se distribuye lgicamente, pero a menudo implica que tambin se distribuyen fsicamente. La memoria distribuidacompartida y la virtualizacin de memoria combinan los dos enfoques, donde el procesador tiene su propia memoria local y permite acceso a la memoria de los procesadores que no son locales. Los accesos a la memoria local suelen ser ms rpidos que los accesos a memoria no local. Las arquitecturas de ordenador en las que cada elemento de la memoria principal se puede acceder con igual latencia y ancho de banda son conocidas como arquitecturas de acceso uniforme a memoria (UMA). Tpicamente, slo se puede lograr con un sistema de memoria compartida, donde la memoria no est distribuida fsicamente. Un sistema que no tiene esta propiedad se conoce como arquitectura de acceso a memoria no uniforme (NUMA). Los sistemas de memoria distribuidos tienen acceso no uniforme a la memoria. Los sistemas informticos suelen hacer uso de cachs, pequeos recuerdos rpidos ubicados cerca del procesador que almacenan las copias temporales de los valores de la memoria cercano, tanto en el sentido fsico y lgico. Los sistemas computacionales paralelos tienen dificultades con las cachs y la posibilidad de una ejecucin incorrecta del programa debido a que se puede almacenar el mismo valor en ms de un lugar. Estos equipos requieren

coherencia en la cach del sistema, generalmente realizan un seguimiento de los valores almacenados en cach y estratgicamente los eliminan, garantizando la correcta ejecucin del programa. Bus sniffing es uno de los mtodos ms comunes para hacer el seguimiento de los valores a los que se est accediendo. El diseo de grandes sistemas de coherencia cach y de alto rendimiento es un problema muy difcil en arquitectura de computadores. Como resultado, las arquitecturas de memoria compartida no son tan escalables como los sistemas de memoria distribuida.23 La comunicacin procesador-procesador y procesador-memoria se puede implementar en hardware de varias maneras: a travs de memoria compartida ya sea multipuerto o multiplexado, un conmutador de barras cruzadas (crossbar switch), un bus compartido o una red interconectada de una gran variedad de topologas como estrella, anillo, rbol, hipercubo, hipercubo grueso un hipercubo con ms de un procesador en un nodo, o de malla n-dimensional. Las computadoras paralelas basadas redes interconectadas deben tener algn en tipo de enrutamiento para permitir el paso de mensajes entre nodos que no estn conectados directamente. Es probable que el medio utilizado para la comunicacin entre los procesadores de grandes mquinas multiprocesador sea jerrquico.

Clases de computadoras paralelas


Las computadoras paralelas se pueden clasificar de acuerdo con el nivel en el que el hardware soporta paralelismo. Esta clasificacin es anloga a la distancia entre los nodos bsicos de cmputo. Estos no son excluyentes entre s, por ejemplo, los grupos de multiprocesadores simtricos son relativamente comunes. Computacin multincleo Un procesador multincleo es un procesador que incluye mltiples unidades de ejecucin (ncleos) en el mismo chip. Los procesadores superescalares pueden ejecutar mltiples instrucciones por ciclo de un flujo de instrucciones (hilo), a diferencia de este, un procesador multincleo puede ejecutar mltiples instrucciones por ciclo de secuencias de instrucciones mltiples. Cada ncleo en un procesador multincleo potencialmente puede ser superescalar, es decir, en cada ciclo, cada ncleo puede ejecutar mltiples instrucciones de un flujo de instrucciones. El ''Multithreading'' simultneo de la cual Intel HyperThreading es el ms conocido era una forma de pseudo-multincleo. Un procesador con capacidad de multithreading simultneo tiene una sola unidad de ejecucin (ncleo), pero cuando esa unidad de ejecucin est desocupada por ejemplo, durante un error de cach, se utiliza para procesar un segundo hilo. El microprocesador Cell de IBM, diseado para su uso en la consola Sony PlayStation 3, es otro prominente procesador multincleo. Multiprocesamiento simtrico
Una vista lgica de una arquitectura con acceso a memoria no uniforme (NUMA). Los procesadores en un directorio pueden acceder a la memoria de su directorio con una menor latencia de la que pueden acceder a la memoria del directorio de otro.

Un multiprocesador simtrico (SMP) es un sistema computacional con mltiples procesadores idnticos que comparten memoria y se conectan a travs de un bus.24 La contencin del bus previene el escalado de esta arquitectura. Como resultado, los SMPs generalmente no comprenden ms de 32 procesadores.25 Debido al pequeo tamao de los procesadores y de la significativa reduccin en los requisitos de ancho de banda de bus, tales multiprocesadores simtricos son extremadamente rentables, siempre que exista una cantidad suficiente de ancho de banda. 24 Computacin distribuida Un ordenador distribuido tambin conocido como un multiprocesador de memoria distribuida es un sistema computacional de memoria distribuida en el que los elementos de procesamiento estn conectados por una red. Los ordenadores distribuidos son altamente escalables.
Computacin en clster

Un clster es un grupo de ordenadores dbilmente acoplados que trabajan en estrecha colaboracin, de modo que en algunos aspectos pueden considerarse como un solo equipo.26 Los clsteres se componen de varias mquinas independientes conectadas por una red. Mientras que las mquinas de un clster no tienen que ser simtricas, de no serlo, el balance de carga es ms difcil de lograr. El tipo ms comn de clster es el cluster Beowulf, que es un clster implementado con mltiples ordenadores comerciales idnticos conectados a una red de rea local TCP/IP Ethernet.27 La tecnologa Beowulf fue desarrollada originalmente por Thomas Sterling y Donald Becker. La gran mayora de los superordenadores TOP500 son clsteres.n. 4 28
Procesamiento paralelo masivo

Un procesador paralelo masivo (MPP) es un solo equipo con varios procesadores conectados en red. Tienen muchas de las caractersticas de los clster, pero cuentan con redes especializadas de interconexin en tanto que las clsteres utilizan hardware estndar para la creacin de redes. Los MPPs tambin tienden a ser ms grandes que los clsteres, con mucho ms de 100 procesadores.29 En un MPP, cada CPU tiene su propia memoria y una copia del sistema operativo y la aplicacin. Cada subsistema se comunica con los dems a travs de un interconexin de alta velocidad.30
Computacin distribuida

Un clster Beowulf.

La computacin distribuida es la forma ms distribuida de la computacin paralela. Se hace uso de ordenadores que se comunican a travs de la Internet para trabajar en un problema dado. Debido al bajo ancho de banda y la latencia extremadamente alta de Internet, la computacin distribuida normalmente slo se refiere a problemas vergonzosamente paralelos. Se han creado muchas aplicaciones de computacin distribuida, SETI@home y

Folding@home son los ejemplos ms conocidos.31 La mayora de las aplicaciones de computacin distribuida utilizan middleware, software que se encuentra entre el sistema operativo y la aplicacin para administrar los recursos de red y estandarizar la interfaz de software. El ms comn es la Infraestructura Abierta de Berkeley para Computacin en Red (BOINC). A menudo, los programas de computacin distribuida hacen uso de ciclos de repuesto, realizando clculos cuando el procesador de un equipo est desocupado. Computadoras paralelas especializadas Dentro de la computacin paralela, existen dispositivos paralelos especializados que generan inters. Aunque no son especficos para un dominio, tienden a ser aplicables slo a unas pocas clases de problemas paralelos.
Cmputo reconfigurable con arreglos de compuertas programables

El cmputo reconfigurable es el uso de un arreglo de compuertas programables (FPGA) como coprocesador de un ordenador de propsito general. Un FPGA es, en esencia, un chip de computadora que puede reconfigurarse para una tarea determinada. Los FPGAs se pueden programar con lenguajes de descripcin de hardware como VHDL o Verilog. Sin embargo, los lenguajes de programacin pueden ser tediosos. Varios vendedores han creado lenguajes C a HDL que tratan de emular la sintaxis y/o semntica del lenguaje de programacin C, con el que la mayora de los programadores estn familiarizados. Los lenguajes C a HDL ms conocidos son Mitrion-C, C Impulse, DIME C y C-Handel. Tambin se pueden utilizar para este propsito subconjuntos especficos de SystemC basados en C++. La decisin de AMD de abrir HyperTransport a otros fabricantes la ha convertido en la tecnologa que permite la computacin reconfigurable de alto rendimiento.32 De acuerdo con Michael D'Amour R., Director de Operaciones de la DRC Computer Corporation, cuando entramos en AMD, nos llamaban ladrones de zcalos. Ahora nos llaman socios. 32
Cmputo de propsito general en unidades de procesamiento grfico (GPGPU)

Un gabinete de Blue Gene/L, clasificado como el cuarto mejor superordenador del mundo de acuerdo a la clasificacin TOP500 en 11/2008. Blue Gene/L es un procesador masivamente paralelo.

El cmputo de propsito general en las unidades de procesamiento de grficos (GPGPU) es una tendencia relativamente reciente en la investigacin de ingeniera informtica. Los GPUs son co-procesadores que han sido fuertemente optimizados para procesamiento de grficos por computadora.33 El procesamiento de grficos por computadora es un campo dominado por operaciones sobre datos en paralelo, en particular de lgebra lineal y operaciones con matrices.

Al principio, los programas de GPGPU normalmente utilizaban el API de grficos para ejecutar programas. Sin embargo, varios nuevos lenguajes de programacin y plataformas se han construido para realizar cmputo de propsito general sobre GPUs, tanto Nvidia como AMD han liberado de entornos de programacin con CUDA y Stream SDK, respectivamente. Otros lenguajes de programacin de GPU incluyen: BrookGPU, PeakStream y RapidMind. Nvidia tambin ha lanzado productos especficos para la computacin en su serie Tesla. El consorcio de tecnologa Khronos Group ha lanzado OpenCL, que es un marco para la escritura de programas que se ejecutan en distintas plataformas conformadas por CPUs y GPUs. AMD, Apple, Intel, Nvidia y otros estn apoyando OpenCL.
Circuitos integrados de aplicacin especfica

Tarjeta Nvidia Tesla GPGPU

Se han diseado varios circuitos integrados de aplicacin especfica (ASIC) para hacer frente a las aplicaciones paralelas.34 35 36 Debido a que un ASIC (por definicin) es especfico para una aplicacin dada, puede ser completamente optimizado para esa aplicacin. Como resultado, para una aplicacin dada, un ASIC tiende a superar a un ordenador de propsito general. Sin embargo, los ASICs son creados con litografa de rayos X. Este proceso requiere una mscara, que puede ser extremadamente cara. Una mscara puede costar ms de un milln de dlares.n. 5 37 Mientras ms pequeo sean los transistores necesarios para el chip, ms cara ser la mscara. Mientras tanto, el incremento del rendimiento en computadoras de propsito general como se describe en la Ley de Moore tiende a eliminar esta diferencia en slo una o dos generaciones de chips.32 El alto costo inicial, y la tendencia a ser superados por la ley de Moore, ha hecho inviable el uso de ASICs para la mayora de las aplicaciones paralelas. Sin embargo, algunos han sido construidos, un ejemplo es el peta-flop RIKEN MDGRAPE-3 de la mquina que utiliza ASICs para la simulacin de dinmica molecular.
Procesadores vectoriales

Un procesador vectorial es un CPU o un sistema computacional que puede ejecutar la misma instruccin en grandes conjuntos de datos. Los procesadores vectoriales tienen operaciones de alto nivel que trabajan sobre arreglos lineales de nmeros o vectores. Un ejemplo de operacin con vectores es: A = B C, donde A, B, y C son vectores de 64 elementos, donde cada uno es un nmero de punto flotante de 64 bits. 38 Estn estrechamente relacionadas con la clasificacin SIMD de Flynn.38 Las computadoras Cray se volvieron famosas por su procesamiento de vectores en los aos 1970 y 1980. Sin embargo, los procesadores vectoriales, tanto CPUs y como sistemas computacionales, han desaparecido. Los conjuntos de instrucciones de los procesadores modernos incluyen algunas instrucciones de procesamiento de vectores, por ejemplo: AltiVec y Streaming SIMD Extensions (SSE).

Cray-1 es el procesador vectorial ms famoso.

Software
Lenguajes de programacin en paralelo
Los lenguajes de programacin concurrentes, bibliotecas, APIs y modelos de programacin paralela han sido creados para la programacin de computadores paralelos. Estos generalmente se pueden dividir en clases basadas en las suposiciones que se hacen sobre la arquitectura de memoria subyacente: compartida, distribuida, o compartida-distribuida. Los lenguajes de programacin de memoria compartida se comunican mediante la manipulacin de variables en la memoria compartida. En la arquitectura con memoria distribuida se utiliza el paso de mensajes. POSIX Threads y OpenMP son dos de las API ms utilizadas con la memoria compartida, mientras que Message Passing Interface (MPI) Interfaz de Paso de Mensajes es el API ms utilizado en los sistemas de paso de mensajes.n. 6 39 El concepto valor futuro es muy utilizado en la programacin de programas paralelos, donde una parte de un programa promete proporcionar un dato requerido a otra parte del programa en un tiempo futuro. Las empresas CAPS entreprise y Pathscale estn intentando convertir las directivas de HMPP (Hybrid Multicore Parallel Programming) en un estndar abierto denominado OpenHMPP. El modelo de programacin OpenHMPP basado en directivas ofrece una sintaxis para descargar de manera eficiente los clculos sobre aceleradores de hardware y optimizar el movimiento de datos hacia y desde la memoria del hardware. Las directivas OpenHMPP describen llamadas a procedimientos remotos (RPC) en un dispositivo acelerador por ejemplo el GPU o de forma ms general un conjunto de ncleos. Las directivas permiten anotar cdigo C o Fortran para describir dos grupos de funcionalidades: la descarga de los procedimientos en un dispositivo remoto y la optimizacin de las transferencias de datos entre la memoria principal de la CPU y la memoria del acelerador.

Paralelizacin automtica
La paralelizacin automtica de un programa secuencial por un compilador es el santo grial de la computacin paralela. A pesar de dcadas de trabajo por parte de los investigadores, la paralelizacin automtica ha tenido un xito limitado.n. 7 40 Los principales lenguajes de programacin en paralelo permanecen explcitamente paralelos o en el mejor de los casos parcialmente implcitos, en los que un programador le da al compilador directivas de paralelizacin. Existen pocos lenguajes de programacin paralelos totalmente implcitos: SISAL, Parallel Haskell, y (para FPGAs) Mitrion C.

Punto de control
Mientras un sistema computacional crece en complejidad, el tiempo medio entre fallos por lo general disminuye. Un punto de control de aplicacin es una tcnica mediante la cual el sistema informtico toma una instantnea de la aplicacin, un registro de todas las asignaciones actuales de recursos y estados variables, semejante a un volcado de memoria, esta informacin se puede utilizar para restaurar el programa si el equipo falla. Disponer de un

punto de control significa que el programa puede reiniciar desde este y no desde el principio. Mientras que los puntos de control proporcionan beneficios en una variedad de situaciones, son especialmente tiles en los sistemas altamente paralelos con un gran nmero de procesadores que son utilizados en la computacin de altas prestaciones.41

Mtodos algortmicos
Mientras que las computadoras paralelas se hacen ms grandes y ms rpidas, se hace factible resolver problemas que antes tardaban demasiado tiempo en ejecutarse. La computacin en paralelo se utiliza en una amplia gama de campos, desde la bioinformtica (plegamiento de protenas y anlisis de secuencia) hasta la economa (matemtica financiera). Los tipos de problemas encontrados comnmente en las aplicaciones de computacin en paralelo son: 42 lgebra lineal densa lgebra lineal dispersa Mtodos espectrales (tales como la transformada rpida de Fourier de Cooley-Tukey) Problemas de n-cuerpos (tales como la simulacin Barnes-Hut) Problemas de grids estructurados (mtodos de Lattice Boltzmann) Problemas de grids no estructurados (tales como los encontrados en el anlisis de elementos finitos) Simulacin de Montecarlo Lgica combinacional (por ejemplo, tcnicas criptogrficas de fuerza bruta) Recorridos en grafos (por ejemplo, los algoritmos de ordenamiento) Programacin dinmica Mtodos de Ramificacin y poda Modelos en grafos (tales como la deteccin de modelos ocultos de Markov y la construccin de redes bayesianas) Simulacin de autmatas finitos

Historia
Los orgenes del verdadero paralelismo (MIMD) se remontan a Federico Luigi, Menabrea Conte y su Bosquejo de la mquina analtica inventada por Charles Babbage.44 45 IBM introdujo el IBM 704 en 1954, a travs de un proyecto en el que Gene Amdahl fue uno de los principales arquitectos. Se convirti en el primer equipo disponible en el mercado que utilizaba comandos aritmticos de punto flotante totalmente automticos.46 En abril de 1958, S. Gill (Ferranti) analiz la programacin en paralelo y la necesidad de la ramificacin y la espera.47 Tambin en 1958, los investigadores de IBM John Cocke y Daniel Slotnick discutieron por primera vez el uso del paralelismo en clculos numricos.48 Burroughs Corporation present la D825 en 1962, un equipo de cuatro procesadores que accede a un mximo de 16 mdulos de memoria a travs de un conmutador de

barras cruzadas.49 En 1967, Amdahl y Slotnick publicaron un debate sobre la viabilidad de procesamiento en paralelo en la Conferencia de la Federacin Americana de Sociedades de Procesamiento de la Informacin.48 durante este debate que la Ley de Amdahl fue acuada para definir Fue los lmites de aceleracin que se pueden alcanzar debido al paralelismo. En 1969, la compaa estadounidense Honeywell introdujo su primer sistema Multics, un sistema con multiprocesador simtrico capaz de ejecutar hasta ocho procesadores en paralelo.48 En 1970, C.mmp, un proyecto en la Universidad Carnegie Mellon con varios procesadores, fue uno de los primeros multiprocesadores con ms de unos pocos procesadores.45 El primer bus con conexin multi-procesador y cach espa fue el Synapse N+1 en el ao 1984.45 Las computadoras paralelas SIMD se remontan a la dcada de 1970. La motivacin detrs de las primeras computadoras SIMD era amortizar el retardo de la compuerta de la unidad de control del procesador en mltiples instrucciones.50 En 1964, Slotnick haba propuesto la construccin de un ordenador masivamente paralelo para el Laboratorio Nacional Lawrence Livermore.48 diseo fue financiado por la Fuerza Area Su de los Estados Unidos, que fue el primer esfuerzo por lograr la computacin en paralelo SIMD.48 clave de La su diseo fue un paralelismo bastante alto, con hasta 256 procesadores, lo que permiti que la mquina trabajara en grandes conjuntos de datos en lo que ms tarde sera conocido como el procesamiento de vectores. Sin embargo, ILLIAC IV fue llamado el ms infame de los superordenadores, pues solo se haba completado una cuarta parte del proyecto. Tard 11 aos, costando casi cuatro veces la estimacin original.n. 8 43 Cuando estaba listo para ejecutar una aplicacin real por primera vez en 1976, fue superado por supercomputadoras comerciales, como el Cray-1.

ILLIAC IV, quizs el ms infame de los superordenadores43

Notas
1. Las tcnicas principales para lograr estas mejoras de rendimiento mayor frecuencia de reloj y arquitecturas cada vez ms inteligentes y complejas estn golpeando la llamada power wall. La industria informtica ha aceptado que los futuros aumentos en rendimiento deben provenir en gran parte del incremento del nmero de procesadores (o ncleos) en una matriz, en vez de hacer ms rpido un solo ncleo. 2. Antigua [sabidura convencional]: La energa es gratuita y los transistores son caros. Nueva [sabidura convencional]: la energa es cara y los transistores son "gratuitos" 3. Antigua [sabidura convencional]: incrementar la frecuencia de reloj es el mtodo principal de mejorar el rendimiento del procesador. Nueva [sabidura convencional]: el incremento del paralelismo es el mtodo principal para mejorar el rendimiento del procesador ... Incluso los representantes de Intel, una empresa asociada a la posicin: "mayor velocidad de reloj es mejor", advirti que los enfoques tradicionales para aumentar el rendimiento a travs de la maximizacin de la velocidad de reloj han sido empujados hasta el lmite. 4. En los TOP500 Supercomputing Sites los clsteres alcanzan el 74.60% de las mquinas en la lista. 5. ...el costo de una mscara y tarjeta de prueba que es mucho ms de $1 milln en los 90nm crea un amortiguador importante en la innovacin basada en semiconductores... 6. Se referencia la Interfaz de Paso de Mensajes como "la interfaz dominante de HPC"

7. Sin embargo, el santo grial de la investigacin paralelizacin automtica de programas en serie todava tiene que materializarse. Aunque la paralelizacin automtica de ciertas clases de algoritmos se ha demostrado, este xito ha sido en gran parte limitado a aplicaciones cientficas y numricas con control de flujo predecible por ejemplo, las estructuras de bucle anidado con un recuento de iteracin estticamente determinado y patrones de acceso a memoria analizables estticamente por ejemplo, recorridos en grandes arreglos multidimensionales de datos de punto flotante. 8. Aunque tuvo xito en impulsar varias tecnologas tiles en proyectos posteriores, el IV ILLIAC no triunf como ordenador. Los costos se ascendieron de los $8 millones estimados en 1966 a $31 millones en 1972, a pesar de la construccin de slo un cuarto de la mquina planeada ... Fue tal vez la ms infame de las supercomputadoras. El proyecto comenz en 1965 y ejecut su primera aplicacin real en 1976

Referencias
1. Gottlieb, Allan; Almasi, George S. (1989) (en ingls). Highly parallel computing (http://dl.acm.org/citation.cfm?id=160438) . Redwood City, California.: Benjamin/Cummings. ISBN 0-8053-0177-1. http://dl.acm.org/citation.cfm?id=160438. 2. (en ingls, pdf) "Parallel Computing Research at Illinois: The UPCRC Agenda" (http://www.upcrc.illinois.edu/documents/UPCRC_Whitepaper.pdf) . Universidad de Illinois en Urbana-Champaign. noviembre de 2008. http://www.upcrc.illinois.edu/documents/UPCRC_Whitepaper.pdf. 3. (en ingls, pdf) "The Landscape of Parallel Computing Research: A View from Berkeley" (http://www.eecs.berkeley.edu/Pubs/TechRpts/2006/EECS2006-183.pdf) . Universidad de California, Berkeley. 18 de diciembre de 2006. http://www.eecs.berkeley.edu/Pubs/TechRpts/2006/EECS-2006-183.pdf. 4. (en ingls, pdf) "The Landscape of Parallel Computing Research: A View from Berkeley" (http://www.eecs.berkeley.edu/Pubs/TechRpts/2006/EECS2006-183.pdf) . Universidad de California, Berkeley. 18 de diciembre de 2006. http://www.eecs.berkeley.edu/Pubs/TechRpts/2006/EECS-2006-183.pdf. 5. Hennessy, John L.; Patterson, David A., Larus, James R. (1999) (en ingls). Computer organization and design : the hardware/software interface (2da edicin). San Francisco: Kaufmann. ISBN 1-55860-428-6. 6. a b Barney, Blaise. Introduction to Parallel Computing (http://www.llnl.gov/computing/tutorials/parallel_comp/) (en ingls). Lawrence Livermore National Laboratory. Consultado el 9 de noviembre de 2007. 7. Hennessy, John L.; Patterson, David A. (2002) (en ingls). Computer architecture a quantitative approach. (3ra edicin). San Francisco, California: International Thomson. p. 43. ISBN 1-55860-724-2. 8. Rabaey, Jan M. (1996) (en ingls). Digital integrated circuits : a design perspective. Upper Saddle River, N.J.: Prentice-Hall. p. 235. ISBN 0-13-178609-1. 9. Flynn, Laurie J.. Intel Halts Development Of 2 New Microprocessors (http://www.nytimes.com/2004/05/08/business/08chip.html? ex=1399348800&en=98cc44ca97b1a562&ei=5007) , 8 de mayo de 2004. Consultado el 5 de junio de 2012 (en ingls). 10. Moore, Gordon E. (1965). Cramming more components onto integrated circuits (ftp://download.intel.com/museum/Moores_Law/ArticlesPress_Releases/Gordon_Moore_1965_Article.pdf) (en ingls) (pdf). Electronics Magazine. Consultado el 11 de noviembre de 2006. 11. Amdahl, Gene M. (18-20 de abril de 1967). Validity of the single processor approach to achieving large scale computing capabilities (http://dl.acm.org/citation.cfm?id=160438) (en ingls). Proceeding AFIPS '67 (Spring): pp. 483485. doi:10.1145/1465482.1465560 (http://dx.doi.org/10.1145%2F1465482.1465560) . http://dl.acm.org/citation.cfm?id=160438. 12. Brooks, Frederick P. (1996) (en ingls). The mythical man month essays on software engineering (Anniversary, repr. with corr., 5 edicin). Reading, Mass.: Addison-Wesley. ISBN 0-201-83595-9. 13. Gustafson, John L. (mayo 1988). Reevaluating Amdahl's law (http://www.scl.ameslab.gov/Publications/Gus/AmdahlsLaw/Amdahls.html) (en ingls). Communications of the ACM 31 (5): pp. 532533. doi:10.1145/42411.42415 (http://dx.doi.org/10.1145%2F42411.42415) . http://www.scl.ameslab.gov/Publications/Gus/AmdahlsLaw/Amdahls.html. 14. Bernstein, A. J. (1 de octubre de 1966). Analysis of Programs for Parallel Processing (en ingls). IEEE Transactions on Electronic Computers EC-15

15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33.

34.

35.

36.

(5): pp. 757763. doi:10.1109/PGEC.1966.264565 (http://dx.doi.org/10.1109%2FPGEC.1966.264565) . Roosta, Seyed H. (2000) (en ingls). Parallel processing and parallel algorithms: theory and computation. New York, NY [u.a.]: Springer. p. 114. ISBN 0-387-98716-9. Lamport, Leslie (1 septiembre de 1979). How to Make a Multiprocessor Computer That Correctly Executes Multiprocess Programs (en ingls). IEEE Transactions on Computers C-28 (9): pp. 690691. doi:10.1109/TC.1979.1675439 (http://dx.doi.org/10.1109%2FTC.1979.1675439) . Patterson y Hennessy, p. 748. Culler et al. p. 15. Culler et al. p. 15. Patt, Yale. (2004). The Microprocessor Ten Years From Now: What Are The Challenges, How Do We Meet Them? (http://users.ece.utexas.edu/~patt/Videos/talk_videos/cmu_04-29-04.wmv) (wmv). Consultado el 7 de noviembre de 2007. a b Culler et al. p. 124. a b Culler et al. p. 125. a b Patterson y Hennessy, p. 713. a b Hennessy y Patterson, p. 549. Patterson y Hennessy, p. 714. What is clustering? Webopedia computer dictionary (http://www.webopedia.com/TERM/c/clustering.html) (en ingls). Consultado el 7 de noviembre de 2007. Beowulf definition (http://www.pcmag.com/encyclopedia_term/0,2542,t=Beowulf&i=38548,00.asp) (en ingls). Consultado el 7 de noviembre de 2007. Architecture share for 06/2007 (http://www.top500.org/stats/list/29/archtype) (en ingls). Consultado el 7 de noviembre de 2007. Hennessy y Patterson, p. 537. (en ingls) MPP Definition (http://www.pcmag.com/encyclopedia_term/0,,t=mpp&i=47310,00.asp) . PC Magazine. http://www.pcmag.com/encyclopedia_term/0,,t=mpp&i=47310,00.asp. Consultado el 7 de noviembre de 2007. Kirkpatrick, Scott (2003). COMPUTER SCIENCE: Rough Times Ahead (en ingls). Science 299 (5607): pp. 668669. doi:10.1126/science.1081623 (http://dx.doi.org/10.1126%2Fscience.1081623) . PM ID 12560537 (http://www.ncbi.nlm.nih.gov/pubmed/12560537) . a b c Michael R. Chief Operating Officer, DRC Computer Corporation, Invited speaker D'Amour (28 de febrero de 2007) (en ingls). Standard Reconfigurable Computing. Universidad de Delaware. Sha'Kia, Boggan; Pressel, Daniel M. (agosto de 2007) (en ingls, pdf). GPUs: An Emerging Platform for General-Purpose Computation ARL-SR-154 (http://www.arl.army.mil/arlreports/2007/ARL-SR-154.pdf) . U.S. Army Research Lab. http://www.arl.army.mil/arlreports/2007/ARL-SR-154.pdf. Consultado el 7 de noviembre de 2007. Maslennikov, Oleg (2002). Systematic Generation of Executing Programs for Processor Elements in Parallel ASIC or FPGA-Based Systems and Their Transformation into VHDL-Descriptions of Processor Element Control Units (http://www.springerlink.com/content/jjrdrb0lelyeu3e9/) (en ingls). Lecture Notes in Computer Science 2328/2002: p. 272. http://www.springerlink.com/content/jjrdrb0lelyeu3e9/. Shimokawa, Y.; Y. Fuwa and N. Aramaki (18 al 21 de noviembre de 1991). A parallel ASIC VLSI neurocomputer for a large number of neurons and billion connections per second speed (http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=170708) (en ingls). International Joint Conference on Neural Networks 3: pp. 21622167. doi:10.1109/IJCNN.1991.170708 (http://dx.doi.org/10.1109%2FIJCNN.1991.170708) . ISBN 0-7803-0227-3. http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=170708. Acken, Kevin P.; Irwin, Mary Jane; Owens, Robert M. (1 de enero de 1998). (en ingls)The Journal of VLSI Signal Processing 19 (2): pp. 97113. doi:10.1023/A:1008005616596 (http://dx.doi.org/10.1023%2FA%3A1008005616596) .

37. (en ingls) Scoping the Problem of DFM in the Semiconductor Industry (http://www.future-fab.com/documents.asp?grID=353&d_ID=2596) . Universidad de California, San Diego. 21 de junio de 2004. http://www.future-fab.com/documents.asp?grID=353&d_ID=2596. 38. a b Patterson y Hennessy, p. 751. 39. Sidney Fernbach Award given to MPI inventor Bill Gropp (http://awards.computer.org/ana/award/viewPastRecipients.action?id=16) (en ingls). 40. Shen, John Paul; Mikko H. Lipasti (2004) (en ingls). Modern processor design : fundamentals of superscalar processors (1ra edicin). Dubuque, Iowa: McGraw-Hill. p. 561. ISBN 0-07-057064-7. 41. Padua, David (2011) (en ingls). Encyclopedia of Parallel Computing. 4. p. 265. ISBN 0387097651. 42. Krste, et al., Asanovic (18 de diciembre de 2006) (en ingls, pdf). The Landscape of Parallel Computing Research: A View from Berkeley (http://www.eecs.berkeley.edu/Pubs/TechRpts/2006/EECS-2006-183.pdf) . Universidad de California, Berkeley. pp. 17-19. http://www.eecs.berkeley.edu/Pubs/TechRpts/2006/EECS-2006-183.pdf. 43. a b Hennessy, Patterson (en ingls). pp. 74950. 44. Conte Menabrea Menabrea, L. F., Federico Luigi (1842). Sketch of the Analytic Engine Invented by Charles Babbage (http://www.fourmilab.ch/babbage/sketch.html) (en ingls). Consultado el 7 de noviembre de 2007. 45. a b c Patterson y Hennessy, p. 753. 46. da Cruz, Frank (2003). Columbia University Computing History: The IBM 704 (http://www.columbia.edu/acis/history/704.html) (en ingls). Columbia University. Consultado el 1 de agosto de 2008. 47. Gill, S. (abril de 1958) (en ingls). Parallel Programming. 1. Sociedad Britnica de Computacin: The Computer Journal. pp. 2-10. 48. a b c d e Wilson, Gregory V (1994). The History of the Development of Parallel Computing (http://ei.cs.vt.edu/~history/Parallel.html) (en ingls). Virginia Tech/Norfolk State University, Interactive Learning with a Digital Library in Computer Science. Consultado el 1 de agosto de 2008. 49. Anthes, Gry (19 de noviembre de 2001). The Power of Parallelism (http://www.computerworld.com/action/article.do? command=viewArticleBasic&articleId=65878) (en ingls). Computerworld. Consultado el 1 de agosto de 2008. 50. Patterson y Hennessy, p. 749.

Bibliografa
Singh, David Culler ; J.P. (1997) (en ingls). Parallel computer architecture (Nachdr. edicin). San Francisco: Morgan Kaufmann Publ.. p. 15. ISBN 1-55860-343-3. Hennessy, John L.; Patterson, David A. (27 de septiembre de 2006) (en ingls). Computer Architecture: A Quantitative Approach [Arquitectura de computadoras: un enfoque cuantitativo] (4ta edicin). Morgan Kaufmann. ISBN 0123704901. Patterson, David A.; Hennessy, John L. (9 de noviembre de 2011) (en ingls). Computer Organization and Design, Fourth Edition: The Hardware/Software Interface [Organizacin y diseo de computadoras, 4ta edicin: La interfaz hardware/software] (4ta edicin). Morgan Kaufmann. ISBN 0123747503.

Lectura adicional

Rodriguez, C.; Villagra, M.; Baran, B. (29 de agosto de 2008). Asynchronous team algorithms for Boolean Satisfiability (http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=4610083) (en ingls). Bio-Inspired Models of Network, Information and Computing Systems, 2007. Bionetics 2007. 2nd: pp. 6669. doi:10.1109/BIMNICS.2007.4610083 (http://dx.doi.org/10.1109%2FBIMNICS.2007.4610083) . http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=4610083.

Enlaces externos
Wikilibros alberga un libro o manual sobre Distributed Systems. Wikimedia Commons alberga contenido multimedia sobre Computacin paralela. Computacin paralela (http://dmoz.org/Computers/Parallel_Computing/) en Open Directory Project. OpenHMPP, A New Standard for Manycore (http://www.openhmpp.org) (en ingls) Internet Parallel Computing Archive (http://wotug.ukc.ac.uk/parallel/) (en ingls) Universal Parallel Computing Research Center (http://www.upcrc.illinois.edu/) (en ingls) Designing and Building Parallel Programs, by Ian Foster (http://www-unix.mcs.anl.gov/dbpp/) (en ingls) Go Parallel: Translating Multicore Power into Application Performance (http://goparallel.sourceforge.net/) (en ingls) What makes parallel programming hard? (http://www.futurechips.org/tips-for-power-coders/parallel-programming.html) (en ingls) Course in Parallel Computing at University of Wisconsin-Madison (http://sbel.wisc.edu/Courses/ME964/2011/index.htm) (en ingls) Parallel and distributed Gr bases computation in JAS (http://arxiv.org/PS_cache/arxiv/pdf/1008/1008.0011v1.pdf) (en ingls) obner Parallel Computing Works Free On-line Book (http://www.new-npac.org/projects/cdroms/cewes-1998-05/copywrite/pcw/book.html) (en ingls) Comparing programmability of Open MP and pthreads (http://www.futurechips.org/tips-for-power-coders/open-mp-pthreads.html) (en ingls) Lawrence Livermore National Laboratory: Introduction to Parallel Computing (http://www.llnl.gov/computing/tutorials/parallel_comp/) (en ingls) Course in Parallel Programming at Columbia University (in collaboration with IBM T.J Watson X10 project) (http://ppppcourse.ning.com/) (en ingls) Frontiers of Supercomputing Free On-line Book Covering topics like algorithms and industrial applications (http://ark.cdlib.org/ark:/13030/ft0f59n73z/) (en ingls) Parallel processing topic area at IEEE Distributed Computing Online (http://dsonline.computer.org/portal/site/dsonline/index.jsp? pageID=dso_level1_home&path=dsonline/topics/parallel&file=index.xml&xsl=generic.xsl) (en ingls) Este artculo fue creado a partir de la traduccin del artculo Parallel_computing de la Wikipedia en ingls, bajo la Licencia Creative Commons Atribucin-CompartirIgual 3.0 Unported y la Licencia de documentacin libre de GNU. Obtenido de http://es.wikipedia.org/w/index.php?title=Computacin_paralela&oldid=64122532 Categoras: Programacin concurrente Computacin distribuida Programacin paralela

Esta pgina fue modificada por ltima vez el 25 feb 2013, a las 15:29. El texto est disponible bajo la Licencia Creative Commons Atribucin Compartir Igual 3.0; podran ser aplicables clusulas adicionales. Lanse los trminos de uso para ms informacin. Wikipedia es una marca registrada de la Fundacin Wikimedia, Inc., una organizacin sin nimo de lucro.

Anda mungkin juga menyukai