Sitios web

Paralelismo necesita una aplicación asesina para la adopción masiva

Modern Babylon Identified! (LIVE STREAM)

Modern Babylon Identified! (LIVE STREAM)
Anonim

La adición de múltiples núcleos a los microprocesadores ha creado una oportunidad significativa para la programación paralela, pero se necesita una aplicación arrolladora para llevar el concepto a la corriente principal, dijeron los investigadores durante una mesa redonda en la conferencia Hot Chips.

La mayoría del software de hoy todavía se está escribiendo para la ejecución secuencial y los modelos de programación deben cambiar para aprovechar el hardware más rápido y un número creciente de núcleos en los chips, dijeron los panelistas. Los programadores necesitan escribir código de manera que permita dividir las tareas y ejecutarlas simultáneamente en múltiples núcleos e hilos.

Se ha dedicado mucha atención y dinero a construir máquinas rápidas y mejores lenguajes de programación, dijo David Patterson, una computadora profesor de ciencias en la Universidad de California, Berkeley, en la conferencia en Stanford el lunes. Comparativamente, se ha prestado poca atención a la escritura de programas de escritorio en paralelo, pero aplicaciones como los juegos y la música podrían cambiar eso. Los usuarios de estos programas exigen el mejor rendimiento en tiempo real, por lo que los programadores pueden tener que adoptar modelos que dividen las tareas en múltiples hilos y núcleos.

Por ejemplo, nuevas formas de paralelismo podrían mejorar la calidad de la música reproducida en las PC y teléfonos inteligentes, dijo Patterson. El código que hace un mejor trabajo de separar canales e instrumentos podría generar sonido a través de interacción paralela.

La Universidad de California, Berkeley, tiene un laboratorio de cómputo paralelo donde los investigadores intentan entender cómo se usan las aplicaciones, lo que podría ayudar a optimizar el código para dispositivos de mano. Uno de los proyectos tiene como objetivo llevar la navegación con calidad de escritorio a dispositivos de mano optimizando el código en función de tareas específicas, como la representación y el análisis de páginas. Otro proyecto implica la optimización del código para una recuperación más rápida de la información de salud. El laboratorio está financiado principalmente por Intel y Microsoft.

Los investigadores de Berkeley están tratando de lograr el paralelismo reemplazando bits de código escritos originalmente utilizando lenguajes de scripting como Python y Ruby on Rails con un nuevo código C de bajo nivel. El nuevo código se enfoca específicamente en tareas particulares, como analizar un patrón de voz específico en una aplicación de reconocimiento de voz, dijo Patterson en una entrevista el miércoles. El código está escrito usando OpenMP o MPI, interfaces de programación de aplicaciones diseñadas para escribir aplicaciones paralelas a nivel de máquina.

Los expertos necesitan escribir este código paralelo altamente especializado, dijo Patterson. Reduce el tiempo de desarrollo para los programadores que de otra manera usarían Python y Ruby on Rails, lo que facilita el desarrollo de aplicaciones, pero no se enfoca en el paralelismo, dijo Patterson en la entrevista. El laboratorio ha mostrado que la ejecución de tareas específicas aumenta en un factor de 20 con el código de máquina de bajo nivel.

El concepto de paralelismo no es nuevo, y ha sido principalmente el dominio de la computación de alto rendimiento. Los niveles bajos de paralelismo siempre han sido posibles, pero los programadores se han enfrentado a una tarea desalentadora con la falta de herramientas de software y entornos de hardware en constante cambio.

"Los hilos deben sincronizarse correctamente", dijo Christos Kozyrakis, profesor de ingeniería eléctrica y ciencias de la computación en la Universidad de Stanford, durante una presentación previa a la mesa redonda. El código debe escribirse en una forma que se comporte de manera predecible y se amplíe a medida que haya más núcleos disponibles.

Los compiladores también deben ser más inteligentes y perceptivos para dividir los hilos a tiempo para que los resultados se reciban en una secuencia correcta, dijo Kozyrakis.. Los intentos fallidos de crear paralelismo en el código podrían crear un software defectuoso si los cálculos específicos no se ejecutan en un orden determinado. Ese es un problema comúnmente conocido como condiciones de carrera. Los codificadores también pueden necesitar aprender a usar múltiples herramientas de programación para lograr niveles más finos de paralelismo, dijeron los panelistas.

"No hay un enfoque de programación de chico perezoso", dijo Patterson en la conferencia.

La latencia de memoria y red ha creado cuellos de botella en el rendimiento de los datos, lo que podría anular el rendimiento logrado por la ejecución de tareas paralelas. También hay diferentes herramientas de programación para diferentes arquitecturas, que dificultan aprovechar todo el hardware disponible.

Muchas herramientas de paralelismo disponibles en la actualidad están diseñadas para aprovechar las capacidades de procesamiento paralelo de CPU y unidades de procesamiento de gráficos para mejorar el rendimiento del sistema. Apple, Intel, Nvidia y Advanced Micro Devices se encuentran entre las compañías que promueven OpenCL, un entorno de programación paralelo que será apoyado en el próximo sistema operativo Mac OS X 10.6 de Apple, también llamado Snow Leopard, que se lanzará el viernes. OpenCL compite con Microsoft, que está promocionando sus propias herramientas de programación en paralelo, y Nvidia, que ofrece el marco CUDA.

OpenCL incluye un lenguaje de programación similar a C con API (interfaces de programación de aplicaciones) para administrar la distribución de kernels en hardware como núcleos de procesador y otros recursos. OpenCL podría ayudar a Mac OS a decodificar videos más rápidamente distribuyendo el procesamiento de píxeles en múltiples CPU y unidades de procesamiento de gráficos en un sistema.

Todas las herramientas existentes están orientadas a diferentes entornos de software y aprovechan diferentes recursos, dijo Patterson. OpenCL, por ejemplo, está más orientado a la ejecución de tareas en GPU. Los modelos propietarios como DirectX son difíciles de implementar en entornos informáticos heterogéneos, mientras que algunos modelos como OpenCL se adaptan solo a entornos específicos que se basan en GPU.

"No creo que [OpenCL] vaya a adoptarse en todas las arquitecturas". Patterson dijo. "Mientras tanto, necesitamos probar otras cosas", como intentar mejorar los modelos de programación con herramientas de desarrollo comúnmente utilizadas, como Ruby on Rails, dijo.

Mientras que los miembros de la audiencia señalaron que el paralelismo ha sido un problema para décadas, los panelistas dijeron que las universidades ahora están tomando un nuevo enfoque para trabajar en múltiples herramientas de programación para permitir el paralelismo. Después de años de financiar el desarrollo de chips, el gobierno también está prestando más atención al procesamiento paralelo mediante programas relacionados.

Kozyrakis dijo que Stanford estableció un laboratorio que tiene como objetivo "hacer el desarrollo de aplicaciones paralelas prácticas para [las] ​​masas" para 2012 Los investigadores están trabajando con compañías como Intel, AMD, IBM, Sun, Hewlett-Packard y Nvidia. Una prueba inmediata para los desarrolladores podría ser intentar convertir el código heredado existente en paralelo para su ejecución en chips modernos, Berkeley's Patterson. dijo. Un par de compañías ofrecen paralelización automática, pero reescribir y compilar el código heredado originalmente escrito para la ejecución secuencial podría ser un gran desafío.

"Hay dinero para hacer en esas áreas", dijo Patterson.