Das LLVM-Projekt hat HPVM 1.0 vorgestellt, einen Compiler für CPU, GPU, FPGA und Beschleuniger.

Die Entwickler des LLVM-Projekts haben die Veröffentlichung des Compilers HPVM 1.0 (Heterogeneous Parallel Virtual Machine) bekannt gegeben. Dieser zielt darauf ab, die Programmierung für heterogene Systeme zu vereinfachen und bietet Werkzeuge zur Code-Generierung für CPU, GPU, FPGA und domain-spezifische Hardware-Beschleuniger (die Unterstützung für FPGA und Beschleuniger ist nicht in der Version 1.0 enthalten). Der Code des Projekts wird unter der Lizenz Apache 2.0 veröffentlicht.

Das Hauptkonzept von HPVM besteht darin, bei der Kompilierung eine einheitliche Darstellung paralleler Programme zu nutzen, die für die Ausführung auf verschiedenen Typen von Hardware geeignet ist, die das Parallelisieren von Berechnungen unterstützen, einschließlich GPUs, Vektoroperationen, Mehrkernprozessoren, FPGAs und verschiedenen spezialisierten Beschleuniger-Chips. Im Gegensatz zu anderen Systemen versucht HPVM, drei Möglichkeiten zur Organisation heterogener Berechnungen zu kombinieren: eine hardware- und programmiersprachenunabhängige Zwischenrepräsentation, eine virtuelle Architektur des Befehlssatzes (ISA) und die Laufzeitplanung (runtime scheduling).

Die in HPVM verwendete, zielunabhängige Intermediate Representation (IR) basiert auf der LLVM 9.0 und erweitert sie durch ein hierarchisches Datenflussdiagramm, das Parallelität auf der Ebene von Aufgaben, Daten und Rechenpipelines ermöglicht. Die HPVM-Intermediate Representation umfasst auch Vektoranweisungen und gemeinsamen Speicher. Das Hauptziel der Verwendung dieser Intermediate Representation ist die effiziente Codegenerierung und Optimierung für heterogene Systeme.

Die virtuelle Architektur des Befehlssatzes (ISA) ermöglicht die Portabilität zwischen verschiedenen Hardwaretypen für parallele Berechnungen und sorgt dafür, dass beim Einsatz unterschiedlicher Komponenten heterogener Systeme keine Leistungseinbußen auftreten. Die virtuelle ISA kann auch genutzt werden, um universell ausführbaren Programmcode bereitzustellen, der CPU, GPU, FPGA und verschiedene Beschleuniger einbeziehen kann.

In der aktuellen Entwicklungsphase bietet HPVM Code-Generatoren an, die in der Lage sind, Anwendungs-Knoten, definiert durch die virtuelle ISA, für die Ausführung mit NVIDIA-GPUs (cuDNN und OpenCL), Intel AVX-Vektorbefehlen und Mehrkern-x86-CPUs zu übersetzen. Während der Ausführung verwendet HPVM flexible Planungspolitiken für den Rechenprozess, die sowohl auf Programminformationen (Graph-Strukturen) als auch auf die Kompilierung einzelner Programmknoten zur Ausführung auf beliebigen verfügbaren Zielrechenressourcen im System basieren.

Es wird festgestellt, dass die Anwendung von HPVM zu erheblichen Leistungssteigerungen führt. Die Leistung der Ergebnisse der HPVM-Übersetzer ist vergleichbar mit handgeschriebenem OpenCL-Code für GPUs und Vektorverarbeitungseinheiten.

Im Vergleich zur ersten Vorabversion umfasst die HPVM 1.0 Unterstützung für tensorbasierte Operationen der linearen Algebra, Frontends für Pytorch und Keras, die Approximation von Faltungsoperatoren sowie ein Framework zur Anpassung von Approximationen, das automatisch optimale Approximationen für bestimmte tensorbasierte Operationen auswählt und eine Konfiguration wählt, die die beste Leistung gewährleistet.

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster