InicioLinuxLenguajes de programación Parallela

Dentro de la historia
Barras paralelas
Informática: programación en paralelo, alguna vez en un nicho oscuro, es el foco de interés creciente en los chips "multi-núcleo" que proliferan en ordenadores normales


Jun 2nd 2011 | from the print edition



Tiene equipos detenido cada vez más rápido? Si se miraba sólo a las velocidades de reloj de microprocesadores, que bien puede ser que piense así. Un PC moderno suele tener un procesador de 3,0 GHz (3000000000 ticks de reloj por segundo), con pocos cambios desde un PC de hace tres o cuatro años. Las velocidades de reloj, que era doble cada dos años, han dejado de aumentar, porque como los chips se registran a mayor velocidad que hace difícil su fresco y mucho menos eficiente de la energía. En su lugar, tendrán un gancho especial se ha añadido en los últimos años por los motores de procesamiento de múltiples envases, o "núcleos", en un solo chip. PCs y ordenadores portátiles modernos normalmente tienen procesadores de doble núcleo (como el Intel Core i3) y algunos tienen cuatro núcleos o chips, incluso de seis núcleos.

Se podría esperar que una máquina de seis núcleos a ser seis veces más rápido que una máquina con un microprocesador de un solo núcleo. Sin embargo, para la mayoría de tareas no lo es. Esto es debido a que casi todo el software sigue siendo diseñado para ejecutarse en un chip de un solo núcleo, es decir, está diseñado para hacer sólo una cosa a la vez. A pocas piezas de software especializado puede tomar ventaja de varios núcleos: el software de procesamiento de imágenes, por ejemplo, puede dividir una tarea difícil y de granja que a varios núcleos para hacerlo más rápido, la combinación de los resultados cuando cada núcleo ha terminado su labor . Y el sistema operativo del equipo puede ser capaz de asignar las diferentes tareas a diferentes núcleos, para asegurar que, por ejemplo, la reproducción de vídeo en un navegador web, no frene mientras que un disco duro en busca de virus. Pero el corrector ortográfico no se ejecutará seis veces más rápido en un equipo de seis núcleos a menos que haya sido escrito especialmente para repartir el trabajo entre los núcleos disponibles, de modo que puedan afrontar el trabajo en paralelo.

"Nosotros no vamos a tener procesadores más rápidos", dice Katherine Yelick, un científico de la computación en el Laboratorio Nacional Lawrence Berkeley en California. En cambio, el software haciendo correr más rápido en el futuro, significa utilizar técnicas de programación en paralelo. Este será un gran cambio. En los programas de la actualidad, la corriente principal por escrito para PC (como el software de procesador de textos), y especialista en programas escritos para superordenadores con miles de procesadores (como el clima o el software de modelado de plegamiento de proteínas), se escriben utilizando totalmente diferentes herramientas, lenguajes y técnicas . Después de todo, el software escrito para un tipo de máquina no se espera trabajar en el otro.

Pero la distinción entre los dos poco a poco va desapareciendo. Intel, el mayor fabricante de chips del mundo, ha demostrado un procesador de 48 núcleos, y los chips con cientos de núcleos parece probable que en pocos años. Lo que antes era un oscuro académico de problemas en encontrar formas de que sea fácil de escribir software que pueda aprovechar al máximo la potencia de procesamiento en paralelo, se está convirtiendo en un problema para toda la industria. A menos que sea resuelto, señala David Smith, de Gartner, una firma de investigación de mercado, habrá una creciente brecha entre el rendimiento de las computadoras "teórico y real.

No es el camino a la riqueza

Sin duda, este problema será resuelto por un empresario joven y brillante que idear un nuevo lenguaje de programación en paralelo y hacer una fortuna en el proceso? Por desgracia, el diseño de idiomas no parece ofrecer un camino a la fama y la riqueza. Aunque los inventores de las lenguas éxito son en su mayoría desconocidos dentro de la industria, y mucho menos fuera de ella. ¿Puedes nombrar los inventores de COBOL, C, Java o Python? (Las respuestas son Grace Murray Hopper, Dennis Ritchie, James Gosling y Guido van Rossum.) "Hay miles de lenguajes de programación, y sólo un puñado son utilizados por más que sus inventores", señala David Patterson, un científico de la computación en la Universidad de California en Berkeley.

