Der TPDE-LLVM Backend wurde vorgestellt und arbeitet 10 bis 20 Mal schneller als LLVM im Nicht-Optimierungsmodus.

Forscher der Technischen Universität München haben das TPDE-Toolkit sowie den darauf basierenden Compiler-Backend für LLVM – TPDE-LLVM – veröffentlicht. Dieser ermöglicht die Generierung von Maschinen-Code für die x86-64 und AArch64 Architekturen basierend auf der LLVM-IR Intermediate Representation. Bei Tests erwies sich TPDE-LLVM als 10 bis 20 Mal schneller als der LLVM Backend -O0 (Code-Generator ohne Optimierungen) bei gleichem Leistungsniveau des resultierenden Maschinen-Codes, wobei die Größe um 10 bis 30 % zunahm. Die Ergebnisse des Projekts wurden unter der Apache 2.0 Lizenz veröffentlicht.

TPDE-LLVM zielt ursprünglich darauf ab, Kompilierungen mit minimalen Verzögerungen zu gewährleisten, wobei die Qualität dem Modus ohne Optimierungen ('-O0') entspricht. Das Projekt stellt ein Tool für die isolierte Ausführung von tpde-llc, eine Bibliothek zur Integration in Anwendungen (z. B. zur Implementierung von JIT-Compiler-Funktionalitäten) und Patches für die Integration mit Clang und Flang bereit.

Der TPDE-LLVM Backend wurde vorgestellt und arbeitet 10 bis 20 Mal schneller als LLVM im Nicht-Optimierungsmodus.

Das Projekt kann als grundlegende Komponente für JIT oder zur Erstellung von nicht optimierten Builds verwendet werden. TPDE-LLVM konzentriert sich ausschließlich auf die Kompilierungsgeschwindigkeit und versucht nicht, mit den optimierenden Backends von LLVM zu konkurrieren, die im Vergleich zu TPDE-LLVM wesentlich langsamer arbeiten, aber es ermöglichen, schnelleren und kompakteren Maschinencode zu generieren (ungefähr doppelt so schnell und halb so groß).

TPDE-LLVM verwendet drei Phasen zur Codegenerierung:

  • Reinigung und Vorbereitung der LLVM-Zwischenrepräsentation;
  • Analyse von Zyklusinformationen und Variablenverwendung;
  • Generierung von Maschinencode.

Der TPDE-LLVM Backend wurde vorgestellt und arbeitet 10 bis 20 Mal schneller als LLVM im Nicht-Optimierungsmodus.

Es wird angemerkt, dass mit der Teilnahme der Autoren von TPDE bereits Optimierungen in die LLVM-Versionen 19 und 20 eingeführt wurden, die die Leistung des Standard-LLVM-Backends auf der x86-64-Plattform um 18 % und auf der ARM64-Plattform um 13 % beschleunigen konnten. Nach Ansicht der Autoren von TPDE könnte man in Zukunft mit geringem Aufwand das LLVM-Backend möglicherweise um weitere 10–20 % beschleunigen, doch eine signifikante Leistungssteigerung würde erhebliche Änderungen erfordern. Selbst bei umfassenden Überarbeitungen ist es jedoch unwahrscheinlich, dass das bestehende LLVM-Backend um das Zehnfache beschleunigt werden kann.

In der aktuellen Entwicklungsphase hat das TPDE-Projekt das Ziel, die Unterstützung für die Zwischenrepräsentation des LLVM-Codes, die vom Clang-Frontend in den Optimierungsmodi „-O0“ und „-O1“ generiert wird, zu gewährleisten. Die Verarbeitung der Zwischenrepräsentation, die im Modus „-O2“ erstellt wird, wird derzeit nicht unterstützt, da TPDE keine Unterstützung für vektorielle Operationen bietet. Teilweise wird die Zwischenrepräsentation von Flang und dem Rust-Compiler unterstützt.

Quelle: opennet.ru

Erwerben 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