A projekt fejlesztői Az LLVM megjelent nemrégiben kiadta a Heterogén Párhuzamos Virtuális Gép fordítót (HPVM) 1.0, amelynek célja egyszerűsíti a heterogén rendszerek programozását, és kódgeneráló eszközöket biztosít a CPU, GPU, FPGA és hardveres gyorsítók számára tartományspecifikus (az FGPA és a gyorsítók támogatása nem szerepelt az 1.0 verzióban).
A fő ötlet a HPVM mögött a futtatható programok egyszerû reprezentációjának összeállítása amelyek különféle párhuzamos hardvereken futtathatók, beleértve a GPU-kat, a vektoros utasításokat, a többmagos processzorokat, az FPGA-kat és a különféle speciális gyorsító chipeket.
A heterogén párhuzamos rendszerek programozását bonyolítja az olyan rendszerek (CPU-magok, vektoros utasítások, GPU-k stb.) Jelenléte a rendszerben, amelyek különböző modelleket használnak a párhuzamosság, a különböző utasításkészletek és a különböző memóriahierarchiák elérésére, és mindegyik rendszer kombinációja az ilyen alkatrészek változnak.
Az Illinois LLVM Compiler Research Group örömmel jelentette be a HPVM (1.0 verzió) nyílt forráskódú kiadását. A HPVM a CPU-kat, GPU-kat és gyorsítókat célzó átirányító keretrendszer (ez a kiadás nem tartalmazza a gyorsító támogatását) [1]. A HPVM egy céltól független fordítói IR-t használ, amely kiterjeszti az LLVM 9.0.0 fordító IR-jét egy explicit hierarchikus adatfolyam-reprezentációval, amely rögzíti a feladatokat, az adatokat és a folyamat párhuzamosságot.
Ez a verzió fontos kiegészítés az első verziónkhoz (0.5-ös verzió), amely támogatja a lineáris algebra tenzor műveleteket, a Pytorch és a Keras interfészeket, a közelítéseket a konvolúciós operátorok számára, valamint egy hatékony és rugalmas keretet a közelítés illesztéséhez.
Meg kell jegyezni, hogy a A HPVM jelentős teljesítménynövekedést érhet el óta eA HPVM fordítók kimeneti teljesítménye összehasonlítható az OpenCL kódéval kézzel írva GPU és vektor számítástechnikai eszközökhöz. Más rendszerektől eltérően a HPVM három lehetőséget próbált kombinálni a heterogén számítástechnika megszervezésében: nyelvtől és hardvertől független köztes ábrázolás, virtuális utasításkészlet architektúra (V-ISA) és futásidejű programozás.
A független köztes reprezentáció (IR) a célrendszer és a HPVM-ben használt programozási nyelv az LLVM 9.0 utasítások köztes ábrázolásán alapul és kiterjeszti egy hierarchikus adatfolyamdiagrammal, hogy lefedje a párhuzamosságot a feladat, az adatok és a számítási folyamatok szintjén.
A HPVM köztes tartalmaz vektoros utasításokat és megosztott memóriát is. A köztes reprezentáció használatának fő célja a hatékony kódgenerálás és optimalizálás heterogén rendszerek számára.
A virtuális utasításkészlet-architektúra (V-ISA) kivonja az alacsony szintű hardver jellemzőit, és egyesíti a párhuzamosság és a memória architektúrájának különféle formáit, csak az alapvető egyidejűségi modell, az adatfolyam-grafikon felhasználásával. A V-ISA lehetővé teszi a különböző típusú párhuzamos számítástechnikai eszközök közötti hordozhatóság elérését, és lehetővé teszi a teljesítmény elvesztését a heterogén rendszerek különböző elemeinek használata esetén. A virtuális ISA használható univerzális futtatható programkód biztosítására is, amely futtatható CPU, GPU, FPGA és különféle gyorsítók segítségével.
A jelenlegi fejlődési szakaszban A HPVM olyan kódgenerátorokat kínál, amelyek képesek lefordítani az ISA által meghatározott alkalmazáscsomópontokat Virtuális az NVIDIA GPU-k (cuDNN és OpenCL), az Intel AVX vektoros utasítások és a többmagos x86-os processzorok használatával. }
A végrehajtás során a HPVM rugalmas ütemezési házirendeket alkalmaz a számítási folyamatra, mind a programra vonatkozó információk alapján (grafikus szerkezet), mind az egyes programcsomópontok összeállításán keresztül végrehajtásra a rendszerben elérhető bármely rendeltetési hely számítási eszközén.
Az első előnézeti verzióhoz képest A HPVM 1.0 támogatja a lineáris algebra tenzor műveletek támogatását, interfészek a Pytorch és a Keras számára, valamint egy közelítő hangolási keretrendszer, amely automatikusan kiválasztja az optimális közelítéseket bizonyos tenzorműveletekhez, és kiválaszt egy beállítást az optimális teljesítmény érdekében.
Végül, ha többet szeretne tudni erről a fordítóról, A részleteket a következő linken ellenőrizheti.
Legyen Ön az első hozzászóló