Predstavený backend TPDE-LLVM, ktorý beží 10-20x rýchlejšie ako LLVM v neoptimalizovanom režime

Výskumníci z Technickej univerzity v Mníchove publikovali sadu nástrojov TPDE a na nej založený kompilátorový backend pre LLVM — TPDE-LLVM, ktorý zabezpečuje generovanie strojového kódu pre architektúry x86-64 a AArch64 na základe reprezentácie medzikódu LLVM-IR. Pri testovaní sa ukázalo, že TPDE-LLVM je 0 až 10-krát rýchlejší ako backend LLVM-O20 (generátor kódu bez optimalizácií) s rovnakou úrovňou výkonu výsledného strojového kódu a zväčšením veľkosti o 10 až 30 %. Vývoj projektu je publikovaný pod licenciou Apache 2.0.

TPDE-LLVM je pôvodne zameraný na poskytovanie kompilácie s minimálnym oneskorením a úrovňou kvality zodpovedajúcou režimu zostavovania bez optimalizácií („-O0“). Projekt poskytuje nástroj na samostatné spúšťanie tpde-llc, knižnicu na integráciu do aplikácií (napríklad na implementáciu funkcionality JIT kompilátora) a záplaty na integráciu s Clang a Flang.

Predstavený backend TPDE-LLVM, ktorý beží 10-20x rýchlejšie ako LLVM v neoptimalizovanom režime

Projekt je možné použiť ako základnú komponentu kompilátora pre JIT alebo na vytváranie neoptimalizovaných zostavení. TPDE-LLVM sa zameriava iba na rýchlosť kompilácie a nesnaží sa konkurovať optimalizačným backendom LLVM, ktoré sú výrazne pomalšie ako TPDE-LLVM, ale umožňujú generovanie rýchlejšieho a kompaktnejšieho strojového kódu (približne 2x rýchlejší a 2x menší).

TPDE-LLVM používa na generovanie kódu tri fázy:

  • Čistenie a príprava medzilehlej reprezentácie LLVM;
  • Analýza informácií o cykloch a použití premenných;
  • Tvorba strojového kódu.

Predstavený backend TPDE-LLVM, ktorý beží 10-20x rýchlejšie ako LLVM v neoptimalizovanom režime

Je potrebné poznamenať, že za účasti autorov TPDE už boli do vetiev LLVM 19 a 20 pridané optimalizácie, ktoré umožnili zrýchliť štandardný backend LLVM o 18 % na platforme x86-64 a o 13 % na platforme ARM64. Podľa autorov TPDE bude v budúcnosti s malým úsilím možné zrýchliť backend LLVM o ďalších 10 – 20 %, ale ďalšie zlepšenie výkonu si bude vyžadovať významné zmeny. Zároveň je nepravdepodobné, že by sa existujúci backend LLVM zrýchlil 10-krát, a to ani pri výraznom prepracovaní.

V súčasnej fáze vývoja medzi ciele projektu TPDE patrí poskytovanie podpory pre medziľahlú reprezentáciu kódu LLVM vytvorenú frontendom Clang v optimalizačných režimoch „-O0“ a „-O1“. Spracovanie medziľahlej reprezentácie vytvorenej v režime „-O2“ zatiaľ nie je zaručené z dôvodu chýbajúcej podpory pre vektorové operácie v TPDE. Medziľahlý kód z Flang a kompilátora Rust je čiastočne podporovaný.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre stránky s DDoS ochranou, VPS VDS servery 🔥 Kúpte si spoľahlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster