La computación paralela es una forma de que computa en el cual muchas instrucciones se realicen simultáneamente. La computación paralela funciona encendido el principio que los problemas grandes se pueden dividir casi siempre en los más pequeños, que pueden ser el realizado concurrentemente (" paralelamente "). La computación paralela existe en varias diversas formas: paralelismo del Pedacito-nivel, paralelismo del nivel de la instrucción, paralelismo de los datos, y paralelismo de la tarea. Se ha utilizado durante muchos años, principalmente en la computación de alto rendimiento, pero el interés en él tiene mayor estos últimos años convertida debido a los apremios físicos que previenen el escalamiento de la frecuencia. La computación paralela se ha convertido en recientemente el paradigma dominante en la arquitectura de computadora, principalmente bajo la forma de procesadores multifilares

Los programas de computadora paralela son más duros de escribir que los secuenciales, porque la concurrencia introduce varias nuevas clases de los insectos de software potenciales cuyo las condiciones de raza son las mas comunes. La comunicación y la sincronización entre las diversas subtareas es típicamente una de las barreras más grandes a conseguir buen funcionamiento de programa paralelo. Estos últimos años, las computadoras del consumo de energía paralelamente también se han convertido en una gran preocupación. El acelera de un programa como resultado de la paralelización es dado por la ley de Amdahl.

Fondo

Tradicionalmente, los programas informáticos se han escrito para el cómputo serial. Para solucionar un problema, un algoritmo se construye que produce una corriente serial de instrucciones. Estas instrucciones se ejecutan en una unidad central de proceso en una computadora. Solamente una instrucción puede ejecutar en un momento dado - se ejecuta esa instrucción es después finished, el siguiente.

La computación paralela por una parte utiliza elementos del proceso múltiple simultáneamente para solucionar un problema. El problema está roto en las piezas que son independientes de modo que cada elemento de proceso pueda ejecutar su parte del algoritmo simultáneamente con otras. Los elementos de proceso pueden ser diversos e incluir recursos tales como una sola computadora con los procesadores múltiples, un número de computadoras conectadas, hardware especializado o cualquier combinación del antedicho.

Sin embargo, el consumo de energía en una viruta se da por el P de la ecuación = la C \ los tiempos V^2 \ épocas F donde está energía P, C es la capacitancia que es cambiada por el ciclo de reloj (proporcional al número de cambio de las entradas de los transistores cuyo), V es el voltaje, y F es la frecuencia del procesador (ciclos por segundo). Los aumentos en frecuencia aumentan así la cantidad de energía usada en un procesador. El consumo de energía cada vez mayor del procesador llevó en última instancia Intel 's a la cancelación de mayo de 2004 de su Tejas y de los procesadores de Jayhawk, que se cita generalmente como el final del escalamiento de la frecuencia como el paradigma dominante de la arquitectura de computadora.

La ley de Moore es la observación empircal que la densidad del transistor en un microprocesador dobla cada 18 a 24 meses. A pesar de ediciones de la energía, y predicciones repetidas de su extremo, ley de Moore todavía está en efecto. Con el final del escalamiento de la frecuencia, estos transistores adicionales (que se utilizan no más para facilitar el escalamiento de la frecuencia) se pueden utilizar para agregar el hardware adicional para facilitar la computación paralela.

Ley de Amdahl y ley de Gustafson

El funcionamiento de un algoritmo en una plataforma de la computación paralela depende de hacer parelelismo el algoritmo para alcanzar funcionamiento así que es importante ser consciente de la ley de Amdahl, formulado original por Gene Amdahl en los años 60. Indica que una pequeña porción del programa que el can’t se haga parelelismo limitará el speedup total disponible de la paralelización. Cualquier voluntad grande de la matemáticas o del problema de la ingeniería consiste en típicamente varias piezas paralelizables y varias piezas (secuenciales) no-paralelizables. Esta relación es dada por la ley de Amdahl: = \ frac {1} del S del

l {(1 - P)}

donde está el speedup S del programa (como factor de su tiempo de pasada secuencial original), y P es la fracción que es paralelizable. Si la porción secuencial de un programa es el 10% del tiempo de pasada, no podemos conseguir no más que un speedup 10x, sin importar se agregan cuántos procesadores. Esto pone un límite superior en la utilidad de agregar unidades de una ejecución más paralela.

La ley de Gustafson es otra ley en la ingeniería de computadora, estrechamente vinculada a la ley de Amdahl. La ley de Gustafson se puede formular como: S del

l (- \ alpha* (P-1) de P) = de P

donde está el número P de procesadores, S es el speedup, y el \ alpha la parte no-paralelizable del proceso. La ley de Amdahl asume un tamaño del fijo-problema y que el tamaño de la sección secuencial es independiente del número de procesadores, mientras que la ley de Gustafson no hace estas asunciones.

Dependencias

Que entienden los datos las dependencias son una de las fundaciones de saber ejecutar los algoritmos paralelos que ningún programa puede funcionar más aprisa que la cadena más larga de los cálculos dependientes (conocidos como la trayectoria crítica ), puesto que el hecho de que los cálculos sean dependientes introduzcan ordenar de ejecuciones. Afortunadamente, la mayoría de los algoritmos no consisten en una cadena larga de cálculos dependientes y poco otro, sino que por el contrario hay muchas oportunidades para ejecutar cálculos independientes paralelamente.

Dejar Pi y Pj ser dos fragmentos del programa. Las condiciones de Bernstein’s describen cuando los dos son independientes y se pueden ejecutar paralelamente. Dejar Ii ser todas las variables de entrada a Pi y a Oi las variables de salida, y además para Pj. P i y Pj es independiente si satisfacen
I_j del

\ = \ emptyset de O_i del casquillo
I_i \ = \ emptyset de O_j del casquillo
O_i \ = \ emptyset de O_j del casquillo

La violación de la condición del ï¬rst introduce una dependencia del ow del ‚del ï¬, correspondiendo a la declaración del ï¬rst produciendo un resultado usado por la segunda declaración. La segunda condición representa una Anti-dependencia, cuando la declaración del ï¬rst sobreescribe una variable necesaria por la segunda expresión. El tercero, y la condición q del ï¬nal es una dependencia de la salida. Cuando dos variables escriben a la misma localización, la salida del ï¬nal debe ser la que está de la segunda declaración.

Por ejemplo, considerar la función siguiente:

1: de la función Dep (a, b) 2: c: = a·b 3: d: = 2·c 4: función del final del

Operación 3 en el Dep (a, b) no se puede ejecutar antes (o aún paralelamente) de la operación 2, debido al hecho de que la operación 3 utiliza un resultado de la operación 2. Viola posición uno, e introduce así una dependencia del ow del ‚del ï¬.

1: de la función NoDep (a, b) 2: c: = a·b 3: d: = 2·b 4: e: = a+b 5: función del final del

En este ejemplo no hay dependencias entre las instrucciones, así que pueden todos ser funcionados paralelamente.

Las condiciones de Bernstein’s no permiten que la memoria sea compartida entre diversos procesos. Para ése, algunos medios de hacer cumplir ordenar entre los accesos, tales como semáforos, las barreras o un cierto otro método de la sincronización son necesarios.

Condiciones de raza, exclusión mutua, y sincronización

Las subtareas en un programa paralelo a menudo se llaman los hilos de rosca . Algunas arquitecturas de computadora paralela utilizan versiones más pequeñas, ligeras de los hilos de rosca conocidos como fibras, mientras que otras utilizan versiones más grandes sabidas mientras que el procesa . Sin embargo, " threads" está generalmente aceptado como término genérico para las subtareas.

Los hilos de rosca necesitarán a menudo poner al día un cierto variable que se comparta entre ellos. Las instrucciones entre los dos programas pueden ser interpolados en cualquier orden. Por ejemplo, considerar el programa siguiente

