HPVM 2.0, samesteller vir SVE, GPU, FPGA en hardewareversnellers gepubliseer

Die LLVM-projek het die vrystelling van HPVM 2.0 (Heterogeneous Parallel Virtual Machine) aangekondig, 'n samesteller wat daarop gemik is om programmering vir heterogene stelsels te vereenvoudig en kodegenerering-instrumente vir SVE's, GPU's, FPGA's en domeinspesifieke hardewareversnellers te verskaf. Die projekkode word onder die Apache 2.0-lisensie versprei.

Programmering vir heterogene parallelle stelsels word bemoeilik deur die teenwoordigheid van komponente in dieselfde stelsel wat verskillende modelle gebruik vir die bereiking van parallelisme (SVE-kerns, vektorinstruksies, GPU, ens.), verskillende instruksiestelle en verskillende geheuehiërargieë. Elke stelsel gebruik sy eie kombinasie van hierdie komponente. Die hoofgedagte van die HPVM-projek is om 'n verenigde voorstelling van parallel-uitgevoerde programme te gebruik tydens samestelling, wat gebruik kan word vir verskillende soorte hardeware wat parallelle rekenaars ondersteun, insluitend GPU's, vektorinstruksies, multi-kern verwerkers, FPGA's en verskeie gespesialiseerde versnellerskyfies.

Anders as ander stelsels, het HPVM probeer om drie vermoëns te kombineer om heterogene rekenaars te organiseer - 'n programmeertaal en hardeware-onafhanklike intermediêre verteenwoordiging (IR), virtuele instruksiestel-argitektuur (V-ISA) en runtime-skedulering:

  • Die HPVM-tussenvoorstelling brei die LLVM-tussenvoorstelling van instruksies uit deur 'n hiërargiese datavloeigrafiek te gebruik om parallelisme op die taak-, data- en pyplynvlakke vas te lê. Die HPVM-tussenvoorstelling sluit ook vektorinstruksies en gedeelde geheue in. Die hoofdoel van die gebruik van 'n intermediêre voorstelling is doeltreffende kodegenerering en optimering vir heterogene stelsels.
  • Virtuele Instruksie Stel Argitektuur (V-ISA) abstraheer laevlak hardeware kenmerke en verenig verskeie vorme van parallelisme en geheue argitekture deur slegs 'n basiese parallelisme model te gebruik—die datavloeigrafiek. V-ISA laat jou toe om oordraagbaarheid tussen verskillende soorte toerusting vir parallelle rekenaars te bereik en maak dit moontlik om nie prestasie te verloor wanneer verskillende elemente van heterogene stelsels gebruik word nie. Virtuele ISA kan ook gebruik word om universele uitvoerbare programkode te lewer wat met SVE's, GPU's, FPGA's en verskeie versnellers kan loop.
  • Buigsame skeduleringsbeleide vir die berekeningsproses word tydens looptyd toegepas en word geïmplementeer beide gebaseer op inligting oor die program (grafiekstruktuur) en deur die samestelling van individuele programnodusse vir uitvoering op enige van die teikenrekenaartoestelle wat in die stelsel beskikbaar is.

Die kode-opwekkers wat deur die projek ontwikkel is, is in staat om toepassingsnodes wat gedefinieer is met behulp van 'n virtuele ISA vir uitvoering te vertaal met behulp van NVIDIA GPU's (cuDNN en OpenCL), Intel AVX-vektorinstruksies, FPGA's en multi-core x86 CPU's. Daar word kennis geneem dat die werkverrigting van die HPVM-vertalers vergelykbaar is met handgeskrewe OpenCL-kode vir GPU's en vektorrekenaartoestelle.

Sleutelinnovasies van HPVM 2.0:

  • 'n Hetero-C++ taalfrontend is voorgestel, wat die parallellisering van toepassingskode in C/C++ vir samestelling in HPVM vereenvoudig. Hetero-C++ definieer uitbreidings vir datavlakparallelisme en hiërargiese take wat na HPVM-draadgrafieke gekarteer word.
  • 'n FPGA-agterkant is bygevoeg om ondersteuning te bied vir kode-uitvoering op Intel FPGA's. Om uitvoering te organiseer, word die Intel FPGA SDK vir OpenCL gebruik.
  • Die DSE (Design Space Exploration)-raamwerk is bygevoeg, wat samestelleroptimalisasies en meganismes insluit vir die identifisering van knelpunte om toepassings outomaties vir 'n gegewe hardewareplatform in te stel. Die raamwerk bevat 'n klaargemaakte werkverrigtingmodel vir FPGA's van Intel en maak dit moontlik om jou eie verwerkers te koppel vir optimering vir enige toestelle wat deur HPVM ondersteun word. Optimalisasies kan op beide die HPVM- en LLVM-datavloeigrafiekvlakke toegepas word.
  • LLVM-komponente is opgedateer na weergawe 13.0.
  • Die kode is herorganiseer om dit makliker te maak om die kodebasis, biblioteke en nutsprogramme te navigeer.
  • Die toetsinfrastruktuur is verbeter, nuwe toetse is bygevoeg vir verskeie HPVM-komponente.

Bron: opennet.ru

Voeg 'n opmerking