JavaOpenCL Binding Java para OpenCL
Fecha
2010-05-19
Autores
Título de la revista
ISSN de la revista
Título del volumen
Editor
Universidad Rey Juan Carlos
Resumen
En los últimos años, el diseño de las arquitecturas de consumo se ha centrado en
el paralelismo como objetivo principal para el incremento del rendimiento. Por ello,
las mejoras clásicas como el aumento de la frecuencia de reloj se han quedado atrás
en favor de la inclusión de un mayor número de procesadores en la CPU. Por otro
lado, impulsadas por la industria de lo videojuegos, las GPUs han evolucionado
hacia unidades de cómputo altamente paralelas, programables y con un elevado
ancho de banda en memoria. Debido a que en la actualidad la gran mayoría de
los sistemas de cómputo incluyen CPUs, GPUs y otros tipos de procesadores, es
necesario disponer de software que sea capaz de aprovechar el poder de cómputo
presente en estas arquitecturas heterogéneas.
OpenCL es un estándar multiplataforma para la computación en sistemas heterogéneos
que surge en diciembre de 2008 que ha ido adquiriendo cada vez más
importancia. Esto se debe principalmente a su eficiencia, así como su compatibilidad
con la gran mayoría de dispositivos destinados a la programación paralela.
Además, OpenCL está respaldado por el consorcio de empresas que conforman el
grupo Khronos, entre las que se encuentran compañías como NVIDIA, AMD o
Apple, lo que impulsa aún más su expansión.
Sin embargo, OpenCL ha sido desarrollado para ser utilizado desde C/C++,
lo que limita su utilización por parte de desarrolladores no acostumbrados a programar
en estos lenguajes. Por otra parte, el lenguaje de programación Java se
encuentra entre los lenguajes más utilizados, por lo que resulta de gran interés
acercar a los programadores de Java a tecnologías como OpenCL sin necesidad de
cambiar el lenguaje de programación utilizado. Ésta es la motivación principal de este proyecto, crear una API que recubra la especificación oficial de OpenCL con
el lenguaje Java, de manera que cualquier programador de Java pueda programar
arquitecturas heterogéneas sin necesidad de conocer lenguajes como C/C++.
Descripción
Proyecto Fin de Carrera leído en la Universidad Rey Juan Carlos en el curso académico 2010. Tutores del Proyecto: Raúl Cabido Valladolid y Micael Gallego Carrillo