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

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
Ver 12 comentarios
12 comentarios
krollian
Un ordenador es tan rápido como el más lento de sus componentes.
Po otra parte, fíjense damas y caballeros, como Pixelmator rinde un ¡40%! más gracias a adoptar OpenCL. la reescritura y adaptación de código en 64 bits y GCD:
http://www.pixelmator.com/weblog/2010/07/13/pixelmator-team-releases-pixelmator-1-6-nucleus
Y la verdad que no se puede comparar con Photoshop pero de las aplicaciones de retoque de imagen de propósito general es una de las más avanzadas que hay ahora mismo en el mercado.
Esta y Graphic Converter son 2 de mis favoritas junto con el ejem, pesado e imprescindible Photoshop.
Y atentos porque Adobe quiere meterle con calzador capacidad para generar código html a manta en su próxima versión...
http://blogs.adobe.com/jnack/2010/06/feedback_please_html5_layers_in_photoshop.html
krollian
Aqui lo último sobre la integración de html en Photoshop:
http://blogs.adobe.com/jnack/2010/11/so-what-has-adobe-actually-done-for-html5-lately.html
A este paso Photoshop servirá hasta para buscar tu iPhone 7...
Ojo. No digo que sea malo ni bueno. Simplemente una de sus consecuencias es que sería más lento, más pesado y más laborioso actualizar el rey de las aplicaciones de retoque fotográfico.
¿Qué pensarían ahora John Y Thomas Knoll de esa aplicación para Macintosh que crearon para que la ILM (si, la Industrial LIght and Magic) pudiera imprimir los fotogramas del celuloide?
http://en.wikipedia.org/wiki/John_Knoll
http://en.wikipedia.org/wiki/Thomas_Knoll
Renato
¿Por qué hay que elegir uno u otro, si los tres pueden convivir perfectamente?
El tiempo ya colocará cada uno en su sitio, ya que al final OpenCL esta para todas las graficas y los otros dos no, pero bien como dijo el #6, de poco sirve algo libre pero complicado para programadores.
lesan
Hay muchos factores a tener en cuenta, como la facilidad para programar. De nada vale que algo sea gratuito-libre, si después los programadores disponen de herramientas jurásicas.
Usuario desactivado
¿CUDA u OpenCL? creo que se debe escribir con "u" porque la próxima palabra empieza con "o" (Léase conjunciones disyuntivas).