La industria de la tecnología de gráficos y monitores está atravesando una época de grandes cambios, adoptando rápidamente los nuevos gráficos Vulkan®. Los estándares abiertos actuales, como el OpenGL® y OpenCL® han servido a la industria de forma excelente durante muchos años, así que ¿cuál es el incentivo que ha llevado a los integradores a cambiar a Vulkan?

  • Historia de los sistemas de gráficos

El uso de sistemas de gráficos apareció por primera vez en los primeros años 90 en la estación de trabajo de Silicon Graphics Workstation, empleando una librería de gráficos propietarios llamada IRIS GL. IRIS GL llevó a la creación de las Librerías Gráficas Abiertas (OpenGL), las cuales se formalizarían en 1992. Cuando OpenGL se formalizó, había  tarjetas gráficas bus Estándares de Arquitectura de la Industria (ISA) en uso con gráficos VGA. Hoy en día, los gráficos AMD y NVIDIA PCI Express facilitan un uso detallado y suave. La disponibilidad de muchos cores de computación en modernos GPUs les permite ser utilizados para el gaming, la extracción de criptografías, un profundo machine learning y muchos otros casos avanzados. 

Los nuevos conjuntos de chips gráficos son un cambio total en la fase diseño, pero todavía soportan estándares OpenGL. En las industrias comerciales, las preferencias han evolucionado a favor de una tecnología de nueva generación como Vulkan que supone un gran salto en cuanto a rendimiento. Esta adopción está ya en marcha en la industria del gaming para una nueva generación de juegos como Artifact, Doom, Hitman y Quake, el cual emplea un nuevo AMC y GPUs NVIDIA. Un eventual cambio desde OpenGL, OpenCL y Computación Unificada de Arquitectura de Dispositivos (CUDA) a Vulkan podría significar el fin de una era para estas tecnologías. 

Para comprender las librerías de estándares gráficos debemos, en primer lugar, examinar sus orígenes y su progresión. 

  • OpenGL

La evolución del estándar OpenGL llevó un par de años. La competición en la industria de la computación forzó el secretismo y la creación de diferentes estándares entre elementos clave del terreno: Silicon Graphics, Sun Microsystems, IBM, y Hewlett-Packard. Al final, estos fabricantes y otros muchos acordaron participar en el Tablero de Revisión de la Arquitectura OpenGL (ARB), y la primera especificación del primer gran OpenGL 2.0 fue lanzada en 2004. La ARB pasó las especificaciones del control a Khronos Group, el cual es un miembro fundador sin ánimo de lucro   del consorcio, centrado en Interfaces de Programación para Aplicaciones de estándares abiertos libres de royalties 

El diseño de OpenGL permitió a las aplicaciones gráficas emplear un amplio rango de lenguajes de programación empleando lenguajes vinculantes, incluyendo ‘C’, Java y JavaScript, para acceder a las funciones de la librería de OpenGL. 

OpenGL introdujo apoyo para el lenguaje shader con el objetivo de otorgar más control de los conductos de gráficos  sin utilizar ensamblajes de lenguajes o lenguajes específicos de hardware (lo cual constituía un requerimiento al principio) para construir aplicaciones shader. In shader es un tipo de programa de computación usado para sombrear niveles de luz, oscuridad y color en una imagen. También existen shaders de computación 2D, 3D, pixel, vértice y geométricos, lo cual es normalmente recopilado y ejecutado en un hardware gráfico. 

  • OpenCL y CUDA

El OpenCL y el CUDA surgieron de forma diferente que OpenGL. CUDA permitió el uso de los cores de GPU por parte de algoritmos de procesamiento intensivo de software, y OpenCL fue destinado estrictamente a programas que pudieran ejecutar a través de plataformas heterogéneas para incluir CPUs, GPUs, DSP, FPGA y otras plataformas de aceleración de hardware. CUDA definió el término Unidas de Procesamiento Gráfico de Propósito General (GPGPU), cuando los algoritmos del software podían ser utilizados en cores GPU para desarrollar procesos intensivos, dejando los cores de las CPU libres para realizar otras tareas.  

Antes de seguir, tienes que saber que OpenCL es una estructura para programación paralela sin aspectos gráficos, donde las aplicaciones pensadas para dispositivos CU están escritas en Representación Intermedia Portable Estándar (SPIR). SPIR es un estándar abierto gestionado por Khronos que se aplica a OpenCL y a Vulkan, en los cuales SPIR-V está definido por la integración de Vulkan y aspectos de OpenGL y OpenCL. El objetivo de OpenCL es convertir todos los dispositivos de computación lógicos con respecto hacia el procesador host, en el cual cada dispositivo de computación haya procesado elementos con una o más unidades de computación.

  • Vulkan: la nueva generación de gráficos y computación

Hablar de Vulkan es hablar de la nueva generación de gráficos y librerías de computación que combina capacidades tanto de OpenGL como de OpenCL. Está gestionado como una librería open source que permite a la industria desarrollar el estándar a través de Khronos. Esto es fundamental para las industrias en las cuales la certificación de seguridad sea crítica. El Vulkan API es todo un nuevo mundo para los usuarios de OpenGL, similar a OpenCL y CUDA, y permite bajos niveles de acceso a la GU. Como resultado del impulso inherente del rendimiento, Vulkan acudió inicialmente a los desarrolladores de juegos; no obstante, Khronos Group está en proceso de definir librerías de seguridad crítica Vulkan que ya han llamado la atención de las industrias aeroespaciales, automovilísticas y de transporte, en las cuales OpenGL SC s empleado y en las que se requiere certificación. 

Los componentes clave de Vulkan son las unidades de ejecución, las colas de trabajo, los buffers de comando, los canales, subgrupos, buffers de memoria, y el dispositivo Vulkan (o VkDevice), al cual se pueden aplicar todos los comandos. 

La diferencia más importante entre OpenGL/Open CL y Vulkan es que Vulkan abre el mundo de los shaders y la computación GPGPU. La computación de shaders permite la creación de gráficos utilizando directamente el GPU, mientras que OpenGL utiliza el procesador host para crear canales de gráficos antes de mostrarlos. Esto significa que Vulkan está a un nivel más de velocidad que OpenGL, ya que reduce de forma dramática el procesamiento host en los sistemas gráficos, lo cual se traduce en una reducción de la carga CPU host y mejora la temperatura de acción. 

Si quieres saber más sobre esta evolución y su estado actual, no te pierdas este whitepaper de CoreAvi.

GPU spetiembre 20