HPVM 2.0, þýðandi fyrir CPU, GPU, FPGA og vélbúnaðarhraðla gefinn út

LLVM verkefnið tilkynnti útgáfu HPVM 2.0 (Heterogeneous Parallel Virtual Machine), þýðanda sem miðar að því að einfalda forritun fyrir ólík kerfi og útvega kóðaframleiðslutæki fyrir örgjörva, GPU, FPGA og lénssértæka vélbúnaðarhraða. Verkefniskóðanum er dreift undir Apache 2.0 leyfinu.

Forritun fyrir ólík samhliða kerfi er flókin vegna tilvistar íhluta í sama kerfi sem nota mismunandi gerðir til að ná fram samhliða samsvörun (CPU kjarna, vektorleiðbeiningar, GPU osfrv.), mismunandi leiðbeiningasett og mismunandi stigveldi minni. Hvert kerfi notar sína eigin samsetningu þessara íhluta. Meginhugmynd HPVM verkefnisins er að nota sameinaða framsetningu samhliða keyrðra forrita við samantekt, sem hægt er að nota fyrir ýmsar gerðir vélbúnaðar sem styður samhliða tölvuvinnslu, þar á meðal GPU, vektorleiðbeiningar, fjölkjarna örgjörva, FPGA og ýmsar sérhæfðar hraðaflísar.

Ólíkt öðrum kerfum reyndi HPVM að sameina þrjá möguleika til að skipuleggja ólíka tölvuvinnslu - forritunarmál og vélbúnaðaróháð milliframsetning (IR), sýndarkennslusett arkitektúr (V-ISA) og tímaáætlun fyrir keyrslutíma:

  • HPVM milliframsetningin útvíkkar LLVM milliframsetningu leiðbeininga með því að nota stigskipt gagnaflæðisgraf til að fanga samsvörun á verkefna-, gagna- og leiðslustigi. HPVM milliframsetningin inniheldur einnig vektorleiðbeiningar og sameiginlegt minni. Megintilgangur þess að nota milliframsetningu er skilvirk kóðagerð og hagræðing fyrir ólík kerfi.
  • Virtual Instruction Set Architecture (V-ISA) dregur saman lágstigs vélbúnaðareiginleika og sameinar ýmsar gerðir samhliða og minnisarkitektúra með því að nota aðeins grunn samhliða líkan - gagnaflæðisgrafið. V-ISA gerir þér kleift að ná flytjanleika á milli mismunandi tegunda búnaðar fyrir samhliða tölvuvinnslu og gerir það mögulegt að tapa ekki afköstum þegar mismunandi þættir ólíkra kerfa eru notaðir. Sýndar ISA er einnig hægt að nota til að afhenda alhliða keyranlega forritakóða sem getur keyrt með örgjörva, GPU, FPGA og ýmsum hröðum.
  • Sveigjanlegar áætlunarstefnur fyrir reikniferlið eru notaðar á keyrslutíma og eru útfærðar bæði á grundvelli upplýsinga um forritið (grófgerð) og með því að setja saman einstaka forritahnúta til framkvæmdar á hvaða marktölvubúnaði sem er tiltækur í kerfinu.

Kóðaframleiðendurnir sem þróaðir eru af verkefninu eru færir um að þýða forritahnúta sem eru skilgreindir með sýndar-ISA til framkvæmdar með því að nota NVIDIA GPU (cuDNN og OpenCL), Intel AVX vektorleiðbeiningar, FPGA og fjölkjarna x86 örgjörva. Það er tekið fram að frammistaða HPVM þýðenda er sambærileg við handskrifaðan OpenCL kóða fyrir GPU og vektortölvutæki.

Helstu nýjungar HPVM 2.0:

  • Lagt hefur verið fram Hetero-C++ tungumál framenda, sem einfaldar samhliða samsetningu forritakóða í C/C++ fyrir samantekt í HPVM. Hetero-C++ skilgreinir viðbætur fyrir samhliða gagnastig og stigveldisverkefni sem varpa á HPVM þráðargraf.
  • FPGA bakendi hefur verið bætt við til að veita stuðning við keyrslu kóða á Intel FPGA. Til að skipuleggja framkvæmd er Intel FPGA SDK fyrir OpenCL notað.
  • DSE (Design Space Exploration) ramma hefur verið bætt við, sem felur í sér hagræðingu þýðanda og aðferðir til að bera kennsl á flöskuhálsa til að stilla forrit sjálfkrafa fyrir tiltekinn vélbúnaðarvettvang. Ramminn inniheldur tilbúið frammistöðulíkan fyrir FPGA frá Intel og gerir það mögulegt að tengja eigin örgjörva til hagræðingar fyrir hvaða tæki sem HPVM styður. Hagræðingar er hægt að beita bæði á HPVM og LLVM gagnaflæðis línuritsstigum.
  • LLVM íhlutir hafa verið uppfærðir í útgáfu 13.0.
  • Kóðinn hefur verið endurskipulagður til að gera það auðveldara að vafra um kóðagrunninn, bókasöfn og tól.
  • Prófunarinnviðir hafa verið endurbættir, nýjum prófunum hefur verið bætt við fyrir ýmsa HPVM íhluti.

Heimild: opennet.ru

Bæta við athugasemd