OpenCL nuevo interfaz de programación paralela

OpenCL, Open Compute Language, es la primera propuesta abierta y estándar de programación paralela sobre dispositivos heterogéneos de consumo, como sistemas multicore, GPUs, móviles, procesadores basados en Cell, etc. El objetivo de OpenCL es crear un punto de encuentro entre fabricantes para que adopten una estrategia común,  simplificar la programación de estos dispositivos y poder sacar provecho a arquitecturas heterogéneas con menores tiempos de desarrollo. OpenCL fue una iniciativa propuesta por Apple y posteriormente impulsada por Khronos, el grupo de empresas del sector que mantiene el interfaz de acceso gráfico OpenGL entre otros.


Khronos, el grupo formado por diversas empresas del sector como son 3DLABS, Activision Blizzard, AMD, Apple, ARM, Barco, Broadcom, Codeplay, Electronic Arts, Ericsson, Freescale, HI, IBM, Intel Corporation, Imagination Technologies, Kestrel Institute, Motorola, Movidia, Nokia, NVIDIA, QNX, RapidMind, Samsung, Seaweed, TAKUMI, Texas Instruments y Umeå University, ha presentado oficialmente en SIGGRAPH ASIA 2008 la especificación 1.0 de OpenCL. La iniciativa responde a la creciente popularidad de ciertas arquitecturas multicore, desde los ordenadores de sobremesa, a estaciones basadas en procesadores Cell o arquitecturas basadas en tarjetas gráficas, como los sistemas Tesla de Nvidia o FireStream de AMD/ATI.

La aceleración que producen determinadas aplicaciones de propósito general sobre dispositivos poco habituales como estas tarjetas gráficas, han forzado a algunos fabricantes a introducir interfaces de programación para aprovechar sus arquitecturas. Ese fue el caso de Nvidia y su popular arquitectura hardware/software CUDA o AMD/ATI y su Stream SDK. Sin embargo, estos interfaces no eran multiplataforma, evitando la portabilidad de las soluciones entre diferentes fabricantes de hardware y entre diferentes dispositivos que, sin embargo, coincidían en comunes modos de programación. La empresa Rapidmind capitaneada por Michael McCool, profesor de la Universidad de Waterloo, lleva varios años proponiendo un interfaz multiplataforma con iguales propósitos, pero no era libre y sus licencias eran de pago.

Con OpenCL se abre un nuevo horizonte para el aprovechamiento de estos sistemas de consumo y altas prestaciones, se dota de cierto razocinio en la comunidad y se establece un punto de partida para el futuro de estas arquitecturas.

Compartir:

3 comentarios

  1. La estandarización de una tecnología (lenguaje + APIs) para la programación de aplicaciones en sistemas multicore y tarjetas gráficas facilitará que las capacidades de computación sean aprovechadas al máximo desde lenguajes de programación y tecnologías de alto nivel.

    Hasta ahora, el aprovechamiento de las capacidades de computación de las GPUs en aplicaciones de propósito general ha estado reducido a un pequeño número de aplicaciones específicas y muy acopladas a la tecnologías de programación empleada (p.e. CUDA).

    Con un estándar abierto e interoperable no pasará mucho tiempo hasta que aparezcan bindings para Java y C# de forma que cualquier aplicación desarrollada en estos lenguajes pueda aprovecharse también de las capacidades de computación.

Deja un comentario