Si no estás suscripto: Regístrate

Fuente: Intelligence in Software
Obtenido en Intel Sofware dispatch

Clases de lenguajes: donde encajan los nuevos kit de herramientas en paralelo
Por: John Moore

El aumento de los procesadores multinúcleo y GPU programables ha provocado una ola de la evolución de los lenguajes de programación en paralelo.

Los desarrolladores que buscan explotar los sistemas multi-núcleo y manycore – en la que participaron cientos o posiblemente miles de procesadores – tienen ahora más opciones a su disposición. Idiomas en paralelo lo que se mueve en los últimos tiempos incluyen la SEJITS de la Universidad de California, Berkeley; OpenCL El Khronos Group es, el código abierto recientemente Además Cilk, y el idioma de nueva creación ParaSail. Los desarrolladores pueden encontrar estas lenguas directamente, aunque la comunidad más probable es que las encontramos enterradas en lenguajes de alto nivel.

Siga leyendo para conocer los detalles:

Avances científicos

Computación paralela y de programación ha estado por años en el campo de la computación de alto rendimiento científico. Los acontecimientos recientes en este campo incluyen SEJITS (selectivo, integrado, justo a tiempo de especialización), un esfuerzo de investigación en la Universidad de California, Berkeley.

La implementación de la SEJITS sobre lenguaje Python  de alto nivel, que va por ASP (ASP es SEJITS de Python), tiene como objetivo facilitar a los científicos a aprovechar el poder de paralelismo. Los científicos a favor de velocidad a medida que trabajan para resolver un problema específico, mientras que los programadores profesionales se toman el tiempo para idear una estrategia paralela para aumentar el rendimiento.

Armando Fox, profesor asociado adjunto de la División de UC Berkeley Ciencias de la Computación, dice  que SEJITS es el puente entre los programadores de la productividad y la eficiencia de los programadores. SEJITS, señala, la productividad permite a los programadores a escribir en un lenguaje de alto nivel, un beneficio facilitado por la capacidad de los programadores de la eficiencia para capturar el algoritmo paralelo. Intel y Microsoft son las primeros clientes en adoptarlos .

Así es como funciona: Un científico / programador aprovecha una specializer – un patrón de diseño, fundamentalmente – que se ocupa de un problema específico y está optimizado para funcionar en entornos paralelos. Specializers que se están procesando covers de audio disponibles y mallas estructuradas, entre otros campos. Este enfoque incorpora lenguajes específicos de dominio en Python con la compilación se producen en tiempo de ejecución.

Specializers ASP están disponibles a través de GitHub, con un depósito previsto ofrecer un catálogo de specializers y metadatos. Los inicios de un repositorio puede estar en vigor en diciembre, dice Fox.

“A medida que más y más programadores eficiencia contribuir con sus patrones a este repositorio de modelos, creadores de aplicaciones se puede recoger y utilizar como ellos utilizan las bibliotecas”, explica Fox.

Fox  caracteriza SEJITS como un prototipo – si bien con los clientes. Él dice que los investigadores están trabajando para obtener la documentación más completa SEJITS.

GPU tapping y más

Partiendo de un fondo gráfico, OpenCL parece ser la ampliación de su alcance después de salir de Mac OS X  un par de años atrás.

OpenCL, ahora una especificación de Khronos Group, consiste en un conjunto de API C y OpenCL, un lenguaje de programación. Por un lado, OpenCL permite a los programadores escribir aplicaciones que sacan partido de la GPU de una computadora por lo general, no con fines gráficos. GPUs, inherentemente paralela, se han convertido en programables en los últimos años. Pero el papel de OpenCL se extiende a cada vez más CPUs en paralelo, señala Neil Trevett, vicepresidente de contenido para móviles de NVIDIA y el presidente del Grupo Khronos.

“Históricamente, se han tenido que utilizar diferentes marcos de programación para … CPU y la GPU “, dice Trevett.”OpenCL permite a los desarrolladores escribir un solo programa con un marco único para utilizar todos los recursos en paralelo en un sistema heterogéneo.”

Estos recursos podrían incluir múltiples CPUs y GPUs mezcladas y explotado por una sola aplicación, añade.

Alcance OpenCL incluye CPUs multi-núcleo, Field-Programmable Gate Arrays, y procesamiento de señal digital.El enfoque básico es el uso de OpenCL C para escribir un núcleo de trabajo y emplear las API para difundir los granos a cabo a través de los recursos informáticos disponibles, dice Trevett.

OpenCL C se basa en C99 con algunas modificaciones, dice Trevett. Entre ellos se incluyen los cambios que permiten a los desarrolladores expresar el paralelismo y la eliminación de la recursividad, señala.

OpenCL hace hincapié en el poder y la flexibilidad frente a la facilidad de programación. Un programador explícitamente los controles de gestión de memoria y tiene un control considerable sobre la forma de cálculo que sucede en un sistema, dice Trevett. Sin embargo, herramientas de alto nivel del lenguaje y los marcos pueden servir de base API base OpenCL, añade. De hecho, el Grupo Khronos ha hecho C + + enlaces para OpenCL.

Trevett dice que el C + + enlaces OpenCL hará más accesible.En otra iniciativa, el Grupo Khronos está trabajando en una representación binaria intermedio de OpenCL. El objetivo es ayudar a los desarrolladores que no quieren enviar el código fuente junto con los programas que escriben en OpenCL.

A tomar más amplios

