Una inyección de Java para enviar aceleradores convencionales - Calendae | Informática, Electrónica, CMS, Ciberseguridad

Una inyección de Java para enviar aceleradores convencionales

Hola otra vez. En el teclado Simón Sánchez y en esta ocasión te voy a hablar sobre Una inyección de Java para enviar aceleradores convencionales

Cuando se trata de la adopción generalizada del uso de GPU y otros aceleradores, uno de los principales obstáculos radica en la capacidad de programación. Si bien las comunidades de proveedores en torno a los aceleradores han presionado para aplanar la curva de aprendizaje, el hecho es que se necesita un esfuerzo especial por parte de los desarrolladores comunes para emprender el proceso educativo.

El espacio HPC ha demostrado, a gran escala, que las GPU y los aceleradores pueden generar mejoras de rendimiento significativas y, ciertamente, no son poco atractivas para las empresas fuera de la competencia informática de alto rendimiento tradicional. Entonces, la pregunta es, ¿qué podría «endulzar el trato» para los desarrolladores tradicionales cuando se trata de sumergirse en la programación para la aceleración?

Según el investigador, Max Grossman de Rice University, hay una curva de aprendizaje empinada y lleva algún tiempo ponerse al día, pero hay algunos proyectos importantes que están impulsando el alcance. La entrevista a continuación detalla algunos de estos desafíos y lo que se está haciendo, especialmente en el frente de OpenCL / Java, por este joven investigador y su equipo, sin mencionar a otros que quieren llevar las herramientas avanzadas al siguiente nivel.

Grossman afirma que, aunque es posible usar OpenCL para permitir la ejecución portátil de kernels SIMD en varias plataformas (desde CPU, muchos núcleos de GPU, FPGA, etc.), usar OpenCL de Java para hacer esto es una ruta peligrosa, y que es todo menos una simplificación. Por ejemplo, aún necesitará profundizar para manejar las transferencias de datos, escribir núcleos en el lenguaje del núcleo OpenCL, etc.

Para abordar estos problemas, colaboraron en algunas técnicas únicas de compilación y tiempo de ejecución para acelerar los programas basados ​​en Java utilizando una generación automática de OpenCL como base. Como describe el equipo, el enfoque, al que llaman HJ-OpenCL, incluye: generación automática de kernels OpenCL y código adhesivo JNI a partir de una construcción paralela (para todos) disponible en el lenguaje Habanero-Java (HJ); Aprovechando la construcción del lenguaje de visualización de arreglos de HJ para admitir de manera eficiente arreglos rectangulares y multidimensionales en dispositivos OpenCL; Implementación de la construcción phaser (siguiente) de HJ para la sincronización de barrera todo-a-todo en núcleos OpenCL autogenerados.

Como resume el equipo:

“Usamos un conjunto de diez puntos de referencia de Java para evaluar nuestro enfoque y observar las mejoras de rendimiento debido tanto a la ejecución nativa de OpenCL como al paralelismo. En una APU AMD, nuestros resultados muestran velocidades de hasta 36,7 veces en comparación con Java secuencial cuando se ejecuta en la CPU de host de 4 núcleos y hasta 55,0 veces en la GPU integrada. Para un sistema con una CPU Intel Xeon y una GPU NVIDIA Fermi discreta, las aceleraciones relativas a Java secuencial son 35.7x para la CPU de 12 núcleos y 324.0x para la GPU. Además, encontramos que varias aplicaciones funcionan mejor en la ejecución de JVM, ejecución de CPU OpenCL y ejecución de GPU OpenCL. Las características del lenguaje, las extensiones del compilador y las extensiones de tiempo de ejecución incluidas en este trabajo permiten la portabilidad, la creación rápida de prototipos y la ejecución perfecta de aplicaciones JVM en todas las plataformas OpenCL «.

Además de estos y otros enfoques, Grossman dice que hay algunas cosas más simples que la comunidad de proveedores puede hacer para aumentar la experimentación con aceleradores, incluida la distribución de más hardware a grupos más grandes de desarrolladores.

Lea más sobre el trabajo de este grupo de Rice University aquí: http://pppj2013.dhbw.de/conference-pppj2013/program.html

Recuerda compartir en tu Facebook para que tus colegas lo disfruten

??? ? ? ???

Comparte