Uno de los estándares más usados en la industria de los videojuegos ha sido, es y será OpenCL. Ahora, el grupo Khronos acaba de lanzar su versión 3.0, lo cual cumple como tal la hora de ruta de la compañía para dicha API. Como nueva versión de este estándar, las novedades se han hecho públicas, pero llegan como especificaciones provisionales, por lo que están abiertas a leves cambios finales de manera que los desarrolladores de la comunidad puedan aportar sus ideas.
Esta API se ha hecho tan popular y es tan usada en todo el mundo que su especificación 3.0 ha tenido que desarrollarse desde el punto de vista de la diversidad de los dispositivos que la albergan.
La primera y primordial para el grupo Khronos era precisamente el mantener la compatibilidad, algo que garantizan con este nuevo estándar 3.o.
OpenCL 3.0: una nueva especificación unificada
Debido a la cantidad de versiones de la API, tal y como ocurre con otras como Direct X, la compañía ha garantizado la compatibilidad o retro compatibilidad con las versiones 1.2 y todas sus aplicaciones así como las versiones OpenCL 2.X, donde se ha tenido que desarrollar lo que han denominado como especificación unificada.
Para ello se ha tenido que hacer acopio del lenguaje C++ para OpenCL, un proyecto de código abierto respaldado por Clang. Este es totalmente compatible con OpenCL C y permite a los desarrolladores usar la mayoría de funciones de C++ en los 17 núcleos OpenCL.
Las principales novedades llegan desde dos extensiones, las cuales toman por nombre Extended Asynchronous Copy y Asynchronous Work Group Copy Fence. Aunque no hay demasiados datos relevantes sobre ellas de momento, sí sabemos que permiten las transacciones de DMA de manera más ordenada y eficiente, lo cual y al parecer es lo más óptimo para memorias tipo Scratch Pad, las cuales requieren un control detallado sobre las asignaciones del búfer.
La flexibilidad como arma principal frente a sus rivales
Como bien sabemos, OpenCL ha obtenido en PC y gaming una repercusión mayor en los últimos años. Su enfoque en la flexibilidad le permite a los desarrolladores portar de manera mucho más sencilla sus juegos entre diferentes plataformas. Además, se da el caso de que al ser un estándar en continuo crecimiento, Khronos Group no para de agregar funcionalidades, algo que es muy del agrado tanto de Intel como de NVIDIA.
Ambas compañías están encantadas, ya que los modelos basados en este tipo de estándares permiten por un lado mayor eficiencia, mientras que por el lado de los desarrolladores de juegos les brinda mayor número de opciones para GPUs de nueva generación como las Xe.
Esto significa que empresas como Qualcomm también entran en la disputa por el rendimiento, ya que los desarrolladores siempre rezan por trabajar con un lenguaje de programación para GPU que se ejecute en todos los dispositivos, algo que hemos visto con la explosión del mercado de los smartphones.
El siguiente paso al parecer es que OpenCL integre capas de de la API Vulkan para así ser el estándar con mayor proyección del mundo en la mayor cantidad de dispositivos de la historia. Un solo lenguaje de programación para poder trabajar con cualquier CPU o GPU del mundo, sea X86 o ARM e incluso SPIR-V como back-end.
Esto debería garantizar un rendimiento homogéneo y sobre todo escalable según la plataforma, lo cual es al mismo tiempo la mejora más destacable de esta versión OpenCL 3.0.