Publicēts HPVM 2.0, kompilators CPU, GPU, FPGA un aparatūras paātrinātājiem

LLVM projekts paziņoja par HPVM 2.0 (Heterogeneous Parallel Virtual Machine), kompilatora, kura mērķis ir vienkāršot programmēšanu neviendabīgām sistēmām un nodrošināt koda ģenerēšanas rīkus CPU, GPU, FPGA un domēna specifiskajiem aparatūras paātrinātājiem, izlaišanu. Projekta kods tiek izplatīts saskaņā ar Apache 2.0 licenci.

Programmēšanu neviendabīgām paralēlām sistēmām sarežģī komponentu klātbūtne vienā un tajā pašā sistēmā, kas izmanto dažādus modeļus paralēlisma sasniegšanai (CPU kodoli, vektoru instrukcijas, GPU utt.), dažādas instrukciju kopas un dažādas atmiņas hierarhijas. Katra sistēma izmanto savu šo komponentu kombināciju. HPVM projekta galvenā ideja ir kompilēšanas laikā izmantot vienotu paralēli izpildītu programmu attēlojumu, ko var izmantot dažāda veida aparatūrai, kas atbalsta paralēlo skaitļošanu, ieskaitot GPU, vektora instrukcijas, daudzkodolu procesorus, FPGA un dažādas specializētas akseleratora mikroshēmas.

Atšķirībā no citām sistēmām, HPVM mēģināja apvienot trīs iespējas neviendabīgas skaitļošanas organizēšanai - programmēšanas valodu un no aparatūras neatkarīgu starpposma attēlojumu (IR), virtuālo instrukciju kopas arhitektūru (V-ISA) un izpildlaika plānošanu:

  • HPVM starpposma attēlojums paplašina instrukciju LLVM starpposma attēlojumu, izmantojot hierarhisku datu plūsmas grafiku, lai uztvertu paralēlismu uzdevuma, datu un konveijera līmenī. HPVM starpposma attēlojums ietver arī vektora instrukcijas un koplietojamo atmiņu. Galvenais starpposma attēlojuma izmantošanas mērķis ir efektīva koda ģenerēšana un optimizācija neviendabīgām sistēmām.
  • Virtual Instruction Set Architecture (V-ISA) abstrahē zema līmeņa aparatūras līdzekļus un apvieno dažādas paralēlisma formas un atmiņas arhitektūras, izmantojot tikai pamata paralēlisma modeli — datu plūsmas grafiku. V-ISA ļauj sasniegt pārnesamību starp dažāda veida iekārtām paralēlai skaitļošanai un ļauj nezaudēt veiktspēju, izmantojot dažādus neviendabīgu sistēmu elementus. Virtuālo ISA var izmantot arī, lai nodrošinātu universālu izpildāmo programmas kodu, kas var darboties, izmantojot CPU, GPU, FPGA un dažādus paātrinātājus.
  • Elastīgas plānošanas politikas skaitļošanas procesam tiek piemērotas izpildlaikā un tiek ieviestas gan pamatojoties uz informāciju par programmu (grafa struktūru), gan izmantojot atsevišķu programmas mezglu kompilāciju izpildei jebkurā no sistēmā pieejamajām mērķa skaitļošanas ierīcēm.

Projekta izstrādātie kodu ģeneratori spēj tulkot lietojumprogrammu mezglus, kas definēti, izmantojot virtuālo ISA, lai tos izpildītu, izmantojot NVIDIA GPU (cuDNN un OpenCL), Intel AVX vektora instrukcijas, FPGA un daudzkodolu x86 CPU. Jāatzīmē, ka HPVM tulkotāju veiktspēja ir salīdzināma ar ar roku rakstītu OpenCL kodu GPU un vektoru skaitļošanas ierīcēm.

Galvenie HPVM 2.0 jauninājumi:

  • Ir ierosināts Hetero-C++ valodas priekšgals, kas vienkāršo lietojumprogrammas koda paralēlizāciju C/C++ kompilēšanai HPVM. Hetero-C++ definē paplašinājumus datu līmeņa paralēlismam un hierarhiskiem uzdevumiem, kas tiek kartēti uz HPVM pavedienu grafikiem.
  • Ir pievienota FPGA aizmugursistēma, lai nodrošinātu atbalstu koda izpildei Intel FPGA. Lai organizētu izpildi, tiek izmantots Intel FPGA SDK for OpenCL.
  • Ir pievienots DSE (Design Space Exploration) ietvars, kas ietver kompilatoru optimizāciju un mehānismus vājo vietu identificēšanai, lai automātiski pielāgotu lietojumprogrammas noteiktai aparatūras platformai. Ietvars satur gatavu Intel veiktspējas modeli FPGA, un tas ļauj savienot savus procesorus, lai optimizētu visas ierīces, kuras atbalsta HPVM. Optimizāciju var lietot gan HPVM, gan LLVM datu plūsmas diagrammu līmenī.
  • LLVM komponenti ir atjaunināti uz versiju 13.0.
  • Kods ir pārkārtots, lai atvieglotu navigāciju kodu bāzē, bibliotēkās un utilītprogrammās.
  • Uzlabota testēšanas infrastruktūra, pievienoti jauni testi dažādiem HPVM komponentiem.

Avots: opennet.ru

Pievieno komentāru