SPIR-V
La Representación Intermedia Portable Estándar (en inglés Standard Portable Intermediate Representation, SPIR) es un lenguaje intermedio de computación paralela y gráficos perteneciente al Grupo Khronos, originalmente desarrollado para su uso con OpenCL. La versión actual, SPIR-V, se anunció en marzo de 2015. PropósitoOpenCL utiliza compilación instantánea (just-in-time, JIT), usando uno de los dos posibles métodos de distribución de software: los desarrolladores pueden distribuir binarios precompilados dependientes del dispositivo, o bien pueden distribuir el código fuente relevante, limitado por el deseo de proteger la propiedad intelectual. SPIR permite la creación y distribución de binarios independientes del dispositivo en el marco de la pila tecnológica de OpenCL.[1] VersionesSPIR se introdujo en el año 2011, la versión actual SPIR-V se introdujo en el año 2015.
Versiones basadas en LLVMAntes del lanzamiento de SPIR-V en el 2015, SPIR estuvo basado en la representación intermedia de LLVM (LLVM IR). Una especificación provisional para SPIR 1.0 se anunció en el 2012.[2] La versión 1.2 se anunció en la conferencia SIGGRAPH 2013, con la versión 2.0 publicada en la misma conferencia un año más tarde.[3][4] SPIR-VSPIR-V es una versión reescrita de SPIR anunciada en marzo de 2015, y liberada el 16 de noviembre de 2015.[5][6] La familia SPIR ahora dispone de una API multiplataforma estándar plenamente definida por Khronos con soporte nativo para las características de los shaders y kernels de cómputo. Soporte para la ingestión de SPIR-V se ha incorporado en la especificación básica de OpenCL 2.1 y la nueva API Vulkan de gráficos y cómputo. SPIR-V es un lenguaje intermedio de alto nivel, intercambiado en formato binario. Las funciones se representan mediante un [[grafo de control de flujo]] de bloques básicos, utilizando la forma asignación estática única (SSA). Las estructuras de datos retienen la representación jerárquica de alto nivel. SPIR-V no es una representación con pérdidas a diferencia de otros bytecode previos o representaciones intermedias usadas para gráficos y parecidas a máquinas virtuales. Esto permite más rendimiento al traducir SPIR-V al código máquina de los dispositivos donde se ejecute.[7] Véase también
Referencias
|