Byl uveden backend TPDE-LLVM, který pracuje 10-20krát rychleji než LLVM v režimu bez optimalizace

Výzkumníci z Technické univerzity Mnichov zveřejnili nástroj TPDE a na něm založený backend kompilátoru pro LLVM - TPDE-LLVM, který zajišťuje generaci strojového kódu pro architektury x86-64 a AArch64 na základě meziproduktu kódu LLVM-IR. Při testování se TPDE-LLVM ukázal být 10-20krát rychlejší než backend LLVM -O0 (generátor kódu bez optimalizací) při stejné úrovni výkonu výsledného strojového kódu a se zvýšením velikosti o 10-30%. Výstupy projektu byly zveřejněny pod licencí Apache 2.0.

TPDE-LLVM je původně zaměřen na zajištění kompilace s minimálními zpožděními a úrovní kvality odpovídající režimu sestavení bez optimalizací („-O0“). Projekt poskytuje nástroj pro samostatné spuštění tpde-llc, knihovnu pro integraci do aplikací (například pro realizaci funkcionality JIT-kompilátoru) a patche pro integraci s Clang a Flang.

Byl uveden backend TPDE-LLVM, který pracuje 10-20krát rychleji než LLVM v režimu bez optimalizace

Projekt může být použit jako základní kompilující komponenta pro JIT nebo pro vytváření neoptimalizovaných sestavení. TPDE-LLVM se zaměřuje pouze na rychlost kompilace a nesnaží se konkurovat optimalizačním backendům LLVM, které ve srovnání s TPDE-LLVM pracují podstatně pomaleji, ale umožňují generovat rychlejší a kompaktnější strojový kód (přibližně 2krát rychleji a 2krát menší velikosti).

TPDE-LLVM používá k generaci kódu tři fáze:

  • Úklid a příprava meziproduktového zastoupení LLVM;
  • Analýza informací o cyklech a použití proměnných;
  • Tvorba strojového kódu.

Byl uveden backend TPDE-LLVM, který pracuje 10-20krát rychleji než LLVM v režimu bez optimalizace

Je třeba poznamenat, že s účastí autorů TPDE byly do větví LLVM 19 a 20 již přidány optimalizace, které umožnily urychlit práci standardního backendu LLVM o 18% na platformě x86-64 a o 13% na platformě ARM64. Podle autorů TPDE bude v budoucnu možné urychlit backend LLVM ještě o 10-20% s malými náklady, ale další zvýšení výkonu si bude vyžadovat významné změny. Přitom, i při významném přepracování je nepravděpodobné, že by stávající backend LLVM bylo možné urychlit 10krát.

V současné fázi vývoje projektu TPDE je cílem poskytnout podporu pro mezipředstavování kódu LLVM, které bylo získáno frontendem Clang v optimalizačních režimech „-O0“ a „-O1“. Zpracování mezipředstavování vytvořeného v režimu „-O2“ zatím není zaručeno kvůli nedostatku podpory v TPDE pro vektorové operace. Částečně je podporován mezipředstavovaný kód z Flangu a kompilátoru Rust.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster