OpenCL, la alternativa libre a CUDA y el futuro de la computación GPGPU

OpenCL, la alternativa libre a CUDA y el futuro de la computación GPGPU
Facebook Twitter Flipboard E-mail

OpenCL (Open Computing Language) es la alternativa libre a tecnologías como CUDA de NVidia o Stream de ATI que intenta aprovechar la potencia de los procesadores gráficos para realizar operaciones intensas repartidas entre el procesador del equipo (CPU) y la GPU de cualquier tarjeta gráfica compatible. Al contrario de CUDA o Stream, OpenCL fue creado originalmente por Apple quien luego la propuso al Grupo Khronos para convertirlo en un estandar abierto y libre que no dependa de un hardware de un determinado fabricante (CUDA sólo está disponible en gráficas NVidia y Stream en gráficas de ATI).

Que sea abierto y libre permite llevar OpenCL a un entorno multiplaforma, pudiendo ser aprovechado sobre cualquier plataforma y sistema operativo. Algo muy importante ya que los esfuerzos de los programadores para adaptar las aplicaciones y que aprovechen las ventajas de OpenCL no dependerán luego del hardware o SO que tenga la máquina del cliente.

OpenCL en Mac OS X

OpenCL y Grand Central Dispatch

Una de las ventajas de OpenCL sobre CUDA para los usuarios de Mac OS X es el soporte por parte de la propia Apple, algo que se demuestra con la inclusión de esta tecnología por primera vez en Mac OS X 10.6 Snow Leopard. Además otra de las características de Snow Leopard, Grand Central Dispatch, trabaja de la mano con OpenCL. Recordemos que Grand Central Dispatch permite separar los procesos en diferentes hilos de ejecución aprovechando los diferentes núcleos de los procesadores actuales sin necesidad de que el software esté capacitado para aprovechar la opción de disponer de varios núcleos. Es decir, entre Grand Central Dispatch y OpenCL una tarea podría ser descompuesta en varias facilitando los cálculos y acelerando los tiempos de ejecución.

El futuro de OpenCL

OpenCL tiene un futuro muy prometedor, que se verá acrecentado posiblemente con el lanzamiento de Mac OS X Lion y el apoyo de compañías como ATI que lo están adoptando. Igualmente, NVidia sin rechazar a su propio desarrollo CUDA lo implementa como una capa más de programación dentro de CUDA.

Todo esto hace y hará que los desarrolladores cuenten con una opción multiplataforma que según vaya siendo añadida en los diferentes sistemas operativos provocará: un aumento de rendimiento de las aplicaciones y dará un gran recompensa a los esfuerzos de los programadores que hacen compatible las aplicaciones con OpenCL.

Sobre todo, como ya he comentado en otras ocasiones, en aplicaciones pesadas como editores de vídeos o de modelado 3D entre otras más técnicas y específicas (investigación, simulación,...)

¿CUDA o OpenCL?

Buscando comparativas en internet sobre el rendimiento entre ambas tecnologías encuentro una realizada por Cornell University en CHW donde la conclusión de las pruebas es la siguiente.

Ejecutándose en gráficas de NVidia, CUDA está más optimizado con el hardware, algo lógico, por lo que consigue resultados ligeramente mejores. Pero es el precio que se ha de pagar si no se quiere ver atada aun hardware en concreto.

De todas formas, según se avance e invierta en OpenCL los resultados serán mejores. Por lo que apuesto por OpenCL. Y espero impaciente que se adopte y termine de cerrar como estándar para que se asiente y podamos aprovechar la gran potencia que realmente nuestros equipos tienen.

Conclusiones

Para la mayoría de usuarios, tecnologías como CUDA o OpenCL posiblemente no les sean interesantes o puedan sacar mucho partido como sí obtendrían entornos más específicos como investigadores, programadores,... Aunque hay pequeñas acciones de las que el usuario de a pie (llamemoslo así al que no es exigente con aplicaciones pesadas) podría beneficiarse como la compresión de un vídeo o codificación para pasarlo al iPhone o iPad, por ejemplo.

Pero es el futuro. Aprovechar mejor la tecnología actual y su potencia, pues fabricantes como Intel o AMD apuestan por la optimización de sus procesadores más que por, la muy conocida en su día, carrera de los gigahertzios. Y nada mejor que empezar por aprovechar la potencia que los procesadores de las tarjetas gráficas tienen.

Y es que siempre recuerdo la frase de un programador que me decía que “el Software avanza mucho más lento respectivamente a la potencia del hardware”.

Más información | Khronos – OpenCL | OpenCL para NVidia
En Applesfera | La tecnología CUDA en Mac OS X, aprovechando la potencia de las tarjetas gráficas de NVidia

Comentarios cerrados
Inicio