Projekt LLVM je predstavil HPVM 1.0, prevajalnik za CPE, GPE, FPGA in pospeševalnike

Razvijalci projekta LLVM so objavili izdajo prevajalnika HPVM 1.0 (Heterogeneous Parallel Virtual Machine), namenjenega poenostavitvi programiranja za heterogene sisteme in zagotavljanju orodij za generiranje kode za CPE, GPU, FPGA in domensko specifične strojne pospeševalnike (podpora za FGPA in pospeševalci niso bili vključeni v izdajo 1.0). Koda projekta se distribuira pod licenco Apache 2.0.

Glavna ideja HPVM je zagotoviti enotno predstavitev vzporedno izvedljivih programov pri prevajanju, ki se lahko uporabljajo za izvajanje z uporabo različnih vrst strojne opreme, ki podpira vzporedno računalništvo, vključno z grafičnimi procesorji, vektorskimi navodili, večjedrnimi procesorji, FPGA in različni specializirani pospeševalni čipi. Za razliko od drugih sistemov je HPVM poskušal združiti tri zmožnosti za organiziranje heterogenega računalništva: vmesno predstavitev, neodvisno od jezika in strojne opreme, arhitekturo navideznega nabora ukazov (ISA) in časovno razporejanje.

Od cilja neodvisna vmesna predstavitev (IR) HPVM temelji na predstavitvi vmesnih navodil LLVM 9.0 in jo razširja s hierarhičnim grafom pretoka podatkov, da zajame vzporednost na ravni nalog, podatkov in cevovoda. Vmesna predstavitev HPVM vključuje tudi vektorska navodila in skupni pomnilnik. Glavni namen uporabe vmesne predstavitve je učinkovito generiranje kode in optimizacija za heterogene sisteme.

Arhitektura navideznega nabora ukazov (ISA) omogoča prenosljivost med različnimi vrstami vzporedne računalniške strojne opreme in preprečuje izgubo zmogljivosti pri uporabi različnih elementov heterogenih sistemov. Virtual ISA se lahko uporablja tudi za zagotavljanje univerzalne izvedljive programske kode, ki se lahko izvaja z uporabo CPE, GPE, FPGA in različnih pospeševalnikov.

Na trenutni stopnji razvoja HPVM ponuja generatorje kode, ki so sposobni prevajati vozlišča aplikacij, definirana z uporabo virtualnega ISA, za izvajanje z uporabo grafičnih procesorjev NVIDIA (cuDNN in OpenCL), vektorskih navodil Intel AVX in večjedrnih procesorjev x86. Med izvajanjem HPVM uporablja fleksibilne pravilnike o razporejanju računalniških procesov, ki se izvajajo tako na podlagi programskih informacij (struktura grafa) kot s sestavljanjem posameznih programskih vozlišč za izvajanje na kateri koli od ciljnih računalniških naprav, ki so na voljo v sistemu.

Ugotovljeno je, da lahko uporaba HPVM doseže znatno povečanje produktivnosti. Zmogljivost prevajalnikov HPVM je primerljiva z ročno napisano kodo OpenCL za GPE in vektorske računalniške naprave.

V primerjavi s prvo predogledno izdajo HPVM 1.0 vključuje podporo za tenzorske operacije linearne algebre, vmesnike za Pytorch in Keras, približke operaterjev konvolucije in ogrodje za uravnavanje približkov, ki samodejno izbere optimalne približke za specifične tenzorske operacije in izbere konfiguracijo, ki zagotavlja optimalno zmogljivost.

Vir: opennet.ru

Dodaj komentar