Predstavljen je backend TPDE-LLVM, koji radi 10-20 puta brže od LLVM u načinu bez optimizacija

Istraživači s Tehničkog sveučilišta u Münchenu objavili su TPDE alat i njegov backend za LLVM — TPDE-LLVM, koji omogućuje generiranje strojne kodove za arhitekture x86-64 i AArch64 temeljen na međurepresentationom kodu LLVM-IR. Tijekom testiranja, TPDE-LLVM je bio brži od LLVM -O0 backend-a (generator koda bez optimizacija) 10-20 puta uz istu razinu performansi rezultantnog strojna koda i povećanjem veličine između 10-30%. Učinak projekta objavljen je pod Apache 2.0 licencom.

TPDE-LLVM je prvotno usmjeren na pružanje kompajliranja s minimalnim kašnjenjima i razinom kvalitete koja odgovara načinu izgradnje bez optimizacija („-O0“). Projekt uključuje alat za neovisno pokretanje tpde-llc, biblioteku za integraciju u aplikacije (na primjer, za implementaciju funkcionalnosti JIT-kompajlera) i zakrpe za integraciju s Clang i Flang.

Predstavljen je backend TPDE-LLVM, koji radi 10-20 puta brže od LLVM u načinu bez optimizacija

Projekt se može koristiti kao osnovna kompilacijska komponenta za JIT ili za izradu neoptimiziranih izdanja. TPDE-LLVM fokusira se isključivo na brzinu kompilacije i ne pokušava konkurirati optimizirajućim backend-ima LLVM, koji u usporedbi s TPDE-LLVM rade znatno sporije, ali omogućuju generiranje bržih i kompaktnijih strojnih kodova (otprilike 2 puta brže i 2 puta manji u veličini).

TPDE-LLVM koristi tri faze za generiranje koda:

  • Čišćenje i priprema međurepresentationa LLVM;
  • Analiza informacija o ciklusima i korištenju varijabli;
  • Izrada strojnih kodova.

Predstavljen je backend TPDE-LLVM, koji radi 10-20 puta brže od LLVM u načinu bez optimizacija

Primjećuje se da je uz sudjelovanje autora TPDE u grane LLVM 19 i 20 već dodano optimizacija koja je omogućila ubrzavanje rada standardnog backend-a LLVM za 18% na x86-64 platformi i za 13% na ARM64 platformi. Prema autorima TPDE, u budućnosti bi se backend LLVM mogao dodatno ubrzati za 10-20%, ali će daljnje poboljšanje performansi zahtijevati značajne promjene. Čak i uz značajnu prilagodbu, malo je vjerojatno da će se postojeći backend LLVM uspjeti ubrzati 10 puta.

Trenutno, cilj projekta TPDE je osigurati podršku za međurezultat LLVM koda, koji generira frontend Clang u optimizacijskim modovima „-O0“ i „-O1“. Obrada međurezultata stvorenog u režimu „-O2“ trenutno nije zajamčena zbog nedostatka podrške za vektorske operacije u TPDE. Djelomično je podržan međurezultat iz Flanga i kompajlera Rust.

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster