Kas yra KOP?
LTO yra akronimas Nuorodos laiko optimizavimas. Tai operacija, kurios metu kompiliatorius atideda optimizavimą susiedamas šaltinio failus, leidžiantį pamatyti visus failus, sudarančius vieną vykdomąjį failą, kaip vieną failą, ir tokiu būdu efektyviau pritaikyti optimizavimą.
Norėdami sužinoti apie naudą ir trūkumus LTO: Gairės Phoronix
Reikėtų nepamiršti dalykų
- Tai nestabili, kai kuriuose paketuose gali kilti problemų.
- Kai kurių paketų nepavyks kompiliuoti (daugiau apie tai išsiaiškinti vėliau).
- Rekomenduojama naudoti nuorodą Auksas.
- JAV visada naujausią versiją GCC.
Auksas, be to, kad palaiko pažangias funkcijas, kurios daro jį patrauklesnį naudoti LTO, tai greičiau nei gnu ld, ypač kai kalbama apie dideles programas, kur tai gali tapti 5 kartus greičiau. Norėdami jį naudoti, paleiskite:
binutils-config --linker ld.gold
Naudojant LTO: rekomenduojamas metodas
Užuot aktyvavęs LTO visame pasaulyje (o tai gali sukelti problemų) geriau jį suaktyvinti norimuose paketuose. Tokiu būdu naudosite tik tuos paketus, iš kurių norite pasinaudoti LTO jie sudaromi naudojant šią optimizaciją arba išvengiant lėtesnio kompiliavimo laiko programose, kurioms tai nėra naudinga. Tai galima pasiekti tokiu būdu:
/ Etc / portage / env kataloge kuriame failą LTO.conf ir pridedame šias eilutes:
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.
Taigi, naudoti LTO pakuotėje, mes tiesiog turime įrašyti jo vardą (visą vardą, www-client / firefox, o ne firefox) į failą paketas.env, Su LTO.conf į dešinę. Žemiau pateikiamas pavyzdys:
app-emulation/wine LTO.conf
www-client/firefox LTO.conf
sys-devel/gcc LTO.conf
kde-base/kdelibs LTO.conf
Dabar mes tiesiog turime surinkti paketus, kuriuos norime, kad jie naudotų LTO.
LTO naudojimas visame pasaulyje (nerekomenduojama)
Užuot kreipęsis LTO paketas po paketo, mes taip pat galime jį pritaikyti visame pasaulyje (ką aš naudoju). Norėdami jį pritaikyti, atlikite šiuos veiksmus:
Redaguojame failą /etc/portage/make.conf ir įtraukiame šiuos duomenis (tai yra tos pačios failo eilutės 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.
Savo ruožtu mes sukuriame failą /etc/portage/env/no-LTO.conf ir įtraukiame šias eilutes:
CFLAGS="${CFLAGS} -fno-lto -fno-use-linker-plugin"
CXXFLAGS="${CXXFLAGS} -fno-lto -fno-use-linker-plugin"
LDFLAGS="${LDFLAGS} -fno-lto -fno-use-linker-plugin"
Ir byloje paketas.env įdėsime paketus, kurių kompiliacija nepavyksta LTO. Jis čia mano paketas.env (atkreipkite dėmesį, kad aš naudoju nolto.conf vietoj ne-LTO.conf).
Taip pat turime pridurti LTO to USE kintamasis padaryti.conf, tai yra būtina, nes "Gentoo" jie (lėtai) prideda pasirinktinius pleistrus, skirtus naudoti šį optimizavimą kai kuriuose paketuose.
Kai tai bus padaryta, pradėkime iš naujo sukompiliuoti visus sistemos paketus:
emerge -e @world @system --keep-going &> errores
Naudodami –laikymą, mes sakome „Portage“ nepaisyti klaidų, o &> peradresuokite visų klaidų išvestį į failą, vadinamą klaidomis, naudokite šį failą norėdami sužinoti, kurių paketų nepavyksta sukompiliuoti, ir įtraukite juos į paketas.env.
tail -f /var/log/emerge.log
Ir viskas, tikiuosi, kad nepalikau abejonių, jei tai nudžiuginsiu ir parašysiu straipsnį „OpenMP“ ir / arba grafitas.
Gentoo, meh ...
Pereikime prie svarbaus dalyko: grafito!
Kvailas ir nesuvokiamas „Graphite xD“, tas nenormalus dalykas, kuris sprogo jūsų xD sistemą, prisimenu, kad paskutinį kartą, kai jį naudojau, pakako padaryti, kad pakartotumėte 50 kartų, atlikdami „pranešti-siųsti KDE <3“, kad kartojant numeris 50, aplinka sprogs pragare hahahahaha, taip, aš ėjau į fartus xD
Aš jau sakiau, kad vis tiek buvau padrąsintas ir padariau vieną iš „Graphite“. Bet šiaip „Graphite“ (ir bet koks kitas optimizavimas) geriausiai veikia su LTO. Be to, skirtingai nei LTO, „Graphite“ ir „OpenMP“ turi problemų. Ne visoms programoms tai naudinga, o toms, kurioms tai nėra naudinga, našumas sumažėja, todėl šiuo atveju geriau naudoti tik keliems paketams.