HPVM 2.0, compiler til CPU, GPU, FPGA og hardwareacceleratorer udgivet

LLVM-projektet annoncerede udgivelsen af ​​HPVM 2.0 (Heterogen Parallel Virtual Machine), en compiler, der sigter mod at forenkle programmering for heterogene systemer og levere kodegenereringsværktøjer til CPU'er, GPU'er, FPGA'er og domænespecifikke hardwareacceleratorer. Projektkoden distribueres under Apache 2.0-licensen.

Programmering for heterogene parallelle systemer kompliceres af tilstedeværelsen af ​​komponenter i det samme system, der bruger forskellige modeller til at opnå parallelitet (CPU-kerner, vektorinstruktioner, GPU osv.), forskellige instruktionssæt og forskellige hukommelseshierarkier. Hvert system bruger sin egen kombination af disse komponenter. Hovedidéen med HPVM-projektet er at bruge en samlet repræsentation af parallelt udførte programmer ved kompilering, som kan bruges til forskellige typer hardware, der understøtter parallel computing, herunder GPU'er, vektorinstruktioner, multi-core processorer, FPGA'er og forskellige specialiserede acceleratorchips.

I modsætning til andre systemer, forsøgte HPVM at kombinere tre muligheder for at organisere heterogen databehandling - et programmeringssprog og hardware-uafhængig mellemrepræsentation (IR), virtuel instruktionssætarkitektur (V-ISA) og runtime planlægning:

  • HPVM-mellemrepræsentationen udvider LLVM-mellemrepræsentationen af ​​instruktioner ved at bruge en hierarkisk dataflowgraf til at fange parallelitet på opgave-, data- og pipelineniveauer. HPVM-mellemrepræsentationen inkluderer også vektorinstruktioner og delt hukommelse. Hovedformålet med at bruge en mellemrepræsentation er effektiv kodegenerering og optimering til heterogene systemer.
  • Virtual Instruction Set Architecture (V-ISA) abstraherer hardwarefunktioner på lavt niveau og forener forskellige former for parallelisme og hukommelsesarkitekturer ved kun at bruge en grundlæggende parallelismemodel - dataflowgrafen. V-ISA giver dig mulighed for at opnå portabilitet mellem forskellige typer udstyr til parallel computing og gør det muligt ikke at miste ydeevne, når du bruger forskellige elementer i heterogene systemer. Virtual ISA kan også bruges til at levere universel eksekverbar programkode, der kan køre ved hjælp af CPU'er, GPU'er, FPGA'er og forskellige acceleratorer.
  • Fleksible planlægningspolitikker for beregningsprocessen anvendes under kørsel og implementeres både baseret på information om programmet (grafstruktur) og gennem kompilering af individuelle programknudepunkter til udførelse på enhver af de tilgængelige målcomputerenheder i systemet.

Kodegeneratorerne udviklet af projektet er i stand til at oversætte applikationsknudepunkter defineret ved hjælp af en virtuel ISA til udførelse ved hjælp af NVIDIA GPU'er (cuDNN og OpenCL), Intel AVX vektorinstruktioner, FPGA'er og multi-core x86 CPU'er. Det bemærkes, at HPVM-oversætternes ydeevne er sammenlignelig med håndskrevet OpenCL-kode til GPU'er og vektorcomputere.

Vigtigste innovationer af HPVM 2.0:

  • En Hetero-C++ sprogfrontend er blevet foreslået, som forenkler paralleliseringen af ​​applikationskode i C/C++ til kompilering i HPVM. Hetero-C++ definerer udvidelser til parallelitet på dataniveau og hierarkiske opgaver, der knytter sig til HPVM-trådgrafer.
  • En FPGA-backend er blevet tilføjet for at understøtte kodekørsel på Intel FPGA'er. Til at organisere eksekveringen bruges Intel FPGA SDK til OpenCL.
  • DSE (Design Space Exploration) rammeværket er blevet tilføjet, som omfatter compiler-optimeringer og mekanismer til at identificere flaskehalse til automatisk tuning af applikationer til en given hardwareplatform. Frameworket indeholder en færdiglavet ydeevnemodel for FPGA'er fra Intel og gør det muligt at tilslutte dine egne processorer til optimering for alle enheder understøttet af HPVM. Optimeringer kan anvendes på både HPVM- og LLVM-dataflowgrafniveauer.
  • LLVM-komponenter er blevet opdateret til version 13.0.
  • Koden er blevet omorganiseret for at gøre det nemmere at navigere i kodebasen, bibliotekerne og hjælpeprogrammerne.
  • Testinfrastrukturen er blevet forbedret, nye test er blevet tilføjet for forskellige HPVM-komponenter.

Kilde: opennet.ru

Tilføj en kommentar