2010-07-19 30 views
9

Estoy escribiendo un documento para probar una nueva aplicación que demostrará los beneficios del cálculo paralelizado (en comparación con la versión serializada tradicional de esta aplicación). Quiero usar el canonical examples para el cálculo paralelo en mi documento.¿Cuáles son los ejemplos canónicos de cómputo paralelo?

Mi primer ejemplo es the parallel computation of pi. Idealmente me gustaría un ejemplo en el que cada iteración consuma mucho tiempo (debido a la sobrecarga adicional asociada con la paralelización); mi primer pensamiento es una simulación bayesiana con muestreo MCMC y Gibbs.

¿Qué otros problemas se discuten normalmente en este contexto? ¿Cuáles son buenos ejemplos de grandes problemas de embarassingly parallel?

+0

El artículo de wikipedia que brinda contiene un conjunto de ejemplos. ¿Que hay de malo con ellos? – Jens

+0

Están bien, aunque no creo que se consideren como el "conjunto de ejemplos estándar" (por ejemplo, el ejemplo pi no está incluido allí). No solo quiero ejemplos: quiero los ejemplos más famosos. – Shane

+0

@Shane: Entonces, ¿por qué pediste "buenos ejemplos" en la última oración? Los buenos no siempre son famosos. –

Respuesta

5

Un ejemplo que he utilizado en el pasado de un problema embarazoso paralelo es visualizar el conjunto de Mandelbrot. Cada píxel se puede calcular de forma independiente.

Conway's Life también es interesante, ya que cada valor de la "próxima" placa se puede calcular de forma independiente, pero dependerá de los bits relevantes de la placa "actual" que se esté realizando.

6

sólo unos pocos más -

  • matrices Multiplicando
  • matrices Inversión de
  • FFT
  • cadena coincidente
  • Rendering escenas 3D (a través de la conversión de línea de exploración o trazado de rayos)
+0

+1 por mencionar el renderizado de escenas en 3D. – claws

2

Mi ejemplo favorito es simulación de Monte Carlo.

1

Encontrar colisiones en funciones hash utilizando Paul C. van Oorschot y Michael J. Weiner's method (PDF) aparece a menudo en varios ajustes criptográficos.

5

sugeriría que ejemplos canónicos de computación paralela yproblemas embarazosamente paralelos son, si no completamente, a continuación, casi, conjuntos disjuntos. Para decirlo de otra manera, las personas que trabajan en cómputo paralelo no están terriblemente entusiasmadas con problemas embarazosamente paralelos; los llamamos así porque estaríamos avergonzados de estar trabajando en ellos.

estaría buscando, si yo fuera usted, en estos (una lista no del todo original):

  • álgebra lineal en grandes matrices densas, ambos enfoques directos e iterativos;
  • álgebra lineal en matrices dispersas enormes
  • enfoques de ramificación y ligado a problemas de programación lineal (y relacionados);
  • coincidencia de secuencia para bioinformática (fuera de mi campo, puede haber expresado mal esto);
  • optimización continua.

espero que hay muchos más.

EDIT: Usted puede estar interesado en this list of problems que han sido seleccionados para la evaluación comparativa de la próxima generación de superordenadores Europea (académicos). Te dará una idea de hacia dónde se dirige ese nicho.

+0

+1 Gracias por esta lista. Creo que "embarazosamente" realmente implica cosas que se dividen fácilmente (es decir, no hay dependencias entre iteraciones), no que sean problemas vergonzosos en sí mismos. – Shane

+0

@Shane: Discrepo, se les llama vergonzosos porque a los que trabajamos en computación paralela nos avergonzaríamos de estar trabajando en problemas tan fáciles; aún peor, trabajando y cometiendo errores. Puede ser que sean tan fáciles de paralelar porque no hay dependencias entre tareas, pero esa es una cuestión diferente. –

+0

+1 para el enlace a la suite de puntos de referencia PRACE. Por la misma razón, también agregaría los puntos de referencia SpecMPI: http://www.spec.org/mpi/ –

4

dinámica simluations moleculares permiten cambiar el tamaño del problema hasta que se agoten sus recursos informáticos (es decir, 256 partículas frente a 256.000.000 partículas). Su realmente un ejemplo "canónica" si ejecuta las simulaciones MD NVT bajo condiciones ;-)

+2

+1 para el juego de palabras. – jmbr

1

he usado el conjunto de Mandelbrot demostración para explicar a mi mamá lo que la programación en paralelo es de aproximadamente: http://www.ateji.com/px/demo.html

Todos los ejemplos que menciona son los códigos de datos en paralelo sobre todo pesados. Probablemente desee mencionar también los códigos orientados a tareas, como los servidores que responden a muchas solicitudes en paralelo, y los ejemplos de flujo de datos o de programación de flujo (MapReduce es un buen representante de esta clase).

Cuestiones relacionadas