Das LLVM-Projekt führte HPVM 1.0 ein, einen Compiler für CPUs, GPUs, FPGAs und Beschleuniger

Die Entwickler des LLVM-Projekts haben die Veröffentlichung des Compilers HPVM 1.0 (Heterogeneous Parallel Virtual Machine) veröffentlicht, der darauf abzielt, die Programmierung für heterogene Systeme zu vereinfachen und Tools zum Generieren von Code für CPUs, GPUs, FPGAs und domänenspezifische Hardwarebeschleuniger bereitzustellen (Unterstützung für FGPAs und Beschleuniger waren in der Version 1.0 nicht enthalten. Der Projektcode wird unter der Apache 2.0-Lizenz verteilt.

Die Hauptidee von HPVM besteht darin, beim Kompilieren eine einheitliche Darstellung parallel ausführbarer Programme bereitzustellen, die zur Ausführung mit verschiedenen Arten von Hardware verwendet werden kann, die paralleles Rechnen unterstützen, einschließlich GPUs, Vektoranweisungen, Mehrkernprozessoren, FPGAs usw verschiedene spezialisierte Beschleunigerchips. Im Gegensatz zu anderen Systemen versuchte HPVM, drei Funktionen zur Organisation heterogener Datenverarbeitung zu kombinieren: sprach- und hardwareunabhängige Zwischendarstellung, virtuelle Befehlssatzarchitektur (ISA) und Laufzeitplanung.

Die zielunabhängige Zwischendarstellung (IR) von HPVM baut auf der Zwischenanweisungsdarstellung von LLVM 9.0 auf und erweitert sie um ein hierarchisches Datenflussdiagramm, 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.

Die virtuelle Befehlssatzarchitektur (ISA) ermöglicht die Portabilität zwischen verschiedenen Arten paralleler Computerhardware und sorgt dafür, dass bei der Verwendung verschiedener Elemente heterogener Systeme keine Leistungseinbußen eintreten. Virtual ISA kann auch zur Bereitstellung universell ausführbaren Programmcodes verwendet werden, der auf CPUs, GPUs, FPGAs und verschiedenen Beschleunigern ausgeführt werden kann.

Im aktuellen Entwicklungsstadium bietet HPVM Codegeneratoren an, die mithilfe einer virtuellen ISA definierte Anwendungsknoten für die Ausführung mithilfe von NVIDIA-GPUs (cuDNN und OpenCL), Intel AVX-Vektoranweisungen und Multi-Core-x86-CPUs übersetzen können. Zur Laufzeit wendet HPVM flexible Richtlinien zur Rechenprozessplanung an, die sowohl auf der Grundlage von Programminformationen (Graphstruktur) als auch durch Kompilieren einzelner Programmknoten zur Ausführung auf jedem der im System verfügbaren Zielcomputergeräte implementiert werden.

Es wird darauf hingewiesen, dass durch den Einsatz von HPVM eine deutliche Steigerung der Produktivität erzielt werden kann. Die Leistung von HPVM-Übersetzern ist vergleichbar mit handgeschriebenem OpenCL-Code für GPUs und Vektorcomputergeräte.

Im Vergleich zur ersten Vorschauversion bietet HPVM 1.0 Unterstützung für lineare Algebra-Tensoroperationen, Frontends für Pytorch und Keras, Faltungsoperatornäherungen und ein Approximationsoptimierungs-Framework, das automatisch optimale Näherungen für bestimmte Tensoroperationen auswählt und die Konfiguration auswählt, die optimale Leistung bietet.

Source: opennet.ru

Kommentar hinzufügen