Modelos paralelos actuales para computación


30

La década de 1980 dio lugar a los modelos PRAM y BSP de cómputo paralelo. Parece que el apogeo de ambos modelos fue a finales de los 80 y principios de los 90.

¿Estas áreas aún están activas en términos de investigación para algoritmos paralelos? ¿Existen modelos más nuevos y sofisticados para la computación paralela? ¿Los modelos generales todavía están de moda, o los investigadores están tratando de especializarse con GPGPU o la computación basada en la nube que está de moda?

Respuestas:


19

Hay una serie de modelos flotando, pero algunos de los más destacados son:

  1. Los modelos MUD y Mapreduce que tratan principalmente de capturar el marco de MapReduce, pero en general se pueden ver como modelos de cómputo distribuidos en paralelo.
  2. Los diversos modelos multinúcleo que se han propuesto (pero de ninguna manera son el estándar todavía)

Hubo un taller el mes pasado en DIMACS sobre este tema: leer detenidamente los resúmenes le dará más consejos.


¡El taller de DIMAC es genial! Gracias.
Nicholas Mancuso

3
Hubo un taller anterior en 2009 umiacs.umd.edu/conferences/tmc2009 que me pareció aún más afilado que el reciente DIMAC. Leslie Valiant introdujo el modelo Multi-BSP allí (discutido con más detalle en el taller de este año), y Phil Gibbons de Intel presentó una Teoría de conversación provocativa : dormido en el cambio a muchos núcleos que vale la pena mirar. Para mí, el taller de DIMAC estaba demasiado centrado en MapReduce, que Google ya no usa para construir su índice web.
András Salamon

es verdad. Me había olvidado del anterior.
Suresh Venkat

22

Pido disculpas de antemano por el formato de publicación de blog de mi respuesta. No pude evitar hacer una pequeña descripción del mundo de la computación paralela.

Puede clasificar los modelos de programación paralela en aproximadamente dos categorías: modelos de flujo de control y flujo de datos.

Los modelos de flujo de control intentan hacer que el paralelismo funcione dentro del contexto de un programa de control explícito, básicamente todas las computadoras programables de hoy. El problema fundamental que se está abordando es que dicha 'arquitectura de Von Neumann' no fue diseñada para ejecución paralela, sino computaciones secuenciales eficientes. El paralelismo en dicho contexto se obtiene duplicando partes de los módulos básicos (memoria, control, aritmética).

Duplicar solo la aritmética le da instrucciones SIMD, todas las ALU comparten el mismo contador de programa (PC) y, por lo tanto, siempre ejecutan la misma operación en paralelo, aunque con datos diferentes.

Duplicar ALU y la PC, pero mantener el secuenciador de instrucciones dentro de la unidad de control le brinda ejecución fuera de orden (OoO) que produce cierto paralelismo de canalización. En esta categoría también tiene la Palabra de instrucción muy larga (VLWI) y las técnicas de predicción de ramificaciones. Sin embargo, rara vez ves esta categoría a nivel de software.

Ir un poco más allá es duplicar todo el 'núcleo' pero manteniendo la memoria compartida, estos son los procesadores multinúcleo actuales que le dan paralelismo de tareas (o hilos). Compartir memoria en este contexto le brinda problemas de concurrencia muy, muy difíciles y sutiles . Los cálculos paralelos en el multinúcleo actual, por lo tanto, giran completamente en torno a problemas de sincronización / concurrencia, el cuidadoso equilibrio del rendimiento (sin sincronización) y la semántica deseada (semántica de ejecución secuencial totalmente sincronizada). Ejemplos de esto es el PRAM o más popular en estos días, el Cilk ofshoots como fork / join ( IntelTBB , Java.Utils.Concurrency) Los modelos CSP y Actor son modelos de concurrencia, pero como se mencionó anteriormente, la concurrencia y el paralelismo se vuelven borrosos en un entorno de memoria compartida. Paralelismo nb es para el rendimiento, concurrencia para mantener la semántica correcta.

