Llegamos a ustedes gracias a:



Reportajes y análisis

El paralelismo requiere de una killer application para su adopción masiva

[26/08/2009] La adición de múltiples núcleos a los microprocesadores ha creado una significativa oportunidad para la programación paralela, pero aún se necesita de una killer application para promover el concepto y hacerlo de amplia aceptación, dijeron los investigadores durante un panel de discusión en la conferencia Hot Chips.

En la actualidad, la mayor parte del software aún se escribe para su ejecución secuencial, y los modelos de programación necesitan cambiar para aprovechar el incremento en la velocidad del hardware y el creciente número de núcleos en el chip, señalaron los panelistas. Los programadores necesitan escribir código de una forma tal que permita que las tareas se dividan y ejecuten en forma simultánea en varios núcleos e hilos.
Mucho dinero se ha dedicado a construir máquinas rápidas y mejores lenguajes de programación, indicó David Patterson, profesor de ciencias de la computación de la Universidad de California en Berkeley, durante la conferencia en Stanford el lunes. En comparación, poca atención se le ha prestado a escribir programas en paralelo para desktops, pero las aplicaciones como los juegos y la música pueden cambiar esto. Los usuarios de tales programas demandan el mejor desempeño en tiempo real, así que los programadores podrían tener que adoptar modelos que dividan las tareas en múltiples hilos y núcleos.
Por ejemplo, las nuevas formas de paralelismo podrían mejorar la calidad de la música que se reproduce en las PC y teléfonos inteligentes, indicó Patterson. El código que realiza un mejor trabajo separando canales e instrumentos puede, en último término, generar sonido a través de interacciones paralelas.
La Universidad de California en Berkeley, tiene un laboratorio de computación paralela en donde los investigadores están intentando entender cómo se utilizan las aplicaciones, lo cual podría ayudar a optimizar el código para los dispositivos de mano. Un proyecto busca llevar la navegación de calidad desktop a los dispositivos de mano, optimizando el código en base a tareas específicas como el rendering y el parsing de páginas. Otro proyecto involucra optimizar el código para una recuperación más rápida de la información sobre la salud de una persona. El laboratorio se encuentra financiado básicamente por Intel y Microsoft.
Los investigadores de Berkeley están intentando utilizar el paralelismo mediante el reemplazo de bits de código, originalmente escritos usando los lenguajes de scripting como Python y Ruby on Rails con código C de bajo nivel. El nuevo código se enfoca específicamente en tareas particulares como analizar un patrón específico de voz en una aplicación de reconocimiento de voz, señaló Patterson en una entrevista el miércoles. El código es escrito usando OpenMP o MPI, interfases de programación de aplicaciones diseñadas para escribir aplicaciones paralelas de nivel de máquina.
Se necesitan expertos para escribir este altamente especializado código paralelo, indicó Patterson. Reduce el tiempo de desarrollo para los programadores que de otra forma usarían Python y Ruby on Rails, que hacen más sencillo el desarrollo de aplicaciones, pero que no se encuentran enfocados en el paralelismo, señaló. El laboratorio ha mostrado como algunas ejecuciones de tareas saltaron en 20 veces su velocidad con el código de máquina de bajo nivel.
El concepto de paralelismo no es nuevo, y ha sido generalmente el dominio de la computación de alto desempeño. Siempre ha sido posible lograr niveles de paralelismo bajos, pero los programadores han tenido que enfrentar un entorno desalentador, debido a la falta de herramientas de software y los siempre cambiantes entornos del hardware.
Los hilos se tienen que sincronizar correctamente, indicó Christos Kozyrakis, profesor de ingeniería eléctrica y ciencias de la computación de la Universidad de Stanford, durante una presentación anterior al panel de discusión. Se necesita que el código se escriba de forma tal que se comporte de manera predictible y escale a medida que se disponga de más núcleos.
Los compiladores también necesitan ser más inteligentes y ser lo suficientemente perceptivos como para romper los hilos a tiempo, de tal forma que los resultados se reciban en una secuencia correcta, señaló Kozyrakis. Los intentos fallidos de colocar el paralelismo en el código podrían generar un software defectuoso, si los cálculos específicos no son ejecutados en un cierto orden. Los creadores de códigos también tendrían que aprender como usar varias herramientas de programación para lograr niveles más finos de paralelismo, señalaron los panelistas.  No se puede ser flojo en la programación, indicó Patterson en la conferencia.
La latencia en la memoria y en la red ha creado cuellos de botella en la salida de datos, lo cual podría dañar el desempeño logrado por la ejecución paralela de las tareas. También hay diferentes herramientas de programación para diferentes arquitecturas, lo cual hace difícil aprovechar todo el hardware disponible.
Muchas de las herramientas de paralelismo disponibles en la actualidad se encuentran diseñadas para utilizar las capacidades de procesamiento paralelo de las CPU y las unidades de procesamiento gráfico, y mejorar el desempeño del sistema. Apple, Intel, Nvidia y Advanced Micro Devices se encuentran entre las compañías que promueven el OpenCL, un ambiente de programación paralela que será soportado en el próximo sistema operativo Mac OS X 10.6 de Apple, también denominado Snow Leopard, que está programado para ser lanzado este viernes. OpenCL compite con Microsoft, que está promocionando sus herramientas propietarias de programación paralela DirectX, y nVidia, que ofrece la infraestructura CUDA.
OpenCL incluye un lenguaje de programación similar al lenguaje C con API (application programming interfaces, interfase de programación de aplicaciones) para administrar la distribución de los kernels en el hardware, tales como los núcleos del procesador y otros recursos. OpenCL podría ayudar al sistema operativo Mac a decodificar video de forma más rápida, al distribuir el procesamiento de los píxeles entre varios CPU y unidades de procesamiento gráfico en un sistema.
Todas las herramientas actuales se encuentran dirigidas hacia diferentes ambientes de software y aprovechan diferentes recursos, señaló Patterson. OpenCL, por ejemplo, se dirige más hacia la ejecución de tareas en GPU. Los modelos propietarios como DirectX son difíciles de utilizar en ambientes de computación heterogéneos, mientras que algunos modelos como OpenCL se adaptan solo a ambientes específicos que dependen de GPU.
No creo [que OpenCL] vaya a ser adoptado en todas las arquitecturas, indicó Patterson. Necesitamos mientras tanto intentar otras cosas, como tratar de mejorar los modelos de programación mediante la utilización de herramientas de desarrollo de uso común, como Ruby on Rails, señaló.
Aunque los miembros de la audiencia señalaron que el paralelismo ha sido un problema por décadas, los panelistas dijeron que las universidades están ahora tomando un enfoque renovado de trabajo con varias herramientas de programación para lograr el paralelismo. Luego de décadas de financiar el desarrollo de los chips, el gobierno también está prestando más atención al procesamiento paralelo mediante el financiamiento de programas relacionados a él.
Kozyrakis afirmó que Stanford ha establecido un laboratorio que tiene el objetivo de hacer del desarrollo de aplicaciones paralelas algo práctico para [las] masas, para el 2012. Los investigadores están trabajando con compañías como Intel, AMD, IBM, Sun, Hewlett-Packard y nVidia.
Uno de los primeros desafíos para los desarrolladores podría ser intentar convertir el código propietario existente en código paralelo, para que sea ejecutado en chips modernos, señaló Patterson. Un par de compañías están ofreciendo paralelización automática, pero re escribir y compilar el código propietario, originalmente escrito para su ejecución secuencial, podría ser un gran desafío. Hay dinero por ganar en estas áreas, indicó Patterson.
Agam Shah, IDG News Service