Hace tiempo que se viene hablando de la tecnología General Purpose computing on Graphics Processing Units (GPGPU), que permite ejecutar tareas de propósito general en algunas tarjetas gráficas. La idea es fantástica porque hace que la potencia bestial de las GPUs -mucho mayor que la de las CPUs actuales- se aproveche para algo más que para videojuegos.
Las tres principales ofertas en este sentido que tratan de aprovechar esta prometedora idea llegan desde distintos frentes, pero… ¿cuáles son?
Tal y como ya comenté hace unos meses cuando hablé de la tecnología GPGPU:
1. NVIDIA CUDA: El SDK/API de NVIDIA es probablemente el que a día de hoy está más avanzado y el que también ha sido más aceptado por algunos desarrolladores que comienzan a hacer sus pinitos con esta tecnología. Incluso se usó en el juego Mirror’s Edge gracias a la implementación del motor de física PhysX a través de CUDA, con resultados muy reveladores.
Para poder acceder a ella necesitaréis una GPU que lo soporte (ya hay muchas que lo hacen) y los controladores NVIDIA GeForce que van añadiendo más y mejor soporte para dicha tecnología.
2. AMD Stream: la alternativa de AMD, gran competidora de NVIDIA, está destinada a lograr lo mismo que NVIDIA, pero gracias a las GPUs de AMD/ATI.
Como en el caso de NVIDIA, si disponéis de una GPU adecuada (cada vez más soportan esta tecnología) y de los últimos drivers Catalyst, podréis disfrutar de las ventajas de GPGPU.
3. OpenCL: mientras que NVIDIA y ATI van a la suya (aunque digan lo contrario), este marco de trabajo trata de ofrecer un estándar unificado y universal para poder desarrollar aplicaciones con soporte GPGPU. La idea es que en algún momento los dos fabricantes soporten OpenCL de forma definitiva y este sea -poco a poco- el estándar de facto, pero de momento la cosa sigue complicada y aunque ambas apoyan públicamente este estándar, parece que su aplicación práctica es mucho más limitada.
Aunque el post suene repetitivo, quería retomar el tema porque ahora acaba de aparecer un análisis de PCPerspective en el que analizan el rendimiento de las soluciones actuales de ATI y NVIDIA con los poquísimos programas que dan soporte a dichas opciones.
Por el momento la compresión de vídeo y su transcodificación son las tareas que parecen estar más en mente de los programadores de herramientas GPGPU, porque ha sido el tema central de una comparativa en la que se ve que ATI y NVIDIA tienen una solución más o menos equivalente en términos de eficiencia, pero que en el caso de la compresión de vídeo da cierta ventaja a NVIDIA CUDA porque las imágenes -al menos las que han publicado- parecen más definidas en ese caso. Sin embargo, ATI Stream es la ganadora en el aprovechamiento de la GPU y en la diferencia entre usarlo y no usarlo.
Una comparativa muy interesante para todos los aficionados a la informática, y que además prevé una batalla fantástica en un terreno que tiene mucho, mucho camino por delante.
Yo espero que algún día se unifiquen las cosas y tengamos OpenCL. Sería una gran ventaja tener fisica acelerada en cualquier plataforma de forma transparente.
La programación de GPU es un tema poco trivial, a menudo es muy cercano al propio ensamblador. A pesar de que la tecnología avanza y las APIs adquieren una mejor aproximación a lenguaje de alto nivel.
En mi opinión, para que se adapten mejor estas tecnologías debe fomentarse una API más cercana para los programadores.
Pues obvio que por eso se desarrollan herramientas y APIs como CUDA, ATIStream, etc, que permiten usar sentencias específicas que insertadas dentro de un programa en lenguaje C, hacen que el trabajo sea realizado por la GPU…