HPVM 2.0, CPU, GPU, FPGA ja riistvarakiirendite kompilaator on avaldatud

Projekt LLVM tutvustas HPVM 2.0 (heterogeense paralleelse virtuaalmasina) kompilaatori väljalaskmist, 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. Projekti koodi levitatakse Apache 2.0 litsentsi all.

Heterogeensete paralleelsüsteemide programmeerimine on keeruline, kuna ühes süsteemis on komponendid, mis kasutavad paralleelsuse saavutamiseks erinevaid mudeleid (CPU tuumad, vektorkäsklused, GPU-d jne), erinevaid käskude komplekte ja erinevaid mäluhierarhiaid. Iga süsteem kasutab nende komponentide oma kombinatsiooni. HPVM-i projekti põhiidee on kasutada paralleelsete programmide ühtse esituse koostamisel, mida saab kasutada erinevat tüüpi riistvara jaoks, mis toetab paralleelset andmetöötlust, sealhulgas GPU-d, vektorkäsklused, mitmetuumalised protsessorid, FPGA-d ja mitmesugused spetsiaalsed kiirendi kiibid.

Erinevalt teistest süsteemidest püüdis HPVM kombineerida kolme võimalust heterogeense andmetöötluse korraldamiseks – vahepealset esitust (IR), virtuaalset käsukomplekti arhitektuuri (V-ISA) ja käitusaja planeerimist, sõltumata programmeerimiskeelest ja seadmetest:

  • Vaheesitus HPVM laiendab LLVM-i käskude vahepealset esitust, kasutades hierarhilise andmevoo graafikut, et tabada paralleelsust ülesannete, andmete ja arvutuslike torustike tasandil. 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.
  • Virtual Instruction Set Architecture (V-ISA) võtab kokku madala taseme riistvara ja ühendab paralleelsuse ja mäluarhitektuuri erinevad vormid, kasutades ainult aluseks olevat samaaegsusmudelit, andmevoo graafikut. V-ISA võimaldab saavutada kaasaskantavuse erinevat tüüpi riistvara vahel paralleelarvutuseks ja võimaldab mitte kaotada jõudlust heterogeensete süsteemide erinevate elementide kasutamisel. Virtuaalset ISA-d saab kasutada ka üldise programmi käivitatava koodi edastamiseks, mida saab kasutada protsessorites, GPU-des, FPGA-des ja mitmesugustes kiirendites.
  • Paindlikke arvutusprotsesside ajastamise põhimõtteid rakendatakse käitusajal ja neid rakendatakse nii programmi (graafiku struktuuri) teabe põhjal kui ka üksikute programmisõlmede kompileerimisega täitmiseks mis tahes süsteemis saadaoleval sihtarvutusseadmel.

Projekti arendatud koodigeneraatorid on võimelised tõlkima virtuaalse ISA abil määratletud rakendussõlmi NVIDIA GPU-de (cuDNN ja OpenCL), Inteli AVX-i vektorkäskude, FPGA-de ja mitmetuumaliste x86-protsessorite abil. Tuleb märkida, et HPVM-i tõlkijate tulemuste jõudlus on võrreldav GPU-de ja vektorarvutite käsitsi kirjutatud OpenCL-koodiga.

HPVM 2.0 peamised uuendused:

  • Pakutakse välja Hetero-C++ keele esiserv, mis lihtsustab C/C++ rakenduskoodi paralleelstamist HPVM-is kompileerimiseks. Hetero-C++ määratleb andmetaseme paralleelsuse ja hierarhiliste ülesannete laiendused, mis on vastendatud HPVM-i lõimegraafikutele.
  • Koodi käivitamise toetamiseks Inteli FPGA-l on lisatud FPGA taustaprogramm. Täitmise korraldamiseks kasutatakse Intel FPGA SDK for OpenCL.
  • Lisatud on DSE (Design Space Exploration) raamistik, mis sisaldab kompilaatorite optimeerimisi ja kitsaskohtade tuvastamise mehhanisme rakenduste automaatseks häälestamiseks antud riistvaraplatvormile. Raamistik sisaldab Inteli valmis jõudlusmudelit FPGA jaoks ja võimaldab teil ühendada oma protsessoreid optimeerimiseks mis tahes HPVM-i toetatud seadme jaoks. Optimeerimisi saab rakendada nii HPVM-i andmevoo graafiku tasemel kui ka LLVM-i tasemel.
  • LLVM-i komponendid on värskendatud versioonile 13.0.
  • Kood on ümber korraldatud, et hõlbustada koodibaasis, teekides ja utiliitides navigeerimist.
  • Täiustatud on testimise infrastruktuuri, lisatud on uusi teste erinevate HPVM komponentide jaoks.

Allikas: opennet.ru

Lisa kommentaar