Chapel, la programación paralela multinúcleo y la letra de «99 botellas de cerveza»

Por Francisco R. Villatoro, el 5 enero, 2010. Categoría(s): Informática • Noticias

Un algoritmo, escribir la letra de la canción «99 Bottles of Beer,» implementado en 1314 lenguajes de programación diferentes (hoy, puede que mañana haya más). Esa es la idea de una curiosa página web con el mismo título. Me ha gustado la implementación en el lenguaje chapel, un nuevo lenguaje de programación paralela desarrollado por Cray Inc. como parte del proyecto HPCS (High Productivity Computing Systems) liderado por la agencia norteamericana DARPA. No sabía de la existencia de este lenguaje hasta hace sólo unos días cuando un amigo (y lector de este blog) me comentó su existencia. En 2002, DARPA lanzó el programa de financiación HPCS para el desarrollo, entre otras cosas, de nuevos lenguajes de programación. Pasaron a la fase 2 sólo 3 lenguajes, Chapel de Cray, Fortress de SUN, y X10 de IBM. En la fase 3, SUN abandonó. Michele Weiland nos los compara en «Chapel, Fortress and X10: novel languages for HPC,» October 10, 2007.

Chapel es un lenguaje cuyo objetivo parece una panacea, que programar en paralelo sea tan fácil como hacerlo en secuencial, que programar para procesadores Intel Dual-core y Quad-core sea tan fácil como hacerlo para un Pentium 4. Un lenguaje con una sintaxis de la familia del lenguaje C (como C++ o Java) fuertemente influido por el lenguaje ZPL (también desarrollado por  Brad Chamberlain, hoy en Cray) y High-Performance Fortran (HPF). La versión 1.0 del primer prototipo de compilador de Chapel vio la luz recientemente, el 15 de octubre de 2009.

Me ha gustado cómo se implementan operadores en diferencias finitas en Chapel en el artículo de Richard F. Barrett, Philip C. Roth, Stephen W. Poole, «Finite Difference Stencils Implemented Using Chapel?,» ORNL Technical Report TM-2007/119, 2007, y cómo se resuelven sistemas lineales gracias a la aritmética vectorial y matricial implementada en Chapel, mostrada en Richard F. Barrett, Stephen W. Poole, «Strategies for Solving Linear Systems of Equations Using Chapel,» Proc. 49th Cray User Group meeting, Seattle, May 2007. Sin embargo, dado que en aquella época aún no se disponía de un compilador, no se presenta un estudio detallado de su rendimiento en arquitecturas multinúcleo y paralelas. Espero que en los próximos meses tengamos noticias al respecto.

Para los interesados en más detalles sobre Chapel recomiendo la charla de Chamberlain donde nos «vende» el lenguaje y que está disponible en el siguiente vídeo, cuyas transparencias se pueden descargar en «Chapel. Productive Parallel Programming at Scale,» en la Google Seattle Conference on Scalability, June 14, 2008.

[youtube=http://www.youtube.com/watch?v=dK8IdrJrYtE]



Deja un comentario