HPVM 2.0, Compiler fir CPU, GPU, FPGA an Hardware Beschleuniger publizéiert

De LLVM-Projet huet d'Verëffentlechung vum HPVM 2.0 (Heterogene Parallel Virtual Machine) Compiler agefouert, fir d'Programméierung fir heterogen Systemer ze vereinfachen an Tools ze liwweren fir Code fir CPUs, GPUs, FPGAs, an Domain-spezifesch Hardware Beschleuniger ze generéieren. De Projet Code gëtt ënner der Apache 2.0 Lizenz verdeelt.

Programméiere fir heterogen parallel Systemer ass komplizéiert wéinst der Präsenz an engem System vu Komponenten déi verschidde Modeller benotze fir Parallelismus z'erreechen (CPU Cores, Vektorinstruktiounen, GPUs, etc.), verschidde Sets vun Instruktiounen a verschidde Gedächtnishierarchien. All System benotzt seng eege Kombinatioun vun dëse Komponente. D'Haaptidee vum HPVM-Projet ass ze benotzen fir eng vereenegt Duerstellung vu parallele Programmer ze kompiléieren, déi fir verschidden Zorte vu Hardware kënne benotzt ginn, déi parallel Computing ënnerstëtzt, dorënner GPUs, Vektorinstruktiounen, Multi-Core Prozessoren, FPGAs, a verschidde spezialiséiert Beschleuniger Chips.

Am Géigesaz zu anere Systemer huet HPVM probéiert dräi Méiglechkeeten ze kombinéieren fir heterogen Informatik ze organiséieren - eng Zwëschenvertriedung (IR), eng virtuell Instruktiounsset Architektur (V-ISA), a Runtime Scheduling, onofhängeg vun der Programméierungssprooch an Ausrüstung:

  • Zwëschen Representatioun HPVM erweidert d'Zwëschenvertriedung vun LLVM Instruktiounen andeems Dir eng hierarchesch Dateflussgrafik benotzt fir Parallelismus um Niveau vun Aufgaben, Donnéeën a Berechnungspipelines z'erreechen. D'HPVM Zwëschenvertriedung enthält och Vektorinstruktiounen a gemeinsame Gedächtnis. Den Haaptzweck fir eng Zwëschenvertriedung ze benotzen ass effizient Codegeneratioun an Optimiséierung fir heterogen Systemer.
  • Virtuell Instruction Set Architecture (V-ISA) abstrakt niddereg-Niveau Hardware a vereenegt verschidde Forme vu Parallelismus a Gedächtnisarchitekturen mat nëmmen den ënnerierdesche Konkurrenzmodell, den Data Flow Graph. V-ISA erlaabt portability tëscht verschidden Zorte vu Hardware fir parallel Rechenzäit ze erreechen a mécht et méiglech Leeschtung net ze verléieren wann verschidden Elementer vun heterogen Systemer benotzt. Virtuell ISA kann och benotzt ginn fir generesche Programm ausführbare Code ze liwweren deen op CPUs, GPUs, FPGAs a verschidde Beschleuniger lafen kann.
  • Flexibel Rechenprozessplanungspolitike ginn op der Runtime applizéiert a gi souwuel op Basis vun Informatioun iwwer de Programm (Grafikstruktur) ëmgesat, wéi och duerch d'Kompilatioun vun eenzelne Programmnoden fir Ausféierung op engem vun den Zil-Rechengeräter, déi am System verfügbar sinn.

D'Code Generatoren, déi vum Projet entwéckelt goufen, si fäeg fir Applikatiounsknoten ze iwwersetzen, definéiert mat virtuellen ISA fir Ausféierung mat NVIDIA GPUs (cuDNN an OpenCL), Intel AVX Vektorinstruktiounen, FPGAs, a Multi-Core x86 CPUs. Et gëtt bemierkt datt d'Performance vun de Resultater vun den HPVM Iwwersetzer vergläichbar ass mat manuell schrëftlechen OpenCL Code fir GPUs a Vector Computing Geräter.

Haaptinnovatiounen vum HPVM 2.0:

  • Den Hetero-C++ Sproochefrontend gëtt proposéiert, wat d'Parallaliséierung vum C/C++ Applikatiounscode fir d'Kompilatioun an HPVM vereinfacht. Hetero-C ++ definéiert Extensiounen fir Dateniveau Parallelismus an hierarchesch Aufgaben déi op HPVM Fuedemgrafiken kartéiert ginn.
  • En FPGA Backend gouf bäigefüügt fir d'Code-Ausféierung op enger Intel FPGA z'ënnerstëtzen. Fir d'Ausféierung ze organiséieren, gëtt den Intel FPGA SDK fir OpenCL benotzt.
  • Den DSE (Design Space Exploration) Kader gouf bäigefüügt, deen Compiler Optimisatiounen a Flaschenhals Detektiounsmechanismen enthält fir automatesch Uwendungen fir eng bestëmmten Hardwareplattform ze stëmmen. De Kader enthält e fäerdege Performance Modell fir FPGA vun Intel an erlaabt Iech Är eege Prozessoren fir Optimisatioun fir all Apparat ënnerstëtzt vun HPVM ze verbannen. Optimisatiounen kënne souwuel um HPVM Dataflow Grafikniveau wéi och um LLVM Niveau applizéiert ginn.
  • LLVM Komponenten aktualiséiert op Versioun 13.0.
  • De Code gouf nei organiséiert fir et méi einfach ze maachen duerch d'Codebase, Bibliothéiken an Utilities ze navigéieren.
  • D'Infrastruktur fir Tester gouf verbessert, nei Tester goufen fir verschidde HPVM Komponenten bäigefüügt.

Source: opennet.ru

Setzt e Commentaire