Представен е бекенд TPDE-LLVM, работещ 10-20 пъти по-бързо от LLVM в режим без оптимизация

Изследователи от Техническия университет в Мюнхен публикуваха инструментарий TPDE и базирания на него бекенд компилатор за LLVM — TPDE-LLVM, който осигурява генериране на машинен код за архитектури x86-64 и AArch64, основавайки се на междинното представяне на кода LLVM-IR. При тестване TPDE-LLVM се оказа 10-20 пъти по-бърз от бекенда LLVM -O0 (генератор на код без оптимизации) при същото ниво на производителност на резултантния машинен код и увеличение на размера с 10-30%. Направленията на проекта са публикувани под лицензия Apache 2.0.

TPDE-LLVM първоначално е насочен към осигуряване на компилации с минимални забавяния и качество, съответстващо на режим на изграждане без оптимизации („-O0“). Проектът предлага инструмента за самостоятелно стартиране tpde-llc, библиотека за интеграция в приложения (например, за реализиране на функционалността на JIT-компилатора) и пачове за интеграция с Clang и Flang.

Представен е бекенд TPDE-LLVM, работещ 10-20 пъти по-бързо от LLVM в режим без оптимизация

Проектът може да бъде използван като основен компилиращ компонент за JIT или за създаване на неоптимизирани сборки. TPDE-LLVM е фокусиран само върху скоростта на компилация и не се опитва да конкурира оптимизиращите бекенди на LLVM, които в сравнение с TPDE-LLVM работят значително по-бавно, но позволяват генерация на по-бърз и компактен машинен код (приблизително два пъти по-бърз и два пъти по-малък по размер).

TPDE-LLVM използва три етапа за генериране на код:

  • Почистване и подготовка на междинното представяне на LLVM;
  • Анализ на информацията за цикли и използване на променливи;
  • Създаване на машинен код.

Представен е бекенд TPDE-LLVM, работещ 10-20 пъти по-бързо от LLVM в режим без оптимизация

Отбелязва се, че с участието на авторите на TPDE в клоновете на LLVM 19 и 20 вече са добавени оптимизации, които ускориха работата на стандартния бекенд на LLVM с 18% на платформата x86-64 и с 13% на платформата ARM64. Според авторите на TPDE, в бъдеще с малки усилия може да се ускори бекендът на LLVM с още 10-20%, но по-нататъшното повишаване на производителността ще изисква значителни промени. Въпреки това, дори при значителна преработка, е малко вероятно, че съществуващият бекенд на LLVM ще може да бъде ускорен десетократно.

В текущия етап на развитие проектът TPDE си поставя за цел да осигури поддръжка на междинно представяне на кода LLVM, получено от фронтен Clang в режимите на оптимизация «-O0» и «-O1». Обработката на междинното представяне, създадено в режим «-O2», все още не е гарантирана заради липсата на поддръжка на векторни операции в TPDE. Частично се поддържа междинния код от Flang и компилатора Rust.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster