OpenCL y las promesas que no llegan

76966-opencl-logo_for_faq_mac.jpgCon el lanzamiento de Mac OS X 10.6 Snow Leopard, Apple anunció la integración de una seri de nuevas tecnologías entre las que destacaba OpenCL. OpenCL prometía (y promete, de hecho) la posibilidad de usar la potencia sin usar de las tarjetas gráficas como “procesador de apoyo” lo que supondría para todos los usuarios de Macs con sistemas compatibles la posibilidad de ejecutar cierto tipo de aplicaciones aprovechando todo el rendimiento del procesador + tarjeta gráfica. Casi 6 meses después, no hay en el mercado ninguna aplicación que haya anunciado que aprovecha esta característica diferencial. Ni tan siquiera de Apple.

¿Qué es OpenCL?

OpenCL es un conjunto de herramientas de programación que hacen que diferentes procesadores, algunos de ellos, con arquitecturas muy diferentes sean capaces de entenderse. Si Dios hubiera querido crear una parche para solucionar el lío de la la Torre de Babel, OpenCL hubiera sido la tecnología por debajo, permitiendo a elementos muy distintos ser capaces de comunicarse y aunar esfuerzos en tareas comunes.

¿En qué te beneficia?

Imagina que a tu ordenador nuevo con un procesador de 2 ó 4 núcleos le añades un procesador más en paralelo. Puedes empujar el rendimiento en cálculo bruto de un Mac prácticamente hasta el infinito o al menos hasta rebasar el entorno de hardware del propio procesador.

Pongamos un par de ejemplos “comprensibles”. Los usuarios de los MacBook blanco a MacBook Aluminio habrán notado que con la tarjeta gráfica 9400M de NVIDIA la vida “es muy diferente”. Se nota una gran diferencia en potencia y el ordenador va increíblemente más suelto.

Ahora imagina que estás editando un vídeo y toda esa potencia gráfica no te sirve de nada, porque el que va “ahogado” en ese momento es el procesador. ¿Qué tal dejar que la 9400M eche “una manita” al procesador?. Ese empuje que has percibido podría funcionar como apoyo en tu MacBook.

Exactamente es eso lo que hace OpenCL y por cierto, desde la GeForce 8800 en adelante, todas las tarjetas de Nvidia soportan esta tecnología, integrada en CUDA y que funciona, según la empresa, de forma totalmente transparente.

Apple se ha tomado mucho esfuerzo en preparar la especificación OpenCL y en tratar de implementarla en un tiempo record: en noviembre de 2008, en la conferencia Supercomputing 2008 que tuvo lugar en Austin, Texas. El grupo Khronos estaba presente para celebrar la publicación de la especificación OpenCL que Apple ha implementado en Mac OS X 10.6 Snow Leopard.

El estándar consiste en una API de programación para coordinar la computación en parallelo y un lenguaje de programación para especificar los cálculos, incluyendo un subset del lenguaje de programación C99 con extensiones para computación paralela. Además hay un API para coordinar la transferencia de datos entre diferentes tipos de procesadores e interoperabilidad con OpenGL, OPENGL ES y otras APIs gráficas.

Si observas algunas organizaciones de estándares más grandes, es normal ver que les toma cinco años o más,” dijo Neil Trevett, Presidente del Khronos, grupo encargado de gestionar la especificación. “Es común. En verdad tienes que insistir para que se reduzca el tiempo a dieciocho meses. Nuestro record era doce meses, hasta ahora, hicimos Open CL en seis.

Pocos días después, Apple anunció su interés de registrar como marca OpenCL, que por cierto, es un estándar abierto por el que nadie tiene que pagar royalties. En diciembre de ese mismo año, Apple

hizo pública la especificación completa 1.0.

Un año después de la publicación del estándar, y casi 6 meses después del lanzamiento de Snow Leopard, aún no hay ninguna aplicación que publicite de forma amplia y abierta su compatibilidad con el estándar y muestre la diferencia de rendimiento frente anteriores versiones de la “la aplicación” frente al uso del nuevo estándar. Ni siquiera Apple.

Hay una piedra en el zapato de Apple

Uno de los problemas que puede ser la principal barrera por la que muchos desarrolladores estén retrasando la inclusión de OpenCL en su software es la disputa entre Nvidia e Intel y el retraso de AMB (ATI) en integrar OpenCL para Mac.

Nvidia se ha tomado muy en serio la integración de OpenCL en sus productos a través de CUDA. En diciembre de 2008 Nvidia habló sobre la integración de OpenCL a través de CUDA y cuando Apple lanzó Mac OS X 10.6 Snow Leopard, Nvidia anunció el soporte completo para OpenCL añadiendo para los desarrolladores una amplia documentación y herramientas sobre OpenCL, lo que incluye una guía de programación detallada, una guía de prácticas recomendadas con consejos y trucos para mejorar las aplicaciones, ejemplos de código del SDK y un analizador de rendimiento visual (Visual Profiler) además de ofrecer controladores para WIndows y Linux.

Y cuando todo parecía que comenzaba a despegar, llegó Intel.

