HPVM 2.0, Compiler für CPU, GPU, FPGA und Hardwarebeschleuniger veröffentlicht

Das LLVM-Projekt kündigte die Veröffentlichung von HPVM 2.0 (Heterogeneous Parallel Virtual Machine) an, einem Compiler, der die Programmierung für heterogene Systeme vereinfachen und Codegenerierungstools für CPUs, GPUs, FPGAs und domänenspezifische Hardwarebeschleuniger bereitstellen soll. Der Projektcode wird unter der Apache 2.0-Lizenz verteilt.

Die Programmierung für heterogene parallele Systeme wird durch das Vorhandensein von Komponenten im selben System erschwert, die unterschiedliche Modelle zur Erzielung von Parallelität (CPU-Kerne, Vektoranweisungen, GPU usw.), unterschiedliche Befehlssätze und unterschiedliche Speicherhierarchien verwenden. Jedes System verwendet eine eigene Kombination dieser Komponenten. Die Hauptidee des HPVM-Projekts besteht darin, beim Kompilieren eine einheitliche Darstellung parallel ausgeführter Programme zu verwenden, die für verschiedene Arten von Hardware verwendet werden kann, die paralleles Rechnen unterstützt, einschließlich GPUs, Vektoranweisungen, Mehrkernprozessoren, FPGAs usw verschiedene spezialisierte Beschleunigerchips.

Im Gegensatz zu anderen Systemen versuchte HPVM, drei Fähigkeiten zur Organisation heterogener Datenverarbeitung zu kombinieren – eine Programmiersprache und eine hardwareunabhängige Zwischendarstellung (IR), eine virtuelle Befehlssatzarchitektur (V-ISA) und Laufzeitplanung:

  • Die HPVM-Zwischendarstellung erweitert die LLVM-Zwischendarstellung von Anweisungen durch die Verwendung eines hierarchischen Datenflussdiagramms, um Parallelität auf Aufgaben-, Daten- und Pipelineebene zu erfassen. Die HPVM-Zwischendarstellung umfasst auch Vektoranweisungen und gemeinsam genutzten Speicher. Der Hauptzweck der Verwendung einer Zwischendarstellung ist die effiziente Codegenerierung und -optimierung für heterogene Systeme.
  • Virtual Instruction Set Architecture (V-ISA) abstrahiert Hardwarefunktionen auf niedriger Ebene und vereinheitlicht verschiedene Formen der Parallelität und Speicherarchitekturen unter Verwendung lediglich eines grundlegenden Parallelitätsmodells – des Datenflussdiagramms. V-ISA ermöglicht die Portabilität zwischen verschiedenen Gerätetypen für paralleles Rechnen und sorgt dafür, dass bei der Verwendung verschiedener Elemente heterogener Systeme keine Leistungseinbußen auftreten. Virtual ISA kann auch zur Bereitstellung universell ausführbaren Programmcodes verwendet werden, der auf CPUs, GPUs, FPGAs und verschiedenen Beschleunigern ausgeführt werden kann.
  • Flexible Planungsrichtlinien für den Rechenprozess werden zur Laufzeit angewendet und sowohl auf der Grundlage von Informationen über das Programm (Graphstruktur) als auch durch die Zusammenstellung einzelner Programmknoten zur Ausführung auf jedem der im System verfügbaren Zielcomputergeräte implementiert.

Die im Rahmen des Projekts entwickelten Codegeneratoren sind in der Lage, mithilfe einer virtuellen ISA definierte Anwendungsknoten für die Ausführung mit NVIDIA-GPUs (cuDNN und OpenCL), Intel AVX-Vektoranweisungen, FPGAs und Multi-Core-x86-CPUs zu übersetzen. Es wird darauf hingewiesen, dass die Leistung der HPVM-Übersetzer mit handgeschriebenem OpenCL-Code für GPUs und Vektorcomputergeräte vergleichbar ist.

Wichtigste Neuerungen von HPVM 2.0:

  • Es wurde ein Hetero-C++-Sprach-Frontend vorgeschlagen, das die Parallelisierung von Anwendungscode in C/C++ für die Kompilierung in HPVM vereinfacht. Hetero-C++ definiert Erweiterungen für Parallelität auf Datenebene und hierarchische Aufgaben, die HPVM-Thread-Diagrammen zugeordnet sind.
  • Ein FPGA-Backend wurde hinzugefügt, um die Codeausführung auf Intel FPGAs zu unterstützen. Um die Ausführung zu organisieren, wird das Intel FPGA SDK für OpenCL verwendet.
  • Das DSE-Framework (Design Space Exploration) wurde hinzugefügt, das Compiler-Optimierungen und Mechanismen zur Identifizierung von Engpässen für die automatische Optimierung von Anwendungen für eine bestimmte Hardwareplattform umfasst. Das Framework enthält ein vorgefertigtes Leistungsmodell für FPGAs von Intel und ermöglicht die Anbindung eigener Prozessoren zur Optimierung für alle von HPVM unterstützten Geräte. Optimierungen können sowohl auf der Ebene des HPVM- als auch des LLVM-Datenflussdiagramms angewendet werden.
  • LLVM-Komponenten wurden auf Version 13.0 aktualisiert.
  • Der Code wurde neu organisiert, um die Navigation in der Codebasis, den Bibliotheken und den Dienstprogrammen zu erleichtern.
  • Die Testinfrastruktur wurde verbessert, neue Tests wurden für verschiedene HPVM-Komponenten hinzugefügt.

Source: opennet.ru

Kommentar hinzufügen