LLVM-projektet introducerede HPVM 1.0, en compiler til CPU, GPU, FPGA og acceleratorer

Udviklerne af LLVM-projektet har udgivet udgivelsen af ​​HPVM 1.0 (Heterogen Parallel Virtual Machine) compileren, der har til formål at forenkle programmering for heterogene systemer og levere værktøjer til at generere kode til CPU'er, GPU'er, FPGA'er og domænespecifikke hardwareacceleratorer (understøttelse af FGPA'er og acceleratorer var ikke inkluderet i 1.0-udgivelsen). Projektkoden distribueres under Apache 2.0-licensen.

Hovedideen med HPVM er at give en samlet repræsentation af parallel-eksekverbare programmer ved kompilering, som kan bruges til udførelse ved hjælp af 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: sprog- og hardwareuafhængig mellemrepræsentation, virtuel instruktionssætarkitektur (ISA) og køretidsplanlægning.

HPVMs mål-uafhængige mellemrepræsentation (IR) bygger på LLVM 9.0 mellemliggende instruktionsrepræsentation og udvider den med en hierarkisk dataflowgraf for at fange opgave-, data- og pipeline-niveau parallelitet. 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.

Den virtuelle instruktionssæt-arkitektur (ISA) giver mulighed for portabilitet mellem forskellige typer parallel computing-hardware og gør det muligt ikke at miste ydeevne ved brug af 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.

På det nuværende udviklingstrin tilbyder HPVM kodegeneratorer, der er i stand til at oversætte applikationsknuder defineret ved hjælp af en virtuel ISA til udførelse ved hjælp af NVIDIA GPU'er (cuDNN og OpenCL), Intel AVX vektorinstruktioner og multi-core x86 CPU'er. Under kørsel anvender HPVM fleksible politikker til planlægning af beregningsprocesser, implementeret både baseret på programinformation (grafstruktur) og gennem kompilering af individuelle programknudepunkter til udførelse på enhver af de tilgængelige målcomputerenheder i systemet.

Det bemærkes, at brugen af ​​HPVM kan opnå en betydelig stigning i produktiviteten. Ydeevnen for HPVM-oversættere kan sammenlignes med håndskrevet OpenCL-kode til GPU'er og vektorcomputere.

Sammenlignet med den første preview-udgivelse inkluderer HPVM 1.0 understøttelse af lineære algebratensoroperationer, frontends til Pytorch og Keras, foldningsoperatorapproksimationer og en tilnærmelsesindstillingsramme, der automatisk vælger optimale tilnærmelser til specifikke tensoroperationer og vælger den konfiguration, der giver optimal ydeevne.

Kilde: opennet.ru

Tilføj en kommentar