lunes, 3 de febrero de 2014

Distribuye y vencerás

En esta ocasión leímos el articulo Parallel Computing on any desktop de Ami Marowka, que fue publicado por la revista Communications of the ACM en Septiembre del 2007; en este articulo nos expone una perspectiva de la evolución de la computación paralela hasta esos momentos.

Marowka retoma algunos de los puntos que ya hemos tratado a lo largo del curso, y este blog. Pero haciendo mas énfasis en la implementación practica y económica de este modelo de programación, expone que antiguamente (en la década pasada apenas) era muy costoso obtener equipo que soportara estas practicas, y que solo organizaciones millonarias y universidades de prestigio apoyadas con inversores podían darse el lujo de adquirirlas, hasta que entraron al mercado los Beowulf clústeres, arreglos de computadoras domesticas administradas por software que las hacia trabajar como un conjunto en una tarea especifica, que permitían comprar poco a poco el paralelismo necesario y proveían una escalabilidad casi lineal.

Debo decir que cuando leí este articulo, estaba bastante confundido, pues exponía el uso de arreglos de computadoras como solución al manejo de paralelismo en tareas complejas o mejor dicho CPU bound (que requieren uso intensivo de CPU), cuando este articulo hablaba de programación paralela, y no de computo distribuido, que es el concepto bajo el cual yo conocía estas soluciones (uso de commodity PCs en una tarea en particular colaborativamente); y por esto, me dediqué a investigar en que momento mi entendimiento de la diferencia entre estas dos técnicas falló, según un moderador del StackExchange de Computer Science, la diferencia radica en que el computo distribuido es un subconjunto de las técnicas de paralelización, ya que estas simplemente se enfocan en ejecutar tareas en diferentes procesadores, ya sea que estos compartan el mismo CPU, motherboard, o inclusive caché.

El articulo habla también de la necesidad de que los desarrolladores en común adopten las nuevas tecnologías disponibles para ayudar a paralelizar sus programas, uno de los ejemplos de librerías concurrentes que expone es OpenMP, ya que con pocas líneas de código encima del código ya escrito es posible paralelizar bloques de código iterativos como for, y while.
Gilles. (2012, Abril 29). Computer science stackexchange: Re [Online forum comment]. Extraido de http://cs.stackexchange.com/a/1582

No hay comentarios:

Publicar un comentario