Duplicar la memoria también le brinda computadoras en red que se programan con MPI y sus características o simplemente arquitecturas extrañas que no son de Von Neumann, como los procesadores de red en un chip (procesador en la nube, Transputer, Tilera). Los modelos de memoria como UMA o NUMA intentan mantener la ilusión de memoria compartida y pueden existir a nivel de software o hardware. MPI mantiene el paralelismo a nivel de programa y solo se comunica a través del paso de mensajes. El paso de mensajes también se utiliza a nivel de hardware para la comunicación y la concurrencia (Transputer).

La segunda categoría son los modelos de flujo de datos . Estos fueron diseñados en los albores de la era de la computadora como una forma de escribir y ejecutar cálculos paralelos, evitando el diseño de Von Neumann. Estos cayeron de moda (para la computación paralela) en los años 80 después de que el rendimiento secuencial aumentara exponencialmente. Sin embargo, muchos sistemas de programación paralela como Google MapReduce, Dryad de Microsoft o Concurrent Collections de Intel son, de hecho, modelos computacionales de flujo de datos. En algún momento representan los cálculos como un gráfico y lo usan para guiar la ejecución.

Al especificar partes de los modelos, obtiene diferentes categorías y semánticas para el modelo de flujo de datos. ¿Cómo restringe la forma del gráfico a: DAG (CnC, Dryad), árbol (mapreduce), dígrafo? ¿Hay una semántica de sincronización estricta ( Lustre, programación reactiva]? ¿No permite la recursividad para poder tener un horario estático (StreaMIT) o proporciona más potencia expresiva al tener un programador dinámico (Intel CnC)? ¿Hay un límite en el número de bordes entrantes o salientes? ¿La semántica de disparo permite disparar el nodo cuando hay disponible un subconjunto de datos entrantes? Son flujos de datos de bordes (procesamiento de flujo) o tokens de datos únicos (asignación única estática / dinámica). Para el trabajo relacionado, puede comenzar mirando el trabajo de investigación de flujo de datos de personas como Arvind, K. Kavi, j. Sharp, W. Ackerman, R. Jagannathan, etc.

Editar: en aras de la integridad. Debo señalar que también hay modelos paralelos basados ​​en la reducción y en el patrón . Para las estrategias de reducción, en general, tiene reducción de gráficos y reducción de cadenas. Haskell básicamente utiliza la reducción de gráficos, que es una estrategia muy eficiente en un sistema secuencial de memoria compartida. La reducción de cadenas duplica el trabajo, pero tiene una propiedad de memoria privada que lo hace más adecuado para ser paralelizado implícitamente. Los modelos basados ​​en patrones son los lenguajes lógicos paralelos, como el prólogo concurrente. El modelo de actor también es un modelo basado en patrones, pero con características de memoria privada.

PD. Uso el término 'modelo' ampliamente, cubriendo máquinas abstractas tanto para fines formales como de programación.


No entiendo cómo mapreduce forma un árbol. ¿Podrías explicar?
Riko Jacob el

@Riko Jacob, digamos que asigna '+' a (1 2 3 4), conceptualmente esto crea un árbol de aplicaciones con '+' en cada nodo y cada número como hojas. reducir (o doblar si eres de haskel) colapsará cada nodo con los datos de sus hijos.
Carne de res el

K2,2

Si no tiene en cuenta la creación del gráfico en sí mismo (por ejemplo, mapeando a, b a los pares clave / vale), obtendrá dos árboles haciendo la reducción, con un poco de buena voluntad :) Tal vez sea más un gráfico conectado por k o enrejado como dijiste. Tienes razón en que es un poco más general que un árbol simple. Intenté hacer una distinción con estructuras de flujo de datos DAG más generales.
Carne

8

Para las arquitecturas de paso de mensajes, un modelo que es bastante similar al BSP pero más fácil de manejar y con un análisis de rendimiento cercano a lo que realmente se obtiene en una máquina real es ciertamente CGM o Multicomputadora de grano grueso. Fue propuesto por Frank Dehne, y encontrará muchos documentos interesantes que presentan algoritmos desarrollados en este contexto.

