A projekt nemrég Az LLVM bejelentette a kiadását a fordító új verziója HPVM 2.0 (Heterogén párhuzamos virtuális gép), amelynek célja a rendszerek programozásának egyszerűsítése és eszközöket biztosítanak a tartományspecifikus CPU-k, GPU-k, FPGA-k és hardvergyorsítók kódjának előállításához.
A heterogén párhuzamos rendszerek programozása bonyolult, mivel egy rendszerben olyan komponensek vannak jelen, amelyek különböző modelleket használnak a párhuzamosság eléréséhez (CPU magok, vektorutasítások, GPU-k stb.), eltérő utasításkészletek és eltérő memóriahierarchiák. Mindegyik rendszer ezen összetevők saját kombinációját használja.
A fő ötlet a HPVM projektről a párhuzamosan futtatható programok egységes ábrázolását használja fordításkor, amelyek különböző típusú, párhuzamos számítást támogató hardverekhez használható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.
Más rendszerekkel ellentétben, A HPVM három lehetőséget próbált kombinálni heterogén számítástechnika megszervezéséhez: köztes reprezentáció (IR), virtuális utasításkészlet architektúra (V-ISA) és futásidejű programozás, programozási nyelvtől és hardvertől függetlenül.
A HPVM köztes reprezentáció kibővíti az LLVM utasítások közbenső reprezentációját egy hierarchikus adatfolyam-gráf használatával a párhuzamosság megragadására a feladatok, az adatok és a számítási folyamatok szintjén. 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 heterogén rendszerek optimalizálása.
A Virtual Instruction Set Architecture (V-ISA) elvonatkoztatja az alacsony szintű hardvert, és egyesíti a párhuzamosság és a memóriaarchitektúrák különféle formáit, csak az alapul szolgáló párhuzamossági modellt, az adatfolyam-gráfot használva.
A V-ISA lehetővé teszi a hordozhatóságot a különböző hardvertípusok között a párhuzamos számításokhoz, és lehetővé teszi, hogy ne veszítse el a teljesítményt heterogén rendszerek különböző elemeinek használatakor. A Virtual ISA arra is használható, hogy általános program futtatható kódot szállítson, amely CPU-kon, GPU-kon, FPGA-kon és különféle gyorsítókon futtatható.
A rugalmas számítási ütemezési házirendek futás közben kerülnek alkalmazásra, és a programra vonatkozó információk (grafikus struktúra) alapján, valamint egyedi programcsomópontok összeállításával valósulnak meg a rendszerben elérhető bármely célszámítási eszközön történő végrehajtáshoz.
A projekt által kifejlesztett kódgenerátorok képesek lefordítani a virtuális ISA által meghatározott alkalmazáscsomópontokat NVIDIA GPU-kon (cuDNN és OpenCL), Intel AVX vektorutasításokon, FPGA-kon és többmagos x86 CPU-kon. Meg kell jegyezni, hogy a HPVM fordítók kimeneti teljesítménye hasonló a kézzel írt OpenCL-kódhoz a GPU-hoz és a vektoros számítástechnikai eszközökhöz.
A HPVM 2.0 főbb újdonságai
Részéről a bemutatott újdonságok közül Ebben az új verzióban a következők tűnnek ki:
- A Hetero-C++ nyelvi frontendet javasoljuk, amely leegyszerűsíti az alkalmazáskód párhuzamosítását C/C++ nyelveken a HPVM-ben történő fordításhoz. A Hetero-C++ kiterjesztéseket határoz meg az adatszintű párhuzamossághoz és a HPVM szálgráfokhoz leképező hierarchikus feladatokhoz.
- Egy FPGA háttérrendszer került hozzáadásra, amely támogatja a kód futtatását Intel FPGA-n. A végrehajtás megszervezéséhez az Intel FPGA SDK for OpenCL használatos.
- Kiegészült a DSE (Design Space Exploration) keretrendszerrel, amely a fordítóoptimalizálást és a szűk keresztmetszetek észlelési mechanizmusait tartalmazza az alkalmazások automatikus hangolásához egy adott hardverplatformhoz.
- A keretrendszer egy beépített teljesítménymodellt tartalmaz Intel FPGA-khoz, és lehetővé teszi saját processzorainak csatlakoztatását bármely HPVM-kompatibilis eszköz optimalizálásához.
- Az optimalizálás mind a HPVM adatfolyam-gráf szintjén, mind az LLVM szintjén alkalmazható.
- Az LLVM összetevői frissítve a 13.0-s verzióra.
- A kódot átszervezték, hogy könnyebb legyen navigálni a kódbázisban, a könyvtárakban és a segédprogramokban.
- Javult a tesztelési infrastruktúra, új tesztekkel egészültek ki a különböző HPVM-komponensekhez.
Végül, Ha többet szeretne megtudni a HPVM-ről, ben ellenőrizheti a részleteket a következő link.