HPVM 2.0, kompilator for CPU, GPU, FPGA og maskinvareakseleratorer publisert

LLVM-prosjektet kunngjorde utgivelsen av HPVM 2.0 (Heterogen Parallel Virtual Machine), en kompilator som tar sikte på å forenkle programmering for heterogene systemer og tilby kodegenereringsverktøy for CPUer, GPUer, FPGAer og domenespesifikke maskinvareakseleratorer. Prosjektkoden er distribuert under Apache 2.0-lisensen.

Programmering for heterogene parallellsystemer er komplisert av tilstedeværelsen av komponenter i samme system som bruker forskjellige modeller for å oppnå parallellitet (CPU-kjerner, vektorinstruksjoner, GPU, etc.), forskjellige instruksjonssett og forskjellige minnehierarkier. Hvert system bruker sin egen kombinasjon av disse komponentene. Hovedideen til HPVM-prosjektet er å bruke en enhetlig representasjon av parallellkjørte programmer ved kompilering, som kan brukes til ulike typer maskinvare som støtter parallell databehandling, inkludert GPUer, vektorinstruksjoner, flerkjerneprosessorer, FPGAer og ulike spesialiserte akseleratorbrikker.

I motsetning til andre systemer prøvde HPVM å kombinere tre muligheter for å organisere heterogen databehandling - et programmeringsspråk og maskinvareuavhengig mellomrepresentasjon (IR), virtuell instruksjonssettarkitektur (V-ISA) og kjøretidsplanlegging:

  • HPVM-mellomrepresentasjonen utvider LLVM-mellomrepresentasjonen av instruksjoner ved å bruke en hierarkisk dataflytgraf for å fange parallellitet på oppgave-, data- og pipelinenivå. HPVM-mellomrepresentasjonen inkluderer også vektorinstruksjoner og delt minne. Hovedformålet med å bruke en mellomrepresentasjon er effektiv kodegenerering og optimalisering for heterogene systemer.
  • Virtual Instruction Set Architecture (V-ISA) abstraherer maskinvarefunksjoner på lavt nivå og forener ulike former for parallellisme og minnearkitekturer ved å bruke bare en grunnleggende parallellismemodell – dataflytgrafen. V-ISA lar deg oppnå portabilitet mellom ulike typer utstyr for parallell databehandling og gjør det mulig å ikke miste ytelse ved bruk av ulike elementer i heterogene systemer. Virtual ISA kan også brukes til å levere universell kjørbar programkode som kan kjøres ved hjelp av CPUer, GPUer, FPGAer og forskjellige akseleratorer.
  • Fleksible planleggingspolicyer for beregningsprosessen brukes under kjøring og implementeres både basert på informasjon om programmet (grafstruktur) og gjennom kompilering av individuelle programnoder for kjøring på hvilken som helst av måldatabehandlingsenhetene som er tilgjengelige i systemet.

Kodegeneratorene utviklet av prosjektet er i stand til å oversette applikasjonsnoder definert ved hjelp av en virtuell ISA for kjøring ved hjelp av NVIDIA GPUer (cuDNN og OpenCL), Intel AVX vektorinstruksjoner, FPGAer og multi-core x86 CPUer. Det bemerkes at ytelsen til HPVM-oversetterne er sammenlignbar med håndskrevet OpenCL-kode for GPUer og vektordatabehandlingsenheter.

Nøkkelinnovasjoner av HPVM 2.0:

  • En Hetero-C++-språkfrontend er foreslått, som forenkler parallelliseringen av applikasjonskode i C/C++ for kompilering i HPVM. Hetero-C++ definerer utvidelser for parallellitet på datanivå og hierarkiske oppgaver som tilordnes HPVM-trådgrafer.
  • En FPGA-backend er lagt til for å gi støtte for kodekjøring på Intel FPGA-er. For å organisere kjøringen brukes Intel FPGA SDK for OpenCL.
  • DSE-rammeverket (Design Space Exploration) er lagt til, som inkluderer kompilatoroptimaliseringer og mekanismer for å identifisere flaskehalser for automatisk tuning av applikasjoner for en gitt maskinvareplattform. Rammeverket inneholder en ferdiglaget ytelsesmodell for FPGA-er fra Intel og gjør det mulig å koble til egne prosessorer for optimalisering for alle enheter som støttes av HPVM. Optimaliseringer kan brukes på både HPVM- og LLVM-dataflytgrafnivåene.
  • LLVM-komponenter er oppdatert til versjon 13.0.
  • Koden har blitt omorganisert for å gjøre det enklere å navigere i kodebasen, bibliotekene og verktøyene.
  • Testinfrastrukturen er forbedret, nye tester er lagt til for ulike HPVM-komponenter.

Kilde: opennet.ru

Legg til en kommentar