CGM se ajusta a arquitecturas de grano grueso asumiendo procesadores p, cada uno con memoria local O (n / p) y el tamaño de la entrada n mucho mayor (órdenes de magnitud separados) que p, es decir, p≪n. Por lo tanto, el modelo se mapea mucho mejor que otros en arquitecturas actuales; Se ha estudiado ampliamente. El modelo se basa en los siguientes supuestos: (i) los algoritmos ejecutan los llamados superpasos, que consisten en una fase de cálculo local y una fase de comunicación entre procesadores con sincronización de barrera intermedia, (ii) todos los procesadores p tienen acceso a O (n / p) memoria local, (iii) en cada paso superior, un procesador puede enviar y recibir como máximo elementos O (n / p) y (iv) la red de comunicación entre los procesadores puede ser arbitraria. En este modelo, se evalúa un algoritmo con su tiempo de cálculo y número de rondas de comunicación. Aunque el modelo es simple, proporciona una predicción razonable del rendimiento real de los algoritmos paralelos; de hecho, los algoritmos paralelos para CGM generalmente tienen un análisis de complejidad teórica muy cercano a los tiempos reales determinados experimentalmente al implementarlos y compararlos.



4

Por lo que sé, los modelos BSP y LogP se usan hoy para algoritmos distribuidos. Además, desde la computación GPU, la PRAM volvió a ser popular, sin embargo, uno debe incluir las jerarquías de memoria en el análisis. Puede verificar el modelo UPMH (jerarquía de memoria paralela uniforme) que se complementa muy bien con PRAM.

B. Alpern, L. Carter, E. Feig y T. Selker. El modelo uniforme de cálculo de jerarquía de memoria. Algorithmica, 12: 72-109, 1994. 10.1007 / BF01185206.

Bowen Alpern, Larry Carter y Jeanne Ferrante. Modelado de computadoras paralelas como jerarquías de memoria. En In Proc. Modelos de programación para computadoras masivamente paralelas, páginas 116– 123. IEEE Computer Society Press, 1993.

También para la informática de GPU, se ha propuesto un modelo de informática teórico; el modelo K:

Gabriele Capannini, Fabrizio Silvestri y Ranieri Baraglia. Modelo K: un nuevo modelo computacional para procesadores de flujo. En Actas de la 12ª Conferencia Internacional IEEE 2010 sobre Computación y Comunicaciones de Alto Rendimiento, HPCC '10, páginas 239–246, Washington, DC, EE. UU., 2010. IEEE Computer Society.

Por último, he visto autómatas celulares (CA) modelados como computadoras paralelas, personalmente creo que este es un tema de investigación muy interesante. Quién sabe en el futuro los procesadores se harán de esta manera, como pequeños espacios de computación. No tengo una referencia sólida para esto, puedes buscar en la web.


3

Los programas puramente funcionales permiten la ejecución paralela de expresiones independientes. Por lo tanto, los consideraría como modelos paralelos de computación.


No hay un modelo de costo particular asociado con la programación funcional, por lo que esto no responde la pregunta. Ver cstheory.stackexchange.com/questions/376/…
Charles Stewart

2
El mecanismo de evaluación para tales lenguajes basados ​​en cálculo lambda es la reducción, que en realidad no tiene un mapeo directo al hardware real. Es por eso que Haskell todavía tiene que introducir construcciones paralelas explícitas como 'par'. referencia: csg.csail.mit.edu/projects/languages/ph.shtml
Beef

3

Prefiero el enfoque Bader-Jaja (ver sección 2.1). Modela la complejidad como un problema de transmisión de mensajes. Para cada mensaje enviado hay una variable de latencia para iniciar la comunicación y una variable de ancho de banda.

tumptump


-3

Usted menciona la computación en la nube específicamente. En pocos años ha habido una intensa innovación en esta área con la nube de computación elástica de Amazon, el motor de aplicaciones de Google y varias herramientas y sus "modelos" de procesamiento paralelo conceptual asociados.

Las herramientas especiales de código abierto incluyen las bases de datos Mapreduce , Apache Hadoop y NoSQL de Google que están emergiendo como estándares nuevos, sólidos y ampliamente adaptados en las "mejores prácticas" y "patrones de diseño" del algoritmo de paralelización. También memcacheD se usa cada vez más como una base de datos distribuida en memoria. un ejemplo de esto está en uso en Facebook descrito en un artículo reciente [1].

[1] Muchos almacenes clave de valor clave por Berezecki et al.


otra vez. Pido modelos o cómputo paralelo. No herramientas MapReduce es uno de esos modelos. Sin embargo, Hadoop y NoSQL no lo son. Hadoop es una reificación basada en Java de MapReduce. NoSQL es un modelo para tiendas de claves relajadas por lo que puedo decir.
Nicholas Mancuso

MapReduce comenzó como una herramienta y se graduó en un modelo a través del uso / adopción generalizado. Lo mismo con los demás. Hadoop no es idéntico a MapReduce, pero puede ser similar. sí, supongo que me sorprendió la respuesta de Suresh que incluyó MapReduce ... a la gente no parece importarle mucho, o prefiere no discutir, los paquetes de software reales en este sitio ... no importa cuán ampliamente utilizado ... incluso teniendo en cuenta que inspiran / crosspollinate / unidad sólida teoría posterior como lo hizo MapReduce ... my bad = (
vzn

2
El punto es que no estás respondiendo la pregunta. La política aquí es que las sugerencias relacionadas tangencialmente con la pregunta no son respuestas aceptables. Si no le gusta esta política, puede optar por no participar. si tuviera ideas reales sobre cómo modelar un sistema paralelo del mundo real, eso sería más sobre el tema (aunque todavía no es una respuesta a la pregunta)
Sasho Nikolov

-3

otro ángulo sobre esto. Es cierto que esto podría ser considerado como algo oscuro o marginal por algunos, pero hay un trabajo para paralelizar, de manera general, algoritmos probabilísticos, que se afirman que son algo naturalmente adecuados para el paralelismo.

ver, por ejemplo , cómputos probabilísticos paralelos en un grupo de estaciones de trabajo Radenski, Vann, Norris:

Los algoritmos probabilísticos son métodos aproximados computacionalmente intensivos para resolver problemas intratables. Los algoritmos probabilísticos son excelentes candidatos para los cálculos de clúster porque requieren poca comunicación y sincronización. Es posible especificar una estructura de control paralelo común como un algoritmo genérico para cálculos probabilísticos de conglomerados. Tal algoritmo paralelo genérico se puede pegar junto con algoritmos secuenciales específicos de dominio para obtener soluciones paralelas aproximadas para diferentes problemas intratables. En este artículo, proponemos un algoritmo genérico para cálculos probabilísticos en un grupo de estaciones de trabajo. Utilizamos este algoritmo genérico para derivar algoritmos paralelos específicos para dos problemas de optimización discreta: el problema de la mochila y el problema del vendedor ambulante.

en caso de que no esté claro, la "estructura de control paralelo común como un algoritmo genérico" al que se hace referencia junto con el cálculo probabilístico y la conversión general, es el "modelo".

se podría argumentar que la computación probabilística no es estrictamente computacional clásica o completa de Turing. así que tenga en cuenta que hay algo de trabajo en vincular el cálculo clásico con el probabilístico también específicamente en un contexto paralelo, por ejemplo

Razonamiento sobre programas paralelos probabilísticos de Rao:

El uso de la aleatorización en el diseño y análisis de algoritmos promete algoritmos simples y eficientes para problemas difíciles, algunos de los cuales pueden no tener una solución determinista. Esta ganancia en simplicidad, eficiencia y capacidad de solución da como resultado una compensación de la noción tradicional de corrección absoluta de algoritmos por una noción más cuantitativa: corrección con una probabilidad entre 0 y 1. La adición de la noción de paralelismo a lo ya no intuitivo La idea de la aleatorización hace que el razonamiento sobre los programas paralelos probabilísticos sea aún más tortuoso y difícil. En este artículo abordamos el problema de especificar y derivar propiedades de programas paralelos probabilísticos que se mantienen determinísticamente o con probabilidad 1.

por supuesto, la computación QM es muy similar a la computación probabilística (una buena referencia que enfatiza esto es la visión de One Complexity Theorist's View of Quantum Computing de Fortnow ) y hay alguna pista de que estos enfoques podrían extenderse allí, por ejemplo, en el trabajo en simulación QM paralela.


-6

Algunos lo considerarán controvertido, e incluso los defensores de este ángulo tendrán que admitirlo en las primeras etapas de la investigación, pero básicamente la computación cuántica parece tener muchas conexiones con el paralelismo y la computación paralela. las referencias están dispersas en este momento, pero un determinado investigador puede ver un tema emergente.

tal vez la mejor conexión es con el algoritmo de búsqueda de Grovers, que recientemente se ha demostrado que es más general en el sentido de que puede utilizarse para acelerar la mayoría de los problemas completos de NP en general [5]. El algoritmo de Grovers parece tener una fuerte analogía / conexión con algoritmos de búsqueda de bases de datos paralelas. los mejores algoritmos en serie clásicos no pueden alcanzar el mismo rendimiento, pero al menos una autoridad argumenta recientemente que los enfoques de QM para la búsqueda en realidad no superan a los algoritmos clásicos en paralelo. [1]

La evidencia adicional son esquemas que analizan explícitamente el paralelismo en la búsqueda cuántica, por ejemplo [2]. También se han propuesto simuladores cuánticos que se basan en el procesamiento paralelo / distribuido [3] [4] y debido a que el esquema se ajusta bien y conduce a simulaciones eficientes y manejables (30 qubits se simulan en la referencia [3]), esta conversión seguramente no es simplemente una coincidencia e indica un puente más profundo entre la computación clásica paralela y la computación QM, pero probablemente hasta ahora no cubierto.

[1] ¿Es práctica la búsqueda cuántica? por Viamontes et al.

[2] Búsqueda cuántica exacta por esquemas paralelos de discriminación unitaria por Wu / Dian

[3] Simulador paralelo de propósito general para computación cuántica de Niwa, Matsumoto, Imai.

[4] computación cuántica distribuida eficiente por Beals et al 2012

[5] Resolviendo problemas completos de NP con búsqueda cuántica por Furer 2008


@vnz, esto parece ser, en el mejor de los casos, una mezcla aleatoria de conceptos cuánticos. Buscar en Google "cuántica paralela" y enumerar los resultados aquí no es útil para mí y para otros que lo lean. Creo que sería mejor que la comunidad responda realmente a las respuestas con las que se sienta cómodo y con conocimiento, en lugar de simplemente lanzar una carrera loca por los puntos de reputación. No es constructivo y posiblemente falso, pensar en la computación cuántica como búsqueda paralela. La computación cuántica tiene, para usar su descripción, "fuertes analogías / conexiones" con búsqueda probabilística, no paralela.
Nicholas Mancuso

No sé qué dogma se enseña en las aulas, pero si alguien por ahí en realidad tiene una REFERENCIA en lugar de simples ASERCIONES SIN BASE que indica por qué no hay validez para una correspondencia hasta ahora descubierta de QM que logra computación clásica paralela ... LEERÉ ESO. La computación QM devuelve respuestas precisas ala / eg shor factoring, de lo contrario, no es un sistema de computación real ... también hay otras formas de bosquejar para demostrar que la computación QM debe ser equivalente a la computación clásica paralela en algún sentido ... tal vez ya que no está en un libro de texto, debe estar equivocado, ¿eh?
vzn

Aquí hay un curso gratuito completo sobre computación cuántica: coursera.org , puede aclararle las cosas.
Nicholas Mancuso

PD en cuanto a "batiburrillo" ... intente LEER LAS REFERENCIAS ... o tal vez simplemente las hojee en su caso wink =)
vzn

1
(6.) Su Ref. [5] describe formas en que el algoritmo de Grover puede ampliarse, nuevamente sin abordar el paralelismo que busca en la computación cuántica. En resumen: su interpretación de que hay conexiones entre la computación cuántica y la computación paralela parece derivar de la Interpretación de muchos mundos de QM. Aunque no es oscuro, tampoco es incontrovertible, y ciertamente no nos permite describir productivamente la computación cuántica como "computación en paralelo", excepto en la medida en que no vemos esas computaciones ... lo cual no es un argumento sólido para su presencia.
Niel de Beaudrap
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.