Microsoft está preparando el lanzamiento de DirectX 11, la cual traerá importantes novedades, pero además de las mejoras visuales, Microsoft quiere plantar cara a la incipiente importancia que están tomando otros estándares como OpenCL para el computo de propósito general en GPU o GPGPU (General-purpose processing on graphics processing units), es por eso que con DirectX 11 Microsoft incentivará el uso de «Compute Shader».
Como ya probablemente sabes, DirectX 11 está planeado a ser lanzado a finales de año soportado por defecto en Windows 7 y la gente de Redmond enfatizará el uso de de «Compute Shaders» con la nueva API. Los shaders de cómputo son una característica que permitiría sacar el máximo de provecho a las capacidades de cómputo de las tarjetas gráficas basadas en arquitecturas de cómputo paralelo, es decir, aquellas GPUs (hoy por hoy tanto las tarjetas AMD/ATI como las NVIDIA) que no sólo pueden procesar gráficos 3D, sino que también pueden realizar otras tareas como edición y codificación de video, por ejemplo.
En lo netamente técnico, con el objetivo de incentivar el uso de Compute Shader (CS) entre los programadores, Microsoft permitirá el uso de Compute Shader 5.0 en DirectX 11, pero a su vez la nueva API incorporará soporte de Compute Shader 4.1 para hardware o tarjetas gráficas compatibles con DirectX 10.1 y Compute Shader 4.0 para hardware DirectX 10, dándole a las tarjetas gráficas actuales mayores opciones de programación y simplificando la implementación de esta tecnología. Los desarrolladores por su parte podrán simplificar la programación mediante estas implementaciones.
Otra arista de esta movida de Microsoft se da por el hecho de que hoy en día -aparentemente- el único estándar o API que soporta todos los chips gráficos disponibles (al menos lo de última generación) para el uso de cómputo vía GPU, es OpenCL. DAAMIT por ejemplo se basa en OpenCL para su tecnología ATI Stream Computing Technology , la cual hace uso de sus procesadores de flujo o Stream Processors de las tarjetas ATI Radeon para el cómputo de propósito general, soporte que introdujo desde sus drivers Catalyst 8.12 lanzados en diciembre de 2008.
DirectX 11 entonces permitirá además el uso de GPGPU, o sea programación de otros cálculos como por ejemplo las físicas (physics) e inteligencia artificial (IA) vía esta característica en hardware no diseñado para DirectX 11, claro que con algunas limitaciones técnicas lógicas. Por ejemplo Compute Shaders 4.0/4.x tiene algunas limitaciones naturales en la programación comparado con la versión 5.0 (la que soportará Directx 11), incluyendo el número de hilos por grupo (threads per group) que llega a 768, los hilos por grupo en memoria compartida (16KB en CS 4.x vs 32KB en CS 5) y la ausencia de operaciones atómicas (atomic operations), entre otras limitaciones que probablemente nunca percibiremos (al igual que el paso de DirectX 9 a DirectX10, ja!).
La gracias de todo esto (y en realidad lo único que nos importa) es que se estimulará la creación de aplicaciones que le saquen partido a las capacidades de cómputo de nuestras tarjetas gráficas (cuando le pidamos plata a nuestra madre para una nueva VGA ya no nos podrá decir «¡no porque la usas sólo para jugar!»), las que generación tras generación incrementan de manera salvaje su potencial de proceso (que hoy se refleja sólo en más capacidades gráficas) pero hoy por hoy lo único que hacen es permitir jugar los últimos juegos a resoluciones cada vez más altas, lo que en realidad es útil para muy pocos, ya que el mercado de los ultraentusiastas por los videojuegos de PC como ustedes es bastante pequeño a nivel mundial (comparado con la gran masa de consumidores que ocupan sus máquinas para tareas generales de multimedios y nada más).
De todos modos, como ya mencionamos anteriormente el objetivo principal de los shaders de cómputo 4.x es permitir a los desarrolladores de videojuegos de cierta forma «practicar» con la tecnología que les permite cálculos GPGPU vía DirectX, como así también permitir a los desarrolladores usarlos para tareas complejas de rendering en lugar de píxel shaders. Esto tomando en cuenta que OpenCL (Open Computing Language, Lenguaje de Computación Abierto) es un estándar abierto con todas las ventajas que ello conlleva para el desarrollo e implementación de tecnologías. O sea esto es como una patada en los cocos a CUDA… a futuro NVIDIA no va a tener otra opción que implementar sus chiches con OpenCL y no con su «sólo para NVIDIA» tecnología CUDA.
X-bits labs vía dvhardware.