lunes, abril 02, 2007

Entrevistas a gurús de la programación paralela

En el estupendo blog Thinking Parallel, se ha comenzado una serie muy prometedora, entrevistas a gurús de la programación paralela, gente que ha diseñado sistemas que la soportan, la facilitan y/o la potencian: Joe Armstrong de Erlang, William Gropp de MPI, Sanjiv Shah de OpenMP, David Butenhof de los threads POSIX (de quien ya se ha hablado por aquí en Diseño sencillo contra implementación correcta) Además promete intentar entrevistar a los responsables de los threads de la JVM y del .NET framework. Las entrevistas son por correo y tienen la particularidad de que son las mismas para todos ellos, cinco preguntas sobre el la programación paralela en general y cinco preguntas sobre su sistema en particular.

De momento ha publicado ya dos, muy interesantes: Ten Questions with Joe Armstrong about Parallel Programming and Erlang y Ten Questions with William Gropp about Parallel Programming and MPI.
Actualización: Se ha publicado la tercera entrega: Ten Questions with Sanjiv Shah about Parallel Programming and OpenMP

Extractando. Joe Armstrong:

  • Sobre balas de plata: Si, las infraestructuras puras de paso de mensajes resolverán muchos problemas (cosas como el servicio de cola simple de amazon(?)). Es una vuelta a la programación basada en flujo de Paul Morisson
  • Comparando la programación paralela con la secuencial: No es más difícil - es difícil debido al modelo dominante de bloqueos, threads y memoria compartida, que si es dificil. Los sistemas puros de paso de mensajes son más fáciles de programar y de comprender
William Gropp (más pragmático al parecer):
  • Sobre mensajes contra memoria compartida: Ambas tienen virtudes y defectos. El paso de mensajes traspapasa la gestión de las estructuras de datos distribuidas al programador. La memoria compartida requiere un gran cuidado para evitar condiciones de carrera y bugs de rendimiento (como la falsa compartición). Ninguno es un modelo de programación completo. Hemos tenido y seguiremos teniendo acaloradas discusiones(*) sobre las deficiencias de ambos.
(*)también conocidas como flames :)

Actualización: Sanjiv Shah:
  • Ahondando más en el tema de paso de mensajes contra memoria compartida:Decidir cual es apropiada depende muchísimo de la aplicación: la memoria compartida facilita unas cosas y la memoria distribuida otras. SETI@home es ahora el ejemplo clásico: apenas se comparten estados entre todos los ordenadores que están ejecutándose a lo largo del mundo independientemente. Muchas aplicaciones de este estilo usan memoria distribuida de modo natural. Por otra parte cuando hay muchos cambios de estado que se deben compartir, el uso de memoria compartida tiene mucho sentido.


Entrevistas a gurús de la programación paralela en barrapunto