Het LLVM-project introduceerde HPVM 1.0, een compiler voor CPU, GPU, FPGA en versnellers

De ontwikkelaars van het LLVM-project hebben de release gepubliceerd van de HPVM 1.0-compiler (Heterogeneous Parallel Virtual Machine), gericht op het vereenvoudigen van het programmeren voor heterogene systemen en het bieden van tools voor het genereren van code voor CPU's, GPU's, FPGA's en domeinspecifieke hardwareversnellers (ondersteuning voor FGPA's en versnellers waren niet opgenomen in release 1.0). De projectcode wordt gedistribueerd onder de Apache 2.0-licentie.

Het hoofdidee van HPVM is het bieden van een uniforme weergave van parallel uitvoerbare programma's bij het compileren, die kunnen worden gebruikt voor uitvoering met behulp van verschillende soorten hardware die parallelle computing ondersteunen, waaronder GPU's, vectorinstructies, multi-coreprocessors, FPGA's en verschillende gespecialiseerde acceleratorchips. In tegenstelling tot andere systemen probeerde HPVM drie mogelijkheden te combineren voor het organiseren van heterogeen computergebruik: taal- en hardware-onafhankelijke tussenweergave, virtuele instructiesetarchitectuur (ISA) en runtime-planning.

De doelonafhankelijke tussenrepresentatie (IR) van HPVM bouwt voort op de tussenliggende instructierepresentatie van LLVM 9.0 en breidt deze uit met een hiërarchische gegevensstroomgrafiek om parallellisme op taak-, gegevens- en pijplijnniveau vast te leggen. De tussenliggende HPVM-representatie omvat ook vectorinstructies en gedeeld geheugen. Het belangrijkste doel van het gebruik van een tussenrepresentatie is het efficiënt genereren en optimaliseren van code voor heterogene systemen.

De virtuele instructiesetarchitectuur (ISA) maakt portabiliteit mogelijk tussen verschillende soorten parallelle computerhardware en maakt het mogelijk om de prestaties niet te verliezen bij het gebruik van verschillende elementen van heterogene systemen. Virtuele ISA kan ook worden gebruikt om universele uitvoerbare programmacode te leveren die kan worden uitgevoerd met behulp van CPU's, GPU's, FPGA's en verschillende versnellers.

In de huidige ontwikkelingsfase biedt HPVM codegeneratoren die in staat zijn applicatieknooppunten te vertalen die zijn gedefinieerd met behulp van een virtuele ISA voor uitvoering met behulp van NVIDIA GPU's (cuDNN en OpenCL), Intel AVX vectorinstructies en multi-core x86 CPU's. Tijdens runtime past HPVM flexibel computationeel procesplanningsbeleid toe, geïmplementeerd zowel op basis van programma-informatie (grafiekstructuur) als door het compileren van individuele programmaknooppunten voor uitvoering op elk van de doelcomputerapparaten die in het systeem beschikbaar zijn.

Opgemerkt wordt dat het gebruik van HPVM een aanzienlijke productiviteitsverhoging kan bewerkstelligen. De prestaties van HPVM-vertalers zijn vergelijkbaar met handgeschreven OpenCL-code voor GPU's en vectorcomputerapparaten.

Vergeleken met de eerste preview-release bevat HPVM 1.0 ondersteuning voor lineaire algebra-tensorbewerkingen, frontends voor Pytorch en Keras, benaderingen van convolutie-operatoren en een raamwerk voor het afstemmen van benaderingen dat automatisch optimale benaderingen selecteert voor specifieke tensorbewerkingen en de configuratie selecteert die optimale prestaties levert.

Bron: opennet.ru

Voeg een reactie