Megjelent a HPVM 2.0 fordító CPU-hoz, GPU-hoz, FPGA-hoz és hardveres gyorsítókhoz

Az LLVM projekt bejelentette a HPVM 2.0 (Heterogeneous Parallel Virtual Machine) kiadását, amely fordítóprogram a heterogén rendszerek programozásának egyszerűsítésére és a CPU-k, GPU-k, FPGA-k és tartomány-specifikus hardvergyorsítók számára kódgeneráló eszközök biztosítására szolgál. A projekt kódja az Apache 2.0 licenc alatt kerül terjesztésre.

A heterogén párhuzamos rendszerek programozását bonyolítja, hogy ugyanabban a rendszerben vannak olyan komponensek, amelyek különböző modelleket használnak a párhuzamosság elérésére (CPU magok, vektorutasítások, GPU 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 HPVM projekt fő gondolata, hogy a fordítás során a párhuzamosan végrehajtott programok egységes reprezentációját használja, amely különböző típusú, párhuzamos számítást támogató hardverekhez használható, ideé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 ötvözni a heterogén számítástechnika megszervezéséhez - a programozási nyelvet és a hardver-független köztes reprezentációt (IR), a virtuális utasításkészlet architektúrát (V-ISA) és a futásidejű ütemezést:

  • A HPVM közbenső reprezentáció kiterjeszti az utasítások LLVM közbenső reprezentációját egy hierarchikus adatfolyam-gráf használatával a párhuzamosság rögzítésére a feladat, az adat és a folyamat 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) az alacsony szintű hardverjellemzőket absztrahálja, és egyesíti a párhuzamosság és a memóriaarchitektúrák különféle formáit egyetlen alapvető párhuzamossági modell – az adatfolyam-gráf – segítségével. A V-ISA lehetővé teszi a hordozhatóság elérését a különböző típusú berendezések között 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 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 számítási folyamat rugalmas ütemezési házirendjei futás közben kerülnek alkalmazásra, és mind a programra vonatkozó információk (grafikonstruktúra) alapján, mind pedig az egyes programcsomópontok összeállítása révén valósulnak meg, amelyek a rendszerben elérhető bármely célszámítási eszközön végrehajthatók.

A projekt által kifejlesztett kódgenerátorok 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, FPGA-k és többmagos x86-os CPU-k segítségével történő végrehajtáshoz. Meg kell jegyezni, hogy a HPVM-fordítók teljesítménye hasonló a kézzel írt OpenCL-kódhoz GPU-khoz és vektoros számítástechnikai eszközökhöz.

A HPVM 2.0 legfontosabb újításai:

  • Egy Hetero-C++ nyelvi frontendet javasoltak, amely leegyszerűsíti az alkalmazáskód párhuzamosítását C/C++ nyelven a HPVM-ben történő fordításhoz. A Hetero-C++ kiterjesztéseket definiál 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ódfuttatást Intel FPGA-kon. A végrehajtás megszervezéséhez az Intel FPGA SDK for OpenCL használatos.
  • Bekerült a DSE (Design Space Exploration) keretrendszer, amely a fordítóoptimalizálást és a szűk keresztmetszetek azonosítására szolgáló mechanizmusokat tartalmazza az alkalmazások adott hardverplatformra történő automatikus hangolásához. A keretrendszer tartalmaz egy kész teljesítménymodellt az Intel FPGA-jaihoz, és lehetővé teszi saját processzorok csatlakoztatását a HPVM által támogatott bármely eszköz optimalizálásához. Az optimalizálás mind a HPVM, mind az LLVM adatfolyam-gráf szintjén alkalmazható.
  • Az LLVM összetevői a 13.0-s verzióra frissültek.
  • 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 tesztek kerültek hozzáadásra a különböző HPVM-komponensekhez.

Forrás: opennet.ru

Hozzászólás