Paralelismo de grano fino, de grano grueso, y embarazoso

Los usos se clasifican a menudo según cuantas veces su necesidad de las subtareas de sincronizar o de comunicar con uno a. Un uso exhibe paralelismo de grano fino si sus subtareas deben comunicar muchas veces por segundo; exhibe paralelismo curso-granuloso si no comunican muchas veces por segundo, y es el embarazosamente paralelo si ellas raramente o nunca tiene que comunicar. Embarazosamente los usos paralelos se consideran el más fácil hacer parelelismo.

Modelos de la consistencia

considera también:

l modelo de la consistencia

Los lenguajes el de programación paralelo y las computadoras paralelas deben tener un modelo de la consistencia (también conocido como modelo de memoria). El modelo de la consistencia define las reglas para cómo ocurren las operaciones en la memoria de computadora y cómo se producen los resultados.

Uno de los primeros modelos de la consistencia era modelo secuencial de la consistencia de s de Leslie Lamport '. La consistencia secuencial es la característica de un programa paralelo que su ejecución paralela produce los mismos resultados que un programa secuencial. Específicamente, un programa es secuencialmente constante si " … los resultados de cualquier ejecución son iguales como si las operaciones de todos los procesadores fueran ejecutadas en una cierta orden secuencial, y las operaciones de cada procesador individual aparecen en esta secuencia en la orden especificada por su program."

La memoria transaccional del software es un tipo común de modelo de la consistencia. Los préstamos transaccionales de la memoria del software de la teoría de la base de datos el concepto de las transacciones atómicas y las aplican a los accesos de memoria.

Matemáticamente, estos modelos se pueden representar de un número de maneras. El cálculo de proceso es la rama de las matemáticas que se ocupa de concurrencia. El cálculo de proceso se puede subdividir en el cálculo ambiente, el cálculo de los sistemas de comunicación, y el que comunica los procesos secuenciales . Las redes de Petri eran una tentativa temprana de codificar las reglas de modelos de la consistencia. Teoría del flujo de datos construida más adelante sobre éstos. Las arquitecturas del flujo de datos fueron creadas más adelante que ejecutan físicamente las ideas del flujo de datos.

Taxonomía de Flynn

El Michael J Flynn creó uno de los sistemas de clasificación más tempranos para las computadoras paralelas (y secuenciales) y los programas, ahora conocidos como taxonomía de Flynn. Flynn clasificó programas y las computadoras cerca si funcionaban usar sistemas solos o múltiples de instrucciones, independientemente de si esas instrucciones utilizaban sistemas de datos solos o múltiples.

