Projekto rengėjai LLVM paleistas neseniai išleido „Heterogenous Parallel Virtual Machine“ kompiliatorių (ŽPVM) 1.0, kurio tikslas supaprastinti heterogeninių sistemų programavimą ir teikia kodų generavimo įrankius procesoriams, GPU, FPGA ir aparatinės įrangos greitintuvams specifinis domenas (FGPA ir greitintuvų palaikymas nebuvo įtrauktas į 1.0 versiją).
Pagrindinė mintis už HPVM yra sudaryti vieningą vykdomųjų programų vaizdą vienu metu kuriuos galima naudoti įvairiai lygiagrečiai aparatinei įrangai, įskaitant GPU, vektorines instrukcijas, kelių branduolių procesorius, FPGA ir įvairius specializuotus greitintuvo lustus.
Heterogeninių lygiagrečių sistemų programavimą apsunkina tai, kad sistemoje yra komponentų (procesoriaus šerdys, vektorinės instrukcijos, GPU ir kt.), Kurie naudoja skirtingus modelius lygiagretumui pasiekti, skirtingus instrukcijų rinkinius ir skirtingas atminties hierarchijas, o kiekviena sistema turi tokie komponentai keičiasi.
Ilinojaus LLVM kompiliatorių tyrimų grupė džiaugiasi galėdama pranešti apie atviro kodo HPVM išleidimą (versija 1.0). HPVM yra perorientuota kompiliatoriaus struktūra, nukreipta į procesorius, GPU ir greitintuvus (šiame leidime nėra greitintuvo palaikymo) [1]. HPVM naudoja nuo tikslo nepriklausomą kompiliatoriaus IR, kuris išplečia LLVM 9.0.0 kompiliatoriaus IR su aiškiu hierarchiniu duomenų srautų vaizdavimu, fiksuojančiu užduotis, duomenis ir vamzdynų lygiagretumą.
Ši versija yra svarbus priedas prie mūsų pirmosios versijos (0.5 versija), kuri papildo linijinės algebros tenzoriaus operacijas, „Pytorch“ ir „Keras“ sąsajas, konvoliucijos operatorių aproksimacijas ir veiksmingą bei lanksčią apytikslio pritaikymo sistemą.
Reikėtų pažymėti, kad HPVM gali pasiekti reikšmingų rezultatų nuo eHPVM vertėjų išvesties našumas yra panašus į „OpenCL“ kodo našumą ranka parašytas GPU ir vektoriniams kompiuteriams. Skirtingai nuo kitų sistemų, HPVM bandė sujungti tris galimybes organizuoti nevienalytį skaičiavimą: nuo kalbos ir aparatūros nepriklausomą tarpinį vaizdavimą, virtualių komandų rinkinio architektūrą (V-ISA) ir vykdymo laiko programavimą.
Nepriklausomas tarpinis atstovavimas Tikslinės sistemos (IR) ir programavimo kalba, naudojama HPVM, yra pagrįsta tarpiniu LLVM 9.0 instrukcijų vaizdavimu ir išplečia jį hierarchiniu duomenų srauto grafiku, kad apimtų lygiagretumą užduoties, duomenų ir skaičiavimo vamzdynų lygiu.
Tarp HPVM tarpinių taip pat yra vektorinės instrukcijos ir bendra atmintis. Pagrindinis tarpinio atvaizdavimo naudojimo tikslas yra efektyvus kodų generavimas ir heterogeninių sistemų optimizavimas.
Virtuali instrukcijų rinkinio architektūra (V-ISA) apibendrina žemo lygio aparatūros ypatybes ir suvienija įvairias paralelizmo formas ir atminties architektūras, naudodama tik pagrindinį sutapimo modelį - duomenų srauto grafiką. V-ISA leidžia pasiekti perkeliamumą tarp skirtingų tipų lygiagrečios skaičiavimo įrangos ir leidžia neprarasti našumo naudojant skirtingus heterogeninių sistemų elementus. Virtuali ISA taip pat gali būti naudojama teikiant universalų vykdomąjį programos kodą, kurį galima paleisti naudojant procesorių, GPU, FPGA ir įvairius greitintuvus.
Dabartiniame vystymosi etape HPVM siūlo kodų generatorius, galinčius išversti ISA apibrėžtus programų mazgus Virtualus paleisti naudojant NVIDIA GPU („cuDNN“ ir „OpenCL“), „Intel AVX“ vektorines instrukcijas ir kelių branduolių x86 procesorius. }
Vykdymo metu HPVM skaičiavimo procesui taiko lanksčią planavimo politiką, įgyvendinamą tiek remiantis informacija apie programą (grafine struktūra), tiek sudarant atskirus programos mazgus, skirtus vykdyti bet kuriame sistemoje esančiame paskirties skaičiavimo įrenginyje.
Palyginti su pirmąja peržiūros versija, HPVM 1.0 apima linijinių algebros tenzoriaus operacijų palaikymą, sąsajos „Pytorch“ ir „Keras“ bei aproksimacijos derinimo sistema, kuri automatiškai parenka optimalias apytiksles tam tikroms tenso operacijoms ir parenka optimalaus veikimo parametrus.
Galiausiai, jei norite sužinoti daugiau apie šį kompiliatorių, Išsamią informaciją galite patikrinti šioje nuorodoje.