Intel mantiene en estos momentos una batalla legal con Nvidia (y viceversa) por la que impide que esta empresa desarrollo chips gráficos que se aprovechen de las características de los nuevos procesadores de arquitectura “Nehalem” Core iX. El problema legal ha llegado a tal extremo, que Nvidia ha decidido detener el desarrollo de sus procesadores gráficos mientras los jueces dirimen quien tiene razón y quien no, decisión que puede tardar meses, e incluso años. Esto pone en una mala posición a Nvidia y en una posición peor a Apple, que se ve forzada a no seguir explorando su excelente relación con Nvidia y a mirar hacia AMD en busca de compatibilidad gráfica con los nuevos procesadores Core i5 e i7 que está empezando a utilizar en los iMac, que portan tarjetas ATI.

ATI, por su parte, lleva cierto retraso en su desarrollo OpenCL: ha tenido que llegar agosto de 2009 para que hiciera un anuncio significativo al respecto de OpenCL y los nuevos Mac: la plena compatibilidad de la serie HD4800 con OpenCL en los iMac y Mac Pro bajo la tecnología ATI Stream.

En descargo de los desarrolladores

Un problema para los desarrolladores es también la duplicidad de tarjetas gráficas en la gama Mac. Actualmente hay una mezcla de gráficas de Nvidia, con problemas con Intel y con el desarrollo de sus gráficas parado y ATI, que sigue intentando desarrollar la plataforma a través de alianzas para el desarrollo de una suite de pruebas de la industria para OpenCL y un SDK 2.0 para Stream, la tecnología de AMD que incluye OpenCL que de momento no impresiona excesivamente.

Y un desarrollador que se ve forzado a realizar la implementación de este estándar para dos plataformas gráficas debe plantearse que el precio y tiempo del mismo va a suponer un precio mas elevad ode su software: y quizás eso pueda permitírselo un gran desarrollador, pero no uno pequeño.

Ya sea por culpa de las zancadillas de Intel a Nvidia, con razón o sin ella, de la tardanza de AMD en su implementación, de la multiplicidad de marcas de GPU gráficas en la gama Mac o de la desidia o dificultad de los desarrolladores por implementar esta tecnología, está claro que aquel futuro brillante que se auguraba hace 1 año, 6 meses, 4 días, no llega. Y no hay pistas para que se implemente en un futuro cercano.

0 0 votos
Article Rating
Subscribe
Notify of
4 Comments
Oldest
Newest Most Voted
Opiniones Inline
Ver todos los comentarios
Anónimo
Anónimo
14 years ago

Y a eso hay que añadir el larguísimo historial de tecnologías que se habían de comer el mundo abandonadas por Apple a medio camino y sin aviso previo. El mismo problema de falta de confianza que tiene en el mundo empresarial lo tiene en el ámbito del desarrollo. Apple es una bomba de relojería con quien nadie quiere tratar.

Anónimo
Anónimo
14 years ago

Entonces con una 8600 me olvido de OpenCL, no?

Eduard Ros
Eduard Ros
14 years ago

OPENCL funciona a partir de la 8600GT, yo lo he probado y funciona. Bajad esta aplicación para testear el rendimiento OPENCL de vuestra máquina.

http://www.kexts.com/view/68-opencl_demo.html

Saludos!

————
Eduard Ros

RosHardware

Anónimo
Anónimo
14 years ago

Respondiendo a ese bonito comentario de “…Y a eso hay que añadir el larguísimo historial de tecnologías que se habían de comer el mundo abandonadas por Apple a medio camino y sin aviso previo.”:

1.- Dime alguna compañía en este negocio que no haya abandonado alguna tecnología “que se iba a comer el mundo”, e igual de “sin aviso previo”. Acaso Microsoft, Google…? Nop.

1b.- Iba a decir “es lo que pasa por innovar, que te tienes que arriesgar”. Pero claro, aplicar eso por igual a Apple y a Microsoft (por decir algo) parece un poco injusto.

2.- De las tecnologías abandonadas, cuáles lo fueron porque otras tecnologías más mediocres tenían inundado el mercado? No es que eso importe mucho al final, pero creo que deberíamos dar más mérito a quien apoya tecnologías interesantes (como Apple)… incluso si al final no lo consigue.

3.- Cuántas tecnologías ha hecho triunfar (p.ej., USB), o incluso inventado (p.ej., Firewire), Apple? Yo diría que más que las que ha “abandonado”.

4.- Resumiendo, que otras marcas más aceptadas en el mundo empresarial tienen como mínimo los mismos problemas. Así que no entiendo la comparación; al contrario, a las empresas les suelen interesar las marcas “aburridas” (porque no dan sorpresas). Pero luego llega la ironía de que si Apple no innova, la gente se queja…

5.- Y todo esto hablando de OpenCL, que simplemente aún no tiene aplicaciones en …. wow, 6 meses! Eso es un poco diferente a “abandonarlo”, no? No quisiera volver al tema de siempre, pero … cuántos años lleva Microsoft con los 64 bits, y cuántas aplicaciones ha sacado? Y eso que el cambio de 32 a 64 bits es mucho más simple que lo que pretende OpenCL.

6.- Y lo mejor de todo: OpenCL es ahora un estándar (no sólo una tecnología). Así que, incluso aunque Apple lo abandonase, el resto del mundo puede aprovecharlo. Y tecnologías relacionadas, como Grand Central, ya han sido liberadas como open source (!). No te parece impresionante? A mí, sí. Y no sólo por el esfuerzo de Apple, sino por lo que puede significar para el resto de la industria. Por ejemplo, FreeBSD ya ha implementado también su propio Grand Central.

4
0
Me encantaría saber tu opinión, por favor, deja un comentariox
()
x