A principios de este año, Intel establece su Cilk Además del lenguaje en un camino de código abierto como parte del esfuerzo de la compañía para hacer que la programación paralela más ampliamente disponible.

Cilk Plus es una extensión de C y C + + que soporta programación paralela. Robert Geva, ingeniero principal de Intel, señala que Intel comenzó con la implementación de Cilk Plus en los productos de su compilador. Entonces, después de obtener un éxito inicial con la captación de clientes, extendió este a sus esfuerzos de código abierto mediante la implementación de Cilk Plus en el compilador GNU C (GCC) a través de una serie de lanzamientos.

El Cilk más la extensión de C / C + + tiene como objetivo proporcionar beneficios a través de programador que permite el paralelismo componibles, y permitiendo la utilización de los recursos de hardware, incluyendo múltiples núcleos, operaciones con vectores dentro de los núcleos, mientras que la caché ambiente.

Geva dice que Cilk Además ofrece un modelo de asignación de tareas con un nivel de usuario “trabajo robando” tiempo de ejecución de tareas. El trabajo de robar algoritmo asigna tareas – identificados por el programador como capaz de ejecutar en paralelo unos con otros – a los hilos del sistema operativo.Según Intel, la asignación dinámica de tareas a las roscas garantiza el equilibrio de carga, independientemente de la arquitectura de software de una aplicación. Este enfoque de equilibrio de carga ofrece un modelo de paralelismo componibles. Es decir, los componentes de un sistema de gran tamaño puede utilizar el paralelismo y provienen de autores independientes, pero aún así se integrarán en una sola aplicación, en paralelo.

Geva dice que esto ha solucionado un problema para los desarrolladores que estaban tratando de construir sistemas complejos de software paralelo sin una buena dinámica de equilibrio de carga y planificador de recursos de hardware encontrado en la suscripción y, por lo tanto, los malos resultados.

La nueva aplicación de Cilk Plus en código abierto GCC es ayudar a la adopción. Geva dice que el movimiento de código abierto ayuda a la adopción por dos tipos de promotores: un grupo que prefiere el compilador GCC en el compilador de Intel, y un segundo grupo que se siente cómodo con el compilador de Intel, pero le gustaría tener otra fuente ..

Los primeros componentes de Cilk Plus para ser lanzado en código abierto incluye parte de tareas de la lengua y una construcción del lenguaje para la paralelización vector nivel (# pragma SIMD). La porción de tareas incluye la implementación del compilador de tres palabras clave, incluyendo _Cilk_spawn, _Cilk_sync y _Cilk_for, la tarea del planificador de tiempo de ejecución, y la biblioteca hyperobject. El resto de la lengua se introdujo en varios pasos.

Trasladar a GCC también ayudará con los objetivos de normalización de Intel. El plan actual es tomar Cilk Plus para el cuerpo C + + normas y trabajar en una propuesta que, dice Geva.

“Vamos a estar en una mejor posición de trabajo dentro de un organismo de normalización con dos implementaciones en lugar de uno”, explica.

Una iniciativa de alta integridad

Un lenguaje de reciente lanzamiento, parasailing, se centra en la programación de alta integridad en paralelo.

Tucker Taft, presidente y director de tecnología de SofCheck, un software de análisis y verificación de firma, diseñó el lenguaje. La versión alfa de un compilador de ejecutables para Mac, Linux y Windows surgió en octubre. Taft dice el compilador no está diseñado para su uso en producción, pero se puede utilizar para aprender el idioma.

“En este momento, estamos tratando de salir y la gente se interese”, dice Taft.

De acuerdo con Taft, la creación de un lenguaje de programación paralela desde el principio le dio la oportunidad de construir en condiciones de seguridad. El lenguaje incorpora métodos formales, como condiciones previas y las condiciones de post-, que son impuestas por el compilador.Este enfoque hace paracaidismo “orientado hacia la construcción de un sistema integrado de alta integridad”, señala Taft.

En otro guiño a la seguridad, sistemas de seguridad crítica, parasailing elimina la gestión de memoria a través de la recolección de basura. Taft dice de recolección de basura no es un buen encuentro para los sistemas de alta integridad, teniendo en cuenta la dificultad de probar que un recolector de basura es “correcto”.

“También es muy difícil de probar un recolector de basura tan a fondo como es requerido por los sistemas de alta integridad”, añade.

Taft experiencia en el área de alta integridad incluye el diseño de Ada 95 y Ada 2005. Del Departamento de Defensa, una vez hecho Ada su lengua oficial, citando a su capacidad para crear sistemas de seguridad. El lenguaje se ha encontrado un papel continuo en el software de aviónica.

Del mismo modo, parasailing podía cultivar un nicho en la industria aeroespacial. Taft cita el ejemplo de un sistema de piloto automático de un avión comercial. También enumera los sistemas de control de trenes de alta velocidad, dispositivos médicos y sistemas para evitar colisiones de automóviles.

En cuanto a los métodos de distribución, Taft dice que está trabajando con otras compañías, incluyendo uno con una estrecha asociación con los países del CCG. Taft dice conectando la parte delantera Parasail – analizador, analizador semántico y ortográfico afirmación – a la parte de atrás del CCG sería una manera natural de hacer que el lenguaje ampliamente disponibles.

Otra posibilidad: hacer parasailing disponible como un lenguaje de modelado. En ese contexto, parasailing podría ser utilizado para el prototipo de un sistema complejo que se habrían de escribir en otro idioma.

 

Deja un comentario

Powered by WP Symposium - Social Networking for WordPress v12.03.10