Az LLVM projekt bemutatta a HPVM 1.0-t, a CPU, GPU, FPGA és gyorsítók fordítóját

Az LLVM projekt fejlesztői közzétették a HPVM 1.0 (Heterogeneous Parallel Virtual Machine) fordító kiadását, amelynek célja a heterogén rendszerek programozásának egyszerűsítése, valamint CPU-k, GPU-k, FPGA-k és tartomány-specifikus hardvergyorsítók kód generálására szolgáló eszközök (támogatás Az FGPA-k és a gyorsítók nem szerepeltek az 1.0-s kiadásban). A projekt kódja az Apache 2.0 licenc alatt kerül terjesztésre.

A HPVM alapötlete, hogy a párhuzamosan futtatható programok egységes ábrázolását fordítsa el, amelyek végrehajtásához felhasználható különböző típusú, párhuzamos számítást támogató hardverekkel, beleértve a GPU-kat, vektorutasításokat, többmagos processzorokat, FPGA-kat és különféle speciális gyorsító chipek. Más rendszerekkel ellentétben a HPVM három képességet próbált kombinálni a heterogén számítástechnika megszervezésére: nyelv- és hardverfüggetlen köztes reprezentáció, virtuális utasításkészlet architektúra (ISA) és futásidejű ütemezés.

A HPVM célfüggetlen közbülső reprezentációja (IR) az LLVM 9.0 köztes utasítás-reprezentációra épül, és egy hierarchikus adatfolyam-grafikonnal bővíti ki, hogy rögzítse a feladat-, adat- és folyamatszintű párhuzamosságot. A HPVM közbenső reprezentáció vektoros utasításokat és megosztott memóriát is tartalmaz. A köztes reprezentáció használatának fő célja a hatékony kódgenerálás és a heterogén rendszerek optimalizálása.

A virtuális utasításkészlet architektúra (ISA) lehetővé teszi a hordozhatóságot a különböző típusú párhuzamos számítási hardverek között, és lehetővé teszi, hogy ne veszítsünk teljesítményből heterogén rendszerek különböző elemeinek használatakor. A Virtual ISA használható univerzális végrehajtható programkódok szállítására is, amelyek CPU-k, GPU-k, FPGA-k és különféle gyorsítók használatával futhatnak.

A fejlesztés jelenlegi szakaszában a HPVM olyan kódgenerátorokat kínál, amelyek képesek lefordítani a virtuális ISA-val definiált alkalmazáscsomópontokat NVIDIA GPU-k (cuDNN és ​​OpenCL), Intel AVX vektorutasítások és többmagos x86 CPU-k segítségével történő végrehajtáshoz. Futás közben a HPVM rugalmas számítási folyamatütemezési házirendeket alkalmaz, amelyeket mind a programinformációk (grafikonstruktúra) alapján, mind pedig az egyes programcsomópontok összeállításával hajtanak végre a rendszerben elérhető bármely célszámítási eszközön.

Meg kell jegyezni, hogy a HPVM használatával jelentős termelékenységnövekedés érhető el. A HPVM-fordítók teljesítménye összevethető a kézzel írt OpenCL-kóddal a GPU-khoz és a vektoros számítástechnikai eszközökhöz.

Az első előzetes kiadáshoz képest a HPVM 1.0 támogatja a lineáris algebra tenzorműveleteit, a Pytorch és a Keras frontendjeit, a konvolúciós operátor közelítéseket, valamint egy közelítés-hangoló keretrendszert, amely automatikusan kiválasztja az optimális közelítéseket adott tenzorműveletekhez, és kiválasztja az optimális teljesítményt biztosító konfigurációt.

Forrás: opennet.ru

Hozzászólás