LLVM projekt tutvustas HPVM 1.0, CPU, GPU, FPGA ja kiirendite kompilaatorit

LLVM projekti arendajad on avaldanud kompilaatori HPVM 1.0 (Heterogeneous Parallel Virtual Machine) versiooni, mille eesmärk on lihtsustada heterogeensete süsteemide programmeerimist ja pakkuda tööriistu CPU-de, GPU-de, FPGA-de ja domeenispetsiifiliste riistvarakiirendite jaoks koodi genereerimiseks (toetus FGPA-sid ja kiirendeid 1.0 väljalase ei sisaldanud). Projekti koodi levitatakse Apache 2.0 litsentsi all.

HPVM-i põhiidee on pakkuda kompileerimisel paralleelselt käivitatavate programmide ühtset esitust, mida saab kasutada täitmiseks erinevat tüüpi riistvaraga, mis toetab paralleelset andmetöötlust, sealhulgas GPU-sid, vektorkäske, mitmetuumalisi protsessoreid, FPGA-sid ja mitmesugused spetsiaalsed kiirendikiibid. Erinevalt teistest süsteemidest püüdis HPVM kombineerida kolme võimalust heterogeense andmetöötluse korraldamiseks: keelest ja riistvarast sõltumatu vaheesitus, virtuaalne käsukomplekti arhitektuur (ISA) ja käitusaegne ajakava.

HPVM-i sihtmärgist sõltumatu vaheesitus (IR) tugineb LLVM 9.0 vahekäskude esitusviisile ja laiendab seda hierarhilise andmevoo graafikuga, et jäädvustada ülesande-, andme- ja konveieritaseme paralleelsust. HPVM-i vaheesitus sisaldab ka vektorkäske ja ühismälu. Vaheesitusviisi kasutamise põhieesmärk on tõhus koodi genereerimine ja optimeerimine heterogeensete süsteemide jaoks.

Virtuaalse käsukomplekti arhitektuur (ISA) võimaldab kaasaskantavust erinevat tüüpi paralleelse andmetöötluse riistvara vahel ja võimaldab mitte kaotada jõudlust heterogeensete süsteemide erinevate elementide kasutamisel. Virtuaalset ISA-d saab kasutada ka universaalse käivitatava programmikoodi edastamiseks, mida saab kasutada CPU-de, GPU-de, FPGA-de ja erinevate kiirendite abil.

Praeguses arendusjärgus pakub HPVM koodigeneraatoreid, mis on võimelised tõlkima virtuaalse ISA abil määratletud rakendussõlmi NVIDIA GPU-de (cuDNN ja OpenCL), Inteli AVX-i vektorkäskude ja mitmetuumaliste x86-protsessorite abil. Käitusajal rakendab HPVM paindlikke arvutusprotsesside ajastamispoliitikaid, mida rakendatakse nii programmiteabe (graafiku struktuuri) põhjal kui ka üksikute programmisõlmede kompileerimise kaudu, mis on ette nähtud täitmiseks mis tahes süsteemis saadaolevatel arvutiseadmetel.

Märgitakse, et HPVM-i kasutamine võib oluliselt tõsta tootlikkust. HPVM-i tõlkijate jõudlus on võrreldav käsitsi kirjutatud OpenCL-koodiga GPU-de ja vektorarvutite jaoks.

Võrreldes esimese eelvaateväljaandega sisaldab HPVM 1.0 lineaarse algebra tensorioperatsioonide tuge, Pytorchi ja Kerase esiosasid, konvolutsioonioperaatori lähendusi ja lähenduse häälestamise raamistikku, mis valib automaatselt optimaalsed lähendused konkreetsete tensoritoimingute jaoks ja valib konfiguratsiooni, mis tagab optimaalse jõudluse.

Allikas: opennet.ru

Lisa kommentaar