SPIR-V
SPIR / SPIR-V software | |
---|---|
Dezvoltator | Grupul Khronos |
Data primei versiuni | Ianuarie 2014 |
Ultima versiune | 1.5 Revizuirea 3 (24 aprilie 2020) |
Sistem de operare | Multiplatform |
Licență | ( licență gratuită ) |
Site-ul web | www.khronos.org/spir |
SPIR / SPIR-V [1] ( Standard Portable Intermediate Representation ) este un limbaj open-source intermediar pentru calcul paralel și grafică, dezvoltat de Khronos Group , pentru utilizare cu limbajele OpenCL , Vulkan și OpenGL. OpenCL folosește compilația just-in-time (JIT) , care necesită două modele de distribuție software: dezvoltatorii pot distribui binare precompilate specifice dispozitivului / perifericului pe care vor rula ( GPU / FPGA ) sau pot distribui sursa de cod, care poate să fie limitat de necesitatea de a proteja proprietatea intelectuală a software-ului. SPIR permite crearea și distribuirea de binare independente de dispozitiv în stiva OpenCL.
Versiuni
SPIR a fost introdus inițial în 2011, în timp ce versiunea actuală, SPIR-V, a fost introdusă în 2015.
• SPIR 1.2 (mai 2013), bazat pe versiunea LLVM IR 3.2; face parte din extensiile pentru OpenCL 1.2.
• SPIR 2.0 (iunie 2014), bazat pe versiunea LLVM IR 3.4; face parte din extensiile pentru OpenCL 2.0.
• SPIR-V 1.0 (noiembrie 2015) nu mai este bazat pe LLVM IR; este o parte integrantă a OpenCL 2.1, precum și a Vulkan și OpenGL .
• SPIR-V 1.1 (aprilie 2016), suport Python îmbunătățit, a introdus suport OpenCL 2.2 și a remediat multe erori.
• SPIR-V 1.2 (mai 2017), a introdus suport pentru HLSL , suport îmbunătățit pentru OpenCL 2.2.
• SPIR-V 1.3 (martie 2018), suport complet pentru Vulkan 1.1 este integrat și reprezintă un pas semnificativ înainte în uniunea dintre Vulkan și OpenCl
• SPIR-V 1.4 (mai 2019), a remediat multe erori, a introdus o mai bună gestionare a memoriei și alte caracteristici.
• SPIR-V 1.5 Revizuirea 3 (aprilie 2020)
Spir-V
Versiunile anterioare lui Spir-V s-au bazat pe LLVM. Prima specificație provizorie pentru SPIR 1.0 a fost anunțată în 2012, în timp ce versiunea stabilă 1.2 a fost anunțată la SIGGRAPH 2013, cu versiunea 2.0 prezentă la aceeași conferință în anul următor. SPIR a evoluat apoi într-un standard deschis definit de KronosGroup, cu adevărat cross-API: SPIR-V este încorporat nativ în specificațiile OpenCL 2.1 și 2.2 (în timp ce SPIR era o extensie externă), în specificațiile Vulkan și, de asemenea, în specificațiile versiunii. 4.6 din OpenGL. SPIR-V depășește multe limitări ale modelului LLVM, susținând de asemenea kernelurile OpenCL C și OpenCL C ++, cu toate posibilitățile legate de aceste două limbaje standard.
Hardware și limbi acceptate
Deși născut în tandem cu OpenCL, SPIR-V a fost conceput pentru a suporta cea mai largă gamă posibilă de limbaje de programare, cum ar fi Python , Vulkan , C # , Rust , LINQ și multe altele. La nivel hardware, SPIR-V este susținut de toți furnizorii majori care acceptă OpenCL (cum ar fi AMD , Intel , Xilinx , Nvidia și altele) și este, de asemenea, capabil să funcționeze pe dispozitive mobile prin stratul Android.
Funcționalitate
SPIR-V reprezintă o mare noutate atât din partea furnizorului de hardware, cât și din partea programatorilor: primul poate evita necesitatea de a construi un compilator la nivel înalt al limbii sursă în interiorul driverelor periferice, reducând semnificativ complexitatea acestora și permițând utilizarea o gamă largă de limbaje și cadre frontale pe diferite arhitecturi hardware. Pentru dezvoltatori, utilizarea SPIR-V înseamnă că codul sursă de nucleu nu mai trebuie expus direct, că timpii de încărcare a nucleului pot fi accelerați și că pot alege să folosească un limbaj de front-end comun, îmbunătățind fiabilitatea și portabilitatea nucleului în mai multe configurații hardware.
Odată cu proiectul de unificare a limbajelor Vulkan și OpenCL, SPIR-V va deveni și mai fundamental pentru a gestiona împreună programarea efectelor grafice și a aplicațiilor GPGPU .
Notă
linkuri externe
- Site oficial , pe khronos.org .