[ON] Представлен бэкенд TPDE-LLVM, работающий в 10-20 раз быстрее LLVM в режиме без оптимизации

Обсуждение новостей, соответствующих тематике форума

Модератор: Модераторы разделов

Аватара пользователя
rssbot
Бот
Сообщения: 6001
ОС: gnu/linux

[ON] Представлен бэкенд TPDE-LLVM, работающий в 10-20 раз быстрее LLVM в режиме без оптимизации

Сообщение rssbot »

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


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

Изображение

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


TPDE-LLVM использует для генерации кода три стадии:
  • Чистка и подготовка промежуточного представления LLVM;
  • Анализ информации о циклах и использовании переменных;
  • Формирование машинного кода.
Изображение



Отмечается, что при участии авторов TPDE в ветки LLVM 19 и 20 уже добавлены оптимизации, позволившие ускорить работу штатного бэкенда LLVM на 18% на платформе x86-64 и на 13% на платформе ARM64. По мнению авторов TPDE, в будущем малой кровью можно будет ускорить бэкенд LLVM ещё возможно на 10-20%, но дальнейшее повышение производительности потребует значительных изменений. При этом даже при значительной переработке маловероятно, что существующий бэкенд LLVM удастся ускорить в 10 раз.



На текущем этапе развития среди целей проекта TPDE заявлено обеспечение поддержки промежуточного представления кода LLVM, полученного фронтэндом Clang в режимах оптимизации "-O0" и "-O1". Обработка промежуточного представления, созданного в режиме "-O2", пока не гарантируется из-за отсутствия поддержки в TPDE векторных операций. Частично поддерживается промежуточный код от Flang и компилятора Rust.




Дополнение: По скорости компиляции и производительности результирующего кода, TPDE не имеет существенных отличий от ранее доступного бэкенда DirectEmit. Однако, TPDE кратно меньше по объёму собственного кода, в том числе архитектурно-зависимых частей. При этом существенная часть кода TPDE приходится на интерпретацию семантики входящего промежуточного представления кода, получаемого от LLVM.






Источник: https://www.opennet.ru/opennews/art.shtml?num=63368
(opennet.ru, основная лента)
Последний раз редактировалось rssbot 08.06.2025 20:15, всего редактировалось 3 раза.
Причина: Updated upstream
Спасибо сказали: