OpenCL 3.1.2 finaliza cl_khr_command_buffer y lo saca del estado experimental
Khronos publica la revisión 3.1.2 de la especificación, centrada en promover la extensión de command buffers y en homogeneizar la documentación.
Khronos ha publicado OpenCL 3.1.2, la nueva revisión de la especificación de cómputo paralelo. El cambio de fondo es uno: la extensión cl_khr_command_buffer queda finalizada y deja de considerarse experimental. El resto son ajustes de documentación y aclaraciones repartidas por el texto.
Qué cambia con los command buffers
La extensión permite grabar y reproducir buffers de comandos OpenCL. La idea es sencilla: cuando la misma carga de trabajo se encola una y otra vez, el coste de encolarla puede acabar pesando más que el propio cálculo. Grabar esos comandos una vez y reenviarlos después evita repetir la gestión en cada iteración. Es el tipo de optimización que no se nota en una prueba de laboratorio con un kernel suelto, pero sí en aplicaciones que lanzan el mismo kernel en bucle.
Detrás de la extensión han trabajado NVIDIA, Intel, Google, Codeplay y Qualcomm, entre otros. Que haya pasado por tantas manos y haya salido del estado experimental indica que su semántica ha quedado cerrada.
OpenCL 3.1.2 también unifica la forma de documentar los códigos de error de las APIs de objetos de memoria, que hasta ahora no seguían un criterio común entre sí, y añade varias aclaraciones menores. No hay cambios de ruptura de compatibilidad ni nada que obligue a tocar código existente: es una revisión del documento, no un salto de versión mayor.
Las notas de la versión están en el repositorio de Khronos en GitHub.
Conviene separar dos cosas. Que la extensión esté finalizada en la especificación no significa que los drivers la expongan ya. Lo que el desarrollador tiene delante al compilar y ejecutar es lo que implemente el fabricante, y ahí el calendario lo marcan ellos, no Khronos. El estado experimental era una advertencia para quien dudaba si apoyarse en ella; esa advertencia desaparece, pero la disponibilidad real sigue dependiendo del driver que tengas instalado.