Parallel-programming lenguajes, en particular, tienden a languidecer en la oscuridad académico. Hay docenas de ellos-por un cargo, más de un centenar. Ninguno es popular. Las razones de este abandono son simples y de larga data, dice Craig Mundie, jefe de investigación y estrategia de Microsoft. Pasó la mayor parte de la década de 1980 y principios de 1990 en Alliant, una empresa de supercomputación él co-fundó la prevista para convertir ordinario (o "secuencial" de software en el software de forma automática en paralelo. Pero había poca demanda, porque la mayoría de los programas existentes no se prestan a la ejecución en paralelo. Hacer de software paralelo eficiente significa comenzar desde cero.



El Dr. Patterson compara la programación paralela a los periodistas que tienen diez cada uno escribe un párrafo de una noticia. Que podría tener la historia escrita diez veces más rápido que cualquiera de ellos puede por sí mismo, pero lo tiene mucho sentido? Lanzamiento de 100 o 1.000 periodistas en el mismo problema no ayuda, en cambio, la tarea se vuelve aún más difícil, ya que cada periodista debe coordinar sus acciones con los demás. En la práctica, que puede implicar una gran cantidad de esperar a que otros para completar sus subtareas. ¿Y qué pasa si dos escritores ambos terminan esperando uno para el otro? En el mundo de la programación paralela, el paro resultante se conoce como "punto muerto".

Otro obstáculo para la programación paralela es cultural. "Nuestra mente consciente tienden a pensar en términos de medidas de serie," dice Steve Scott, director de tecnología de Cray, un fabricante de pisos de las supercomputadoras. (Una máquina Cray fue, hasta noviembre de 2010, el más rápido del mundo superordenador de propósito general.) Pregrado tienden a centrarse en la secuencia de programación, no es sorprendente, ya que la industria sigue estando dominada por el código secuencial excepto en nichos especializados pocos, y la mayoría de los programadores pasan su tiempo en el mantenimiento o la ampliación de código antiguo, en lugar de escribir código totalmente nuevo. En SC10, en una conferencia de informática celebrada en Nueva Orleans en noviembre de 2010, los expertos examinaron la necesidad de cambiar planes de estudio y actualización de libros de texto para reflejar la creciente demanda de conocimientos de programación en paralelo en la computación de propósito general, y no sólo en la computación científica. Esto tomará años.

Otra dificultad es la falta de herramientas para trabajar con código paralelo, como compiladores, que traducen el código legible por humanos en algo un microprocesador puede ejecutar, y depuradores para encontrar errores. Código de depuración en una máquina paralela con cientos o miles de núcleos crea problemas únicos, y puede ser el mayor desafío que enfrenta la programación paralela, dice Charles Holland, de la Defensa Agencia de Proyectos Avanzados de Investigación (DARPA), la agencia de investigación de financiación del Departamento de América de Defensa. En total, no es difícil ver por qué ha habido tan pocos avances en la programación paralela, a pesar de los chips multinúcleo se han extendido por cinco años.

Pero se están haciendo esfuerzos para desbloquear la situación. DARPA, conocido por su papel de catalizador del desarrollo de Internet, ha estado tomando un enfoque de arriba hacia abajo. En 2001 desafió equipo de Estados Unidos responsables de la construcción de una nueva generación de supercomputadoras de alto rendimiento que son a la vez más fácil para los programadores de usar y mucho más poderosa que las máquinas existentes. El desafío DARPA incluyó el desarrollo de nuevos lenguajes y herramientas de programación paralela, además de hardware. La esperanza es que a medida que estas máquinas que se adopten nuevas (la primera, de IBM Mira, voy a entrar en funcionamiento en el Laboratorio Nacional de Argonne en 2012), habrá un "goteo" efecto como sus herramientas de programación en paralelo es ampliamente utilizada.

Como parte del proyecto de IBM ha desarrollado un lenguaje paralelo de programación llamado X10. Cray, el otro finalista en el programa DARPA, está desarrollando un lenguaje paralelo de programación llamado capilla, que está diseñado para permitir que el código se ejecute en todo, desde una máquina de escritorio multi-núcleo a un superordenador enorme. Ambos X10 y la Capilla son totalmente nuevos lenguajes, a pesar de que tienen la intención de ser accesible por los programadores que están familiarizados con otros lenguajes.

Parallelise this

Intel y Microsoft, por su parte, están adoptando un enfoque de abajo hacia arriba. Intel, en particular, tiene un interés comercial directo en la promoción de la programación paralela, porque si el software no es capaz de hacer pleno uso de la potencia de cálculo de sus chips, los clientes estarán menos inclinados a actualizar su hardware. Microsoft, por su parte, quiere asegurarse de que mantiene su posición como proveedor líder de herramientas de programación. Las dos compañías han invertido un total de 16 millones de dólares en dos nuevos centros de investigación paralelas de computación de la Universidad de California en Berkeley (dirigido por el Dr. Patterson) y la Universidad de Illinois en Urbana-Champaign, con el objetivo específico de producir herramientas para programar sistemas multi-núcleo.

En lugar de concebir lenguajes paralelos completamente nueva, Intel y Microsoft se han centrado en la ampliación de los idiomas existentes, tales como C + + y Fortran, añadiendo soporte para la codificación en paralelo. Esto permite a los programadores utilizar las herramientas y lenguajes que ya conocen bien. Los dos músculos de las empresas de comercialización debería ayudar a promover la adopción, dice Marc Snir, el jefe del centro de investigación paralelas de computación de la Universidad de Illinois y un veterano del campo de la programación en paralelo. Intel, por ejemplo, recientemente ha sido la promoción de nuevas herramientas de programación paralela que ayudan a los programadores aprovechar su última familia de procesadores multi-núcleo, conocido como Sandy Bridge, cada uno con entre dos y ocho núcleos.

Mientras tanto, un grupo de lenguajes de programación alternativo utilizado en el mundo académico parece estar haciendo un progreso lento pero constante, triturado grandes cantidades de datos en aplicaciones industriales y detrás de las escenas en sitios web de gran tamaño. Dos ejemplos son Erlang y Haskell, los cuales son "lenguajes de programación funcional".

Dichos lenguajes se basan en un estilo de programación muy matemática (basada en la evaluación de las funciones) que es muy diferente de lo tradicional, "imperativo" idiomas (basado en una serie de comandos). Esto hace que muchos programadores de. Sin embargo, los lenguajes funcionales resultan ser muy adecuado para la programación paralela. Erlang fue originalmente desarrollado por Ericsson para el uso en equipos de telecomunicaciones, y la lengua ha sido adoptado en otros lugares: que los poderes función de chat de Facebook, por ejemplo. Otra novela es el lenguaje Scala, que pretende combinar lo mejor de ambos lenguajes funcionales y tradicionales. Se utiliza para ejecutar el Twitter, LinkedIn y los sitios web Foursquare, entre otros.

El problema está aún lejos de resolverse. Pero los esfuerzos serios por fin se hizo para hacer más fácil la programación paralela y accesible más. Serán las herramientas para tomar ventaja de los chips multinúcleo provienen de un goteo de técnicas de computación de alta calidad científica, la extensión de los lenguajes de programación existentes o la difusión de las lenguas ya oscuras, impulsado por las necesidades de los desarrolladores web? Más de uno de estos caminos pueden tener éxito. Y, muy apropiadamente, la búsqueda de nuevas técnicas de programación en paralelo es en sí un proceso paralelo.

Fuente (ingles): http://www.economist.com/node/18750706?story_id=18750706

PD:
*No juzguen la traducción Google translate no puede hacer bien las cosas!!
*Esta categoría por que todo Linuxero es un potencial programador
Datos archivados del Taringa! original
10puntos
1,577visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
5visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

d
Usuario
Puntos0
Posts29
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.