Introduction du backend TPDE-LLVM, fonctionnant 10 à 20 fois plus rapidement que LLVM en mode non optimisé

Des chercheurs de l'Université technique de Munich ont publié la boîte à outils TPDE et un compilateur backend pour LLVM basé sur celle-ci : TPDE-LLVM. Ce compilateur permet la génération de code machine pour les architectures x86-64 et AArch64, basée sur la représentation de code intermédiaire LLVM-IR. Lors des tests, TPDE-LLVM s'est avéré 0 à 10 fois plus rapide que le backend LLVM-O20 (un générateur de code sans optimisations), avec des performances identiques pour le code machine généré et une augmentation de taille de 10 à 30 %. Les développements du projet sont publiés sous licence Apache 2.0.

TPDE-LLVM vise initialement à fournir une compilation avec des délais minimaux et un niveau de qualité correspondant au mode de compilation sans optimisations (« -O0 »). Le projet fournit un utilitaire permettant d'exécuter tpde-llc séparément, une bibliothèque d'intégration aux applications (par exemple, pour implémenter la fonctionnalité de compilation JIT) et des correctifs pour l'intégration avec Clang et Flang.

Introduction du backend TPDE-LLVM, fonctionnant 10 à 20 fois plus rapidement que LLVM en mode non optimisé

Le projet peut être utilisé comme composant de compilation de base pour le JIT ou pour créer des builds non optimisées. TPDE-LLVM se concentre uniquement sur la vitesse de compilation et ne cherche pas à concurrencer les backends d'optimisation LLVM, nettement plus lents que TPDE-LLVM, mais permet de générer un code machine plus rapide et plus compact (environ deux fois plus rapide et deux fois plus petit).

TPDE-LLVM utilise trois étapes pour générer du code :

  • Nettoyage et préparation de la représentation intermédiaire LLVM ;
  • Analyse des informations sur les cycles et l'utilisation des variables ;
  • Formation du code machine.

Introduction du backend TPDE-LLVM, fonctionnant 10 à 20 fois plus rapidement que LLVM en mode non optimisé

Il est à noter qu'avec la participation des auteurs de TPDE, des optimisations ont déjà été ajoutées aux branches LLVM 19 et 20, permettant d'accélérer le backend LLVM standard de 18 % sur la plateforme x86-64 et de 13 % sur la plateforme ARM64. Selon les auteurs de TPDE, il sera possible à l'avenir, avec peu d'efforts, d'accélérer le backend LLVM de 10 à 20 % supplémentaires, mais une amélioration supplémentaire des performances nécessitera des modifications importantes. Par ailleurs, même avec une refonte importante, il est peu probable que le backend LLVM existant soit multiplié par 10.

Au stade actuel de développement, le projet TPDE vise notamment à prendre en charge la représentation intermédiaire LLVM du code produit par l'interface Clang dans les modes d'optimisation « -O0 » et « -O1 ». Le traitement de la représentation intermédiaire produite en mode « -O2 » n'est pas encore garanti en raison de l'absence de prise en charge des opérations vectorielles dans TPDE. Le code intermédiaire de Flang et du compilateur Rust est partiellement pris en charge.

Source: opennet.ru

Achetez un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Achetez un hébergement web fiable avec protection DDoS, serveurs VPS et VDS | ProHoster