La clasificación (SISD) de los solo-instrucción-solo-datos es equivalente a un programa enteramente secuencial. La clasificación (SIMD) de los solo-instrucción-múltiple-datos es análoga a hacer la misma operación en varias ocasiones sobre un conjunto de datos grande. Esto se hace comúnmente en usos del tratamiento de señales . los Múltiple-instrucción-solos datos (MISD) son una clasificación raramente usada. Mientras que las arquitecturas de computadora a tratar de esto fueron ideadas (por ejemplo los órdenes sistólicos, pocos usos que cupieron esta clase materializada. los programas (MIMD) de los Múltiple-instrucción-múltiple-datos son en gran medida el tipo más común de programas paralelos.

Según el David A. Patterson y el Juan L. Hennessy, " Algunas máquinas son híbridos de estas categorías, por supuesto, solamente este modelo clásico ha sobrevivido porque es simple, fácil entender, y da una buena primera aproximación. Es also— quizás debido a su understandability— el scheme." más ampliamente utilizado;

Tipos de paralelismo

paralelismo del Pedacito-nivel

considera también:

l paralelismo del Pedacito-nivel Del advenimiento Muy-grande-escalar la tecnología de la fabricación del chip de ordenador de la integración (VLSI) en los años 70 hasta cerca de 1986, adelantos en arquitectura de computadora fueron hechos doblando el †del tamaño de la palabra de computadora” la cantidad de información que el procesador puede ejecutar por ciclo. El aumento del tamaño de la palabra reduce el número de instrucciones que el procesador debe ejecutar para realizar una operación en las variables cuyos tamaños son mayores que la longitud de la palabra. (Por ejemplo, considerar un caso donde un procesador de 8 bits de debe agregar dos números enteros de 16 bits el procesador debe primero agregar los 8 pedacitos de la bajo-orden de cada número entero usar la instrucción estándar de la adición, después agrega los 8 pedacitos higher-order (usar una instrucción del agregar-con-llevar y el llevar el pedacito de la adición de una orden más baja) que requieren así dos instrucciones de terminar una sola operación. Un procesador de 16 bits podría terminar la operación con la sola instrucción.)

Históricamente, los microprocesadores del pedacito 4 fueron substituidos por el de 8 bits, entonces de 16 bits, entonces microprocesadores de 32 bits . Esta tendencia acabó generalmente con la introducción de procesadores de 32 bits, que tiene sido un estándar en los fines generales que computan por dos décadas. Solamente recientemente, con el advenimiento de las arquitecturas X86-64, tener procesadores 64-bit hacer corrientes.

Paralelismo llano de la instrucción

considera también:

l paralelismo del nivel de la instrucción Un programa de computadora es, esencialmente, una corriente de las instrucciones ejecutadas por un procesador. El de estas instrucciones puede ser reordenado y combinado en los grupos que entonces se ejecutan paralelamente sin el cambio del resultado del programa. Esto se conoce como paralelismo del nivel de la instrucción. Los adelantos en la instrucción nivelan arquitectura de computadora dominada paralelismo a partir de los a mediados de los años ochenta hasta el mediados de los 90.

Los procesadores modernos tienen tuberías graduales de la instrucción que cada etapa en la tubería corresponde a una diversa acción el procesador se realiza en esa instrucción en esa etapa. Es decir un procesador con las etapas de la tubería de N puede tener hasta diversas instrucciones de N en diversas etapas de la terminación. El ejemplo canónico de un procesador canalizado es un procesador del RISC con cinco etapas: la búsqueda de instrucciones, descifra, ejecuta, acceso de memoria, contesta. El procesador del Pentium 4 tenía una tubería de 35 etapas.

Además de paralelismo del nivel de la instrucción de la can¢ería, algunos procesadores pueden publicar más de una instrucción a la vez. Éstos se conocen como procesadores de Superscalar . Las instrucciones pueden ser agrupadas juntas solamente si no hay dependencia de los datos entre ellas.

El Scoreboarding y el algoritmo (que de Tomasulo es similar a scoreboarding pero hace uso del registro que retitula ) son dos de las técnicas mas comunes para ejecutar paralelismo llano fuera de servicio de la ejecución y de la instrucción.

Paralelismo de los datos

considera también:

l paralelismo de los datos El paralelismo de los datos es paralelismo inherente en los lazos del programa. " El hacer parelelismo coloca lleva a menudo a las secuencias similares o a las funciones de la operación (no no necesario idéntica) que son realizadas en elementos de los datos grandes structure." Muchos usos científicos y de la ingeniería exhiben paralelismo de los datos.

Una dependencia Lazo-llevada es la característica de una iteración del lazo que depende de la salida de iteraciones anteriores. Las dependencias llevadas lazo previenen la paralelización de lazos.

Mientras que el tamaño de un problema consigue más grande, la cantidad de dato-paralelismo disponible hace generalmente también.

Paralelismo de la tarea

considera también:

l paralelismo de la tarea El paralelismo de la tarea es la característica de un programa paralelo que " cálculos enteramente diversos se pueden realizar en igual o diversos sistemas de data". La memoria distribuida refiere al hecho de que la memoria está distribuida lógicamente, pero implica a menudo que está distribuida físicamente también. La memoria compartida distribuida es una combinación de los dos acercamientos, donde el elemento de proceso tiene su propia memoria local y acceso a la memoria en procesadores non-local. Los accesos a la memoria local son típicamente más rápidos que accesos a la memoria non-local.

Las arquitecturas de computadora en las cuales todo el de memoria principal se puede alcanzar con el estado latente igual y la anchura de banda se conocen como sistemas del acceso de memoria del uniforme (UMA). Típicamente, solamente un sistema de la memoria compartida (donde la memoria no se distribuye físicamente) puede alcanzar éstos. Un sistema que no tiene esta característica se conoce como arquitectura no uniforme del acceso de memoria (NUMA). Los sistemas de memoria distribuidos tienen acceso de memoria no uniforme.

Los sistemas informáticos hacen uso del €” pequeño, las memorias rápidas de los escondrijos situadas cerca del procesador que almacenan copias temporales de los valores de la memoria. (Cerca en el sentido físico y lógico.) Los sistemas informáticos paralelos tienen dificultades con los escondrijos que pueden almacenar el mismo valor en más de una localización, creando la posibilidad de la ejecución de programa incorrecta. Estas computadoras requieren un sistema de la coherencia del escondrijo, que no pierde de vista valores depositados y los purga estratégico, así asegurando la ejecución de programa correcta. El autobús snooping es uno de los métodos mas comunes para no perder de vista qué valores están siendo alcanzados (y debe ser purgado así). El diseño de sistemas grandes, de alto rendimiento de la coherencia del escondrijo es un problema muy difícil en arquitectura de computadora. Consecuentemente, las arquitecturas de computadora de la compartir-memoria no escalan tan bien como sistemas de memoria distribuidos hacer. La contención del autobús previene arquitecturas del autobús del escalamiento. Consecuentemente, SMPs no excede generalmente 32 procesadores. " Debido a el tamaño pequeño de los procesadores y la reducción significativa en los requisitos para la anchura de banda del autobús alcanzada por los escondrijos grandes, tales multiprocesadores simétricos son extremadamente rentables, a condición de que una suficiente cantidad de exists" de la anchura de banda de la memoria; Los racimos se componen de las máquinas independientes múltiples conectadas por una red. Mientras que las máquinas en un racimo no tienen que ser simétricas, el equilibrio de carga es más difícil si no son.

El tipo más común de racimo es el racimo de Beowulf, que es un racimo ejecutado en las computadoras disponibles comerciales idéntico múltiple conectadas con una red de área local de Ethernet del TCP/IP . La tecnología de Beowulf fue desarrollada original por el Thomas esterlina y el Donald Becker .

La gran mayoría de los superordenadores TOP500 es racimos.

Procesamiento en paralelo masivo

considera también:

masivo del procesamiento en paralelo

Un procesador masivo paralelo (MPP) es una sola computadora con un número muy grande de procesadores conectados. MPPs tiene muchas de las mismas características que racimos, pero son generalmente más grandes, típicamente teniendo " more" lejano; que 100 procesadores. En un MPP, " cada CPU contiene su propia memoria y copia del sistema operativo y del uso. Cada subsistema comunica con los otros vía un interconnect." de alta velocidad;

El Gene/L azul, el superordenador más rápido del mundo según la graduación TOP500, es un MPP.

Computación de la rejilla

considera también: Rejilla que computa el

La rejilla que computa es la forma distribuida de computación paralela. La rejilla que computa hace uso de las computadoras muchas millas aparte, conectado por el el Internet, para trabajar en un problema dado. Debido a la anchura de banda baja y el estado latente extremadamente alto disponibles en el Internet, típicamente repartos computacionales de la rejilla solamente con problemas embarazosamente paralelos. Se ha creado el muchos usos computacionales de la rejilla, cuyo el SETI@home y el Folding@Home son los ejemplos más conocidos.

La mayoría de los usos computacionales de la rejilla utilizan software del †del software intermediario el” que funciona entre el sistema operativo y el uso, que maneja recursos de red y estandardiza la interfaz para los usos computacionales de la rejilla. El software intermediario computacional de la rejilla más común es la infraestructura abierta de Berkeley para la red que computa (BOINC). A menudo, el software computacional de la rejilla hace uso del " cycles" de repuesto;, haciendo cómputos ocasionalmente cuando una computadora está estando desocupada.

Computadoras paralelas especializadas

Dentro de la computación paralela, hay los dispositivos paralelos especializados que sigue habiendo campos de interés del lugar. Mientras que no el dominio específico, ellos tiende a ser aplicable solamente a algunas clases de problemas paralelos.

; Computación reconfigurable con órdenes de puerta field-programmable El computacional reconfigurable es el uso de un arsenal de puerta Field-programmable (FPGA) como coprocesador a una computadora de fines generales. Un FPGA es, esencialmente, un chip de ordenador que puede telegrafiarse de nuevo para una tarea dada.

FPGAs se puede programar con los idiomas descriptivos de hardware tal como VHDL o Verilog . Sin embargo, la programación en estas idiomas puede ser aburrida. Un número de vendedores han creado el C a las idiomas de HDL, esa tentativa de emular al sintaxis y/o a la semántica del lenguaje de programación C, con el cual la mayoría de los programadores son familiares. Las idiomas más conocidas de C a de HDL son Mitrion-C, el impulso C, el DIME-C, y Handel-C .

La decisión de AMD para abrir su tecnología de HyperTransport en los vendedores de tercera persona se ha convertido en la tecnología de permisión para la computación reconfigurable del alto rendimiento.D'Amour, CEO DRC Computer Corporation, " cuando primero caminamos en AMD, nos llamaron “los stealers del zócalo .” Ahora nos llaman su partners." El proceso de los gráficos de computadora es un campo dominado por operaciones de la matriz de la álgebra linear del operations†del paralelo de los datos” particularmente.

El CUDA es el GPGPU dominante al lenguaje de programación. CUDA fue desarrollado por NVIDIA para el uso en tarjetas gráficas de NVIDIA. Otros lenguajes de programación de GPU son BrookGPU, PeakStream, y RapidMind .

El NVIDIA Tesla es tarjeta dedicada de GPGPU de NVIDIA primer.

; Circuitos integrados específicos a la aplicación

considera también:

específico a la aplicación del circuito integrado Un número de acercamientos específicos a la aplicación del circuito integrado (ASIC) se han ideado para ocuparse de usos paralelos.

Porque un ASIC es (por definición) específico a un uso dado, puede ser optimizado completamente para ese uso. Consecuentemente, para un uso dado, un ASIC tiende a superar una computadora de fines generales. Sin embargo, ASICs es creado por la litografía de la radiografía. Este proceso requiere una máscara, que puede ser extremadamente costosa. Una sola máscara puede costar sobre los dólares de Estados Unidos de millón (cuanto más pequeños son los transistores requeridos para la viruta, más costosa la máscara será.) Mientras tanto, los aumentos del funcionamiento en los fines generales que computan como resultado de la ley de Moore tienden a limpiar hacia fuera estos aumentos en solamente uno o dos generaciones de la viruta. Son estrechamente vinculados a la clasificación de SIMD de Flynn.mmp, un proyecto del multiprocesador de los años 70 en la universidad del Carnegie Mellon, era " entre los primeros multiprocesadores con más que algunos processors." El ILLIAC IV era el esfuerzo más temprano de la computación paralela de SIMD. ILLIAC IV es " quizás el más infame de Supercomputers" el — el proyecto fue construido solamente un cuarto a la terminación, pero tardó 11 años para construir y para costar a casi cuatro veces su coste estimado original.

  • Zenithic
  • Shock Gibson
    Random links:Wolfgang Böhmer | Mike Easley | Districto de Kalininsky | Mauricio Koechlin

  • © 2007-2008 enciclopediaespana.com; article text available under the terms of GFDL, from en.wikipedia.org
    ="http://pagead2.googlesyndication.com/pagead/show_ads.js">