HPVM 2.0, kompilator foar CPU, GPU, FPGA en hardware accelerators publisearre

It LLVM-projekt yntrodusearre de frijlitting fan 'e HPVM 2.0 (Heterogeneous Parallel Virtual Machine) kompilator, rjochte op it ferienfâldigjen fan programmearring foar heterogene systemen en it leverjen fan ark foar it generearjen fan koade foar CPU's, GPU's, FPGA's, en domeinspesifike hardwareversnellers. De projektkoade wurdt ferspraat ûnder de Apache 2.0-lisinsje.

Programming foar heterogene parallelle systemen is yngewikkeld troch de oanwêzigens yn ien systeem fan komponinten dy't ferskate modellen brûke foar it realisearjen fan parallelisme (CPU-kearnen, vectorynstruksjes, GPU's, ensfh.), Ferskillende sets fan ynstruksjes en ferskate ûnthâldhierarchyen. Elk systeem brûkt syn eigen kombinaasje fan dizze komponinten. It haadidee fan it HPVM-projekt is te brûken by it kompilearjen fan in unifoarme fertsjintwurdiging fan parallelle programma's dy't kinne wurde brûkt foar ferskate soarten hardware dy't parallelle komputer stipet, ynklusyf GPU's, fektorynstruksjes, multi-core processors, FPGA's, en ferskate spesjalisearre accelerator chips.

Oars as oare systemen besocht HPVM trije mooglikheden te kombinearjen foar it organisearjen fan heterogene komputer - in tuskenlizzende fertsjintwurdiging (IR), in firtuele ynstruksjeset-arsjitektuer (V-ISA), en runtime-skema, ûnôfhinklik fan 'e programmeartaal en apparatuer:

  • Tussenfertsjintwurdiging HPVM wreidet de tuskenfertsjintwurdiging fan LLVM-ynstruksjes út troch in hiërargyske gegevensstreamgrafyk te brûken om parallelisme te fangen op it nivo fan taken, gegevens en berekkeningspipelines. De HPVM-tuskenfertsjintwurdiging omfettet ek fektorynstruksjes en dielde ûnthâld. It wichtichste doel fan it brûken fan in tuskenlizzende fertsjintwurdiging is effisjinte koade generaasje en optimalisaasje foar heterogene systemen.
  • Virtual Instruction Set Architecture (V-ISA) abstrahert hardware op leech nivo en ferieniget ferskate foarmen fan parallelisme en ûnthâldarsjitektuer mei allinich it ûnderlizzende simultansmodel, de Data Flow Graph. V-ISA makket it mooglik om portabiliteit te berikken tusken ferskate soarten hardware foar parallele berekkenjen en makket it mooglik om prestaasjes net te ferliezen by it brûken fan ferskate eleminten fan heterogene systemen. Firtuele ISA kin ek brûkt wurde om generyske programma útfierbere koade te leverjen dy't kin rinne op CPU's, GPU's, FPGA's en ferskate accelerators.
  • Fleksibele skema-belied foar berekkeningsproses wurdt tapast op runtime en wurdt ymplementearre sawol op basis fan ynformaasje oer it programma (grafykstruktuer) as troch it kompilearjen fan yndividuele programmaknooppunten foar útfiering op ien fan 'e doelbereikapparaten beskikber yn it systeem.

De koadegenerators ûntwikkele troch it projekt binne yn steat om tapassingsknooppunten te oersetten definieare mei firtuele ISA foar útfiering mei NVIDIA GPU's (cuDNN en OpenCL), Intel AVX-fektorynstruksjes, FPGA's, en multi-core x86 CPU's. It wurdt opmurken dat de prestaasjes fan 'e resultaten fan' e HPVM-oersetters te fergelykjen binne mei de hân skreaune OpenCL-koade foar GPU's en fektorkomputerapparaten.

Wichtichste ynnovaasjes fan HPVM 2.0:

  • De Hetero-C++-taalfrontend wurdt foarsteld, wat de parallelisaasje fan C/C++-applikaasjekoade foar kompilaasje yn HPVM ferienfâldigt. Hetero-C ++ definiearret útwreidings foar data-nivo parallelism en hiërargyske taken dy't yn kaart brocht wurde oan HPVM thread grafiken.
  • In FPGA-backend is tafoege om koade-útfiering te stypjen op in Intel FPGA. Om de útfiering te organisearjen wurdt de Intel FPGA SDK foar OpenCL brûkt.
  • It ramt DSE (Design Space Exploration) is tafoege, dy't gearstallingsoptimalisaasjes en knelpuntdeteksjemeganismen omfettet foar automatysk ôfstimmen fan applikaasjes foar in bepaald hardwareplatfoarm. It ramt befettet in klearmakke prestaasjesmodel foar FPGA fan Intel en lit jo jo eigen processors ferbine foar optimalisaasje foar elk apparaat dat wurdt stipe troch HPVM. Optimisaasjes kinne wurde tapast sawol op it nivo fan HPVM-dataflowgrafyk as op it LLVM-nivo.
  • LLVM-komponinten bywurke nei ferzje 13.0.
  • De koade is reorganisearre om it makliker te meitsjen troch de koadebase, bibleteken en nutsbedriuwen te navigearjen.
  • De ynfrastruktuer foar testen is ferbettere, nije testen binne tafoege foar ferskate HPVM-komponinten.

Boarne: opennet.ru

Add a comment