LTO: čo to je a ako to používať na Gentoo

Čo je LTO?

LTO je skratka pre Optimalizácia času odkazu. Je to operácia, pri ktorej kompilátor oneskorí optimalizáciu v okamihu prepojenia zdrojových súborov, čo vám umožní vidieť všetky súbory, ktoré tvoria jeden spustiteľný súbor, ako jeden súbor, a týmto spôsobom optimalizácie aplikovať efektívnejším spôsobom.

Pre viac informácií: wiki z GCC.

Ak chcete vidieť výhody a nevýhody LTO: Referenčné hodnoty pre Phoronix

Na čo treba pamätať

  • Je nestabilný, v niektorých balíkoch môže spôsobiť problémy.
  • Niektoré balíčky sa nepodarí zostaviť (viac informácií o tom, ako to napraviť neskôr).
  • Odporúča sa použiť linker zlato.
  • Spojené štáty americké vždy najnovšia verzia GCC.

zlato, okrem podpory pokročilých funkcií, ktoré zvyšujú jej atraktívnosť LTO, je to rýchlejšie ako gnu ldnajmä pokiaľ ide o veľké programy, kde sa môžu stať 5 krát rýchlejšie. Ak ho chcete použiť, spustite:

binutils-config --linker ld.gold


Použitie LTO: odporúčaná metóda

Namiesto aktivácie LTO globálne (čo môže spôsobiť problémy) je lepšie ho aktivovať v balíkoch, ktoré chceme. Týmto spôsobom iba balíčky, z ktorých chcete mať prospech LTO sú kompilované s touto optimalizáciou alebo tak, aby sa predišlo pomalším časom kompilácie v programoch, ktoré z toho nemajú úžitok. To sa dá dosiahnuť týmto spôsobom:

V adresári / etc / portage / env vytvoríme súbor Lto.conf a pridáme nasledujúce riadky:

CFLAGS="${CFLAGS} -flto=5" #pon en -flto los hilos  de tu CPU + 1
CXXFLAGS="${CXXFLAGS} -flto=5" #igual que arriba
LDFLAGS="${LDFLAGS} -fuse-linker-plugin" #solo si usas Gold, es mejor.

Takže použiť LTO v balíku musíme do súboru vložiť jeho meno (celé meno, www-client / firefox, namiesto firefox) balíček.env, S Lto.conf po tvojej pravici. Nižšie je uvedený príklad:

app-emulation/wine LTO.conf
www-client/firefox LTO.conf
sys-devel/gcc LTO.conf
kde-base/kdelibs LTO.conf

Teraz musíme len zostaviť balíčky, ktoré chceme, aby používali LTO.


Globálne použitie LTO (neodporúča sa)

Namiesto podania žiadosti LTO balíček po balíku, môžeme ho aplikovať aj globálne (čo používam ja). Ak ho chcete použiť, postupujte nasledovne:

Upravíme súbor /etc/portage/make.conf a pridáme nasledujúce (sú to rovnaké riadky zo súboru Lto.conf):

CFLAGS="${CFLAGS} -flto=5" #pon en -flto los hilos  de tu CPU + 1
CXXFLAGS="${CXXFLAGS} -flto=5" #igual que arriba
LDFLAGS="${LDFLAGS} -fuse-linker-plugin" #solo si usas Gold, es mejor.

Na druhej strane vytvoríme súbor /etc/portage/env/no-LTO.conf a pridáme nasledujúce riadky:

CFLAGS="${CFLAGS} -fno-lto -fno-use-linker-plugin"
CXXFLAGS="${CXXFLAGS} -fno-lto -fno-use-linker-plugin"
LDFLAGS="${LDFLAGS} -fno-lto -fno-use-linker-plugin"

A v spise balíček.env dáme balíčky, ktorých kompilácia zlyhala LTO, On tu môj balíček.env (všimnite si, že používam nolto.conf namiesto non-LTO.conf).

Musíme tiež pridať LTO premenná USE na urobiť.konf, je to nevyhnutné, pretože vývojári gentoo V niektorých balíkoch (pomaly) pridávajú voliteľné opravy pre použitie tejto optimalizácie.

Akonáhle je to hotové, pokračujme v prekompilovaní všetkých systémových balíkov:

emerge -e @world @system --keep-going &> errores

Použitím príkazu –keep-going to hovoríme dopravné ignorovať chyby, zatiaľ čo &> ak chcete presmerovať výstup všetkých chýb do súboru s názvom chyby, použite tento súbor na zistenie toho, ktoré balíky sa nedajú skompilovať, a pridajte ich do zoznamu balíček.env.

&> Nás zbaví všetkého výstupu, ak chceme vidieť výstup procesu, musíme použiť (ako root) tento príkaz:

tail -f /var/log/emerge.log

A to je všetko, dúfam, že som nenechal na pochybách, či to rozveselím a napíšem o tom článok Openmp a / alebo grafit.


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Zodpovedný za údaje: Miguel Ángel Gatón
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.

  1.   MSX dijo

    Gentoo, ja ...
    Poďme k tomu dôležitému: Grafit!

    1.    x11tete11x dijo

      Ten hlúpy a nezmyselný grafit xD, tá podštandardná vec, ktorá praskne váš systém xD, si pamätám, že keď som ho použil naposledy, stačilo na to urobiť iteráciu 50-krát pomocou príkazu „notify-send KDE <3“, takže v iterácii číslo 50, prostredie praskne do pekla hahahahaha, áno, išiel som na prd xD

    2.    cestár dijo

      Už som povedal, že ma stále povzbudzujú a urobil som jeden z grafitu. Ale aj tak, Graphite (a akákoľvek iná optimalizácia) funguje najlepšie s LTO. Na rozdiel od LTO majú problém aj Graphite a OpenMP. Nie všetky programy z toho majú úžitok a u tých, ktoré z nich nemajú úžitok, výkon klesá. Preto je v tomto prípade lepšie použiť ho iba pre niekoľko balíkov.