2012-08-31 12 views
6

Actualmente estoy investigando temas para estudios de posgrado en Informática y he encontrado un área de interés relativamente grande, Informática distribuida, sobre la que me gustaría obtener más información. Hay un puñado de otras preguntas [1, 2, 3] en StackOverflow que abordan cuestiones similares, pero no necesariamente la pregunta que voy a hacer, específicamente relacionada con los idiomas que estoy buscando.¿Por dónde comenzar con la informática distribuida/procesamiento en paralelo? (Python/C)

He buscado en la web y he encontrado muchos artículos, artículos e incluso cursos, como el curso this de Rutgers, que describen la teoría y la mecánica detrás de Computación distribuida. Lamentablemente, la mayoría de estos documentos y cursos que he encontrado son bastante limitados en la descripción de los conceptos reales de Computación distribuida en el código. Estoy buscando sitios web que me puedan dar una introducción a las partes de programación de Computación distribuida. (Preferiblemente en C o en Python).

Como nota al margen, me gustaría mencionar que esto puede ser incluso más específico sobre cómo el Computado en Paralaje encaja en el campo de la Computación Distribuida. (¡Todavía no he tomado un curso!)

+0

FYI usted puede usar Python y C/C++! Puede usar python para la gestión de alto nivel y C/C++ ya sea envuelto o generado por Cython para la velocidad. ¡De esa forma obtienes ambos mundos! – Onlyjus

+0

Esto no es adecuado para SO. –

+0

Hay un artículo excelente en el espectro IEEE: [The Trouble With Multicore] (http://spectrum.ieee.org/computing/software/the-trouble-with-multicore/). Especialmente el ejemplo que describe de [cómo paralelizar el cálculo de PI] (http://spectrum.ieee.org/image/1627665) Encontré muy útil sobre cómo pensar en problemas para poder paralelizarlos. –

Respuesta

1

He tenido buenas experiencias usando los paquetes integrados para python en una sola máquina. Mi amigo ha tenido un gran éxito usando ipython en una máquina con 128 núcleos.

Ahora bien, hay diferentes clases de computación distribuida como en racimos, nubes, o cualquier máquina en Internet, como Folding @ home (incluyendo PS3!) No se olvide de las GPU, así!

Algunos enlaces Python:
Various Python libraries
Ipython
Python and Parallel Computing presentation

+0

La presentación muestra mucha de la información relacionada que estoy buscando. Usted no conocería ningún otro material similar, pero no relacionado con IPython, ¿verdad? –

+0

@AlexWilliams, no sé nada de la parte superior de mi cabeza. – Onlyjus

3

Disclamer: Soy un desarrollador de SCOOP.

Realmente depende de tu personalidad. Si prefiere obtener información teórica antes de avanzar, primero debe leer algunos libros o llevarse bien con las tecnologías. Una lista de los libros que cubren una buena parte de la asignatura sería:

  • Programación Paralela para multi-núcleo y los sistemas de racimo de Thomas Rauber, y Gúdula Runger (Springer-Verlag).
  • principios de la programación en paralelo por Calvin Lin y Lawrence Snyder (Addison-Wesley)
  • Patrones de Programación Paralela por Timothy G. Mattson y col. (Addison-Wesley)

tecnologías basadas en datos es posible que desee familiarizarse con sería el estándar MPI (por múltiples ordenadores) y OpenMP (para un solo ordenador), así como la muy buena módulo de multiprocesamiento que está incorporado en Python.

Si prefiere ensuciarse las manos primero, debe comenzar con las estructuras basadas en tareas que proporcionan un uso simple y fácil de usar. Ambos fueron un enfoque máximo al crear SCOOP. Puede intentarlo con pip -U scoop. En Windows, es posible que desee instalar PyZMQ primero usando su executable installers. Puede verificar los ejemplos proporcionados y jugar con los diversos parámetros para comprender qué causa la degradación del rendimiento o aumentar con facilidad.Lo animo a que lo compare con sus alternativas, como Celery para trabajos similares o Gevent para un marco de corutina. Si te sientes aventurero, no seas tímido para probar el builtin coroutines functionnalities de Python y conéctalo con varias pilas de redes.

El uso de un marco basado en tareas le facilitará la carga del análisis teórico, como los detalles de implementación del equilibrio de carga, la serialización, etc., que no es trivial y puede llevar mucho tiempo depurar y ponerlo en funcionamiento. Proporciona todo el nivel deseado de comprensión de los sistemas distribuidos. Bonificación con software de código abierto: verifique el código para comprender los detalles mecánicos bajo el capó.

+0

Muy útil. ¡Definitivamente revisaré esos textos! –

Cuestiones relacionadas