Portál AbcLinuxu, 1. května 2025 04:08

ACM SIGPLAN ocenila GCC

Speciální zájmová skupina věnovaná programovacím jazykům (SIGPLAN, Special Interest Group on Programming Languages) Asociace pro výpočetní techniku (ACM, Association for Computing Machinery) vyhlásila na slavnostním ceremoniálu v rámci konference PLDI 2014 vítěze letošní Programming Languages Software Award. Ocenění získal projekt GNU Compiler Collection (GCC).

13.6.2014 08:12 | Ladislav Hagara | Komunita


Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

13.6.2014 16:24 unicode
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Odpovědět | Sbalit | Link | Blokovat | Admin
Ale stejně je lepší investovat čas do clang;-)
15.6.2014 11:15 Miloslav Ponkrác
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Není. Protože jeho architektura neumožňuje vymáčknout při kompilaci do binárky maximální optimalizace, tedy ani nemůže mít ani maximální rychlost.

Důvod, proč člověk používá jazyky jako C/C++/Fortran je mimo jiné ten, že chce vymáčknout z binárky maximální rychlost.

Až půjde do tuhého, gcc bude nakonec vždy rychlejší, protože nemá limitaci v možnostech implementace optimalizací by design jako llvm/clang.

Přijde doba, kdy se to řekne naplno a bude to obrovské „nečekané“ zklamání.

Proto je lépe dát hlavní energii gcc. To druhé si nechat jako možnost rychlé implementace nových jazyků, kde rychlost není klíčová.

Je dobré se občas zamýšlet nad vlastnostmi programů, ne jenom nad tím, že je něco cool, wow, a všude se o tom kladně píše.

Miloslav Ponkrác
17.6.2014 10:31 nyan
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Ano to vsechno je pravda - za predpokladu ze rychlost vysledne binarky je to nejdulezitejsi. Obavam se ale ze jiny lide muzou mit jine priority.
17.6.2014 11:57 roman
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
A v cem presne je ta architektura tak zvlastni ze to neumoznuje? Podle mne je to blbost.

Ano, LLVM ma nektera omezeni, ale gcc taky nemuze delat vse. V podstate jsou 2 takova hlavni omezeni (o kterych vim), inliner nemuze pouzivat analyzy (na tom se pracuje, prepisuje se pass manager), codegen vidi jenom jeden basic block zaraz (na to jsou plany).

Gcc ma zase jine omezeni.

Ale zadna principielni/neresitelna omezeni llvm nema, narozdil od podle meho nazoru gcc, ktere ma tak vysoky technical debt ze je dle meho nazoru neopravitelne.
Bedňa avatar 15.6.2014 22:28 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Lepšie ako porovnávanie pindíkov je slobodný grupen sex, aby sme mali možnosť to najlepšie vylepšiť.
KERNEL ULTRAS video channel >>>
16.6.2014 08:21 Honz
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Ale mělo by se střídat, někteří už dvakrát kouřili...
Bedňa avatar 16.6.2014 20:34 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Hoď to do bugzilly.
KERNEL ULTRAS video channel >>>
13.6.2014 17:56 lertimir | skóre: 64 | blog: Par_slov
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Odpovědět | Sbalit | Link | Blokovat | Admin
Zkusili jste někdo porovnat jaký je rozdíl vy výsledném kódu (rychlost, velikost) mezi gcc, clang a intel C++ compiler?
Hans1024 avatar 13.6.2014 18:54 Hans1024 | skóre: 5 | blog: hansovo
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Phoronix porovnava gcc a clang kazdou chvili. Vetsinou v optimalizacich vede gcc a rychlejsi kompilaci ma clang.
Veni, vidi, copi
13.6.2014 22:39 Jakub Galgonek | skóre: 3
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Asi dost záleží na tom, co kompiluješ. Nějaké systematické srovnání jsem nedělal, ale během "flame war" na rootu jsem něco zkoušel. Třeba násobení matic přeložené g++ běželo 64 sekund, ale verze kompilovaná icc běžela pouhých 0.85 sekund. Ale třeba sadu RMSD mi g++ verze počítala 2.64 sekund, ale icc verze na to potřebovala 5.58 sekund.
14.6.2014 02:41 g.g
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Třeba násobení matic přeložené g++ běželo 64 sekund, ale verze kompilovaná icc běžela pouhých 0.85 sekund.
Tak tohle vypadá jako problém, který by zasloužil podrobnější diagnózu. ICC má možná (nevím...) o něco lepší autovectorizer, ale tohle zní jako patologický případ, nemyslíte? (Zkoušel jste to disassemblovat?)
14.6.2014 05:52 Jakub Galgonek | skóre: 3
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Šlo o naivní násobení matic velikolsti 2000x2000. Co jsem tehdy koukal, tak těch pět řádků, co provádí samotné násobení, to rozvinulo na asi 1100 řádků assembleru. A více jsem to nezkoumal.
Hans1024 avatar 14.6.2014 13:40 Hans1024 | skóre: 5 | blog: hansovo
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
A s jakymi optimalizacemi jste to kompiloval?
Veni, vidi, copi
14.6.2014 14:39 Jakub Galgonek | skóre: 3
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Volby byly, tuším, -O3 -march=native a pouštěl jsem to na Core i7 (3630QM).
Hans1024 avatar 14.6.2014 14:58 Hans1024 | skóre: 5 | blog: hansovo
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Hmm, leda me napada, ze by icc pouzival automaticky neco na zpusob -ffast-math. Ale ani to by asi neudelalo tak markantni rozdil. 64 vs 0.85 sekund - to skoro vypada, ze si icc proste spocital vysledky pri kompilaci - jestli teda byly ty matice nejak konstantne zadane.
Veni, vidi, copi
Hans1024 avatar 14.6.2014 15:04 Hans1024 | skóre: 5 | blog: hansovo
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Tak jsem se docetl, ze pry
ICC by default uses a ‘fast-math’ like mode.
Veni, vidi, copi
14.6.2014 16:06 Jakub Galgonek | skóre: 3
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Koukal jsem se znovu do té diskuze, to násobení bylo celočíselné, takže vliv -ffast-math v tom nebude. Když si nechám vygenerovat instrukce, výstup icc je mnohem delší, takže bych tipoval, že icc dělá (lepší) loop unroling. Další věcí je, že to násobení je dost naivní, pokud by druhá matice byla již transponovaná, g++ by to dalo za asi 2.2 sekundy.
14.6.2014 15:10 Jakub Galgonek | skóre: 3
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Při kompilaci si to určitě nespočítal, protože data se načítala ze souboru.
krab1k avatar 14.6.2014 15:58 krab1k | skóre: 11 | Brno
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Vysvětlení je podle mě trochu jinde: ICC provádí loop interchange (ICC o těchto věcech informuje s flagem -opt-report=hlo). Přesněji cykly přes (i, j, k) nahradí cykly přes (i, k, j). Konkrétně tahle úprava optimalizuje přístup k prvkům matice B ve výrazu C[i][j] += A[i][k] * B[k][j].

Nejrychleji měnící se index je pak j, takže oproti původní verzi přistupujeme k prvkům, které jsou v paměti vedle sebe.
14.6.2014 16:24 Jakub Galgonek | skóre: 3
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Díky, zkusil jsem to znovu přeložit a opravdu icc hlásí LOOP INTERCHANGE. Když ty smyčky předělám ručně, g++ to najednou zvládne za 3.16 sekund.

PS: Ten divně formátovaný kód není můj.
14.6.2014 19:49 g.g
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Hmm, a zkoušel jste použít -floop-interchange? :-)
14.6.2014 20:17 Jakub Galgonek | skóre: 3
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Ne, ani pro to nemám v gcc podporu. Ale tak doplním ji a zkusím.
14.6.2014 21:14 Jakub Galgonek | skóre: 3
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Tak -floop-interchange u g++ na to nemá vliv.
16.6.2014 01:45 g.g
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Hmm. Tak to je asi buď námět na dotaz v mailing listu GCC, nebo případně na bug report, pokud to nedělá něco, co to dělat má.
15.6.2014 11:21 Miloslav Ponkrác
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
„Zkusili jste někdo porovnat jaký je rozdíl vy výsledném kódu (rychlost, velikost) mezi gcc, clang a intel C++ compiler?“

Rychlost:

To je jednoduché. Intel C++ je daleko napřed přede vším. O něco horší je Microsoft C++. Ještě horší a pomalejší je gcc, ale už ne o mnoho, poslední verze gcc jsou mnohem lepší v optimalizaci.

A clang má postavenou architekturu tak, že to natvrdo a přímo omezuje výslednou množinu aplikovatelných optimalizací přímo v jeho designu. Takže pokud gcc nezaspí, bude clang vždy pomalejší a dávat horší binárky. By design má clang limitovánu rychlost výsledné binárky.

Velikost:

Co se týká velikosti, na to už dnes kašle pes. Žádný kompilátor neumí dobře optimalizovat na malou velikost, respektive se implementace této varianty v kompilátorech šidí. Není to třeba. Obecně platí, že nejrychlejší binárky jsou obvykle větší, než středně rychlé.

Miloslav Ponkrác
15.6.2014 16:42 JoHnY3
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Nasel by se nekde benchmark MSVC, GCC a idealne i ICC? Posledni co jsem videl bylo snad GCC 2.9 vs MSVC7.
15.6.2014 17:33 Miloslav Ponkrác
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Určitě jich najdete na webu mnoho. V zásadě je třeba porovnávat porovnávatelné.

GCC se hodně zlepšil, ještě před pár lety byla jeho optimalizace opravdu hodně špatná. Dnes už šlape na paty Microsoft C++.

Ve všech banchmarkách je ale gcc za msvc. Intel je zase vždy rychlejší, než msvc, a v krajním případě i dvojnásobně – měřeno průměrnými benchmarky.

Intel je velice dobrý v optimalizaci.

Z praktického používání: Msvc je dobrý na hlášení chyb, je v tom mnohem lepší, než gcc.

Ale potěšilo mě, že gcc udělalo v optimalizaci opravdu obrovský skok dopředu. Z trabanta před pár lety na Ferrari. Nicméně konkurence taky nespala, takže stále nikoho nepředběhl kromě clangu.

Miloslav Ponkrác
16.6.2014 11:12 Martin Mareš
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Ve všech banchmarkách je ale gcc za msvc. Intel je zase vždy rychlejší, než msvc, a v krajním případě i dvojnásobně – měřeno průměrnými benchmarky.
Pozor, tohle je dost zkreslené použitou sadou benchmarků. O ICC se tuší, že jejich vývojový tým tráví obrovské množství času optimalizováním překladu standardních benchmarků, takže na reálných programech dopadne srovnání překladačů často jinak, zvlášť pokud nekompilujete pro procesor od Intelu, ale od AMD :)

Mé osobní testy naznačují, že ICC je sice hodně dobré, ale že GCC ho v mnoha konkrétních případech předhoní. Zejména díky globálním optimalizacím, ve kterých se GCC za posledních pár let výrazně zlepšilo.
15.6.2014 17:11 Marvin | blog: im_depressed | Gallifrey
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
By design má clang limitovánu rychlost výsledné binárky.
Jak konkretne?
15.6.2014 17:39 Miloslav Ponkrác
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Jakýkoli kompilátor, který si zafixuje mezijazyk je tímto omezen. Lépe se to programuje, ale kvalita výstupního kódu je tím limitována k horšímu.

A pak záleží na vyjadřovací síle toho mezijazyka, jestli vymáčknutelné maximum při optimalizace je o hodně horší, nebo jen mírně nižší, než u kompilátorů, které toto nedělají.

---

V zásadě existence gcc × clang startuje přesně to, co jsem před lety předpovídal, a za co je mi nadáváno.

Komerční firmy, stejně jako řada vývojářů, nebudou podporovat GPL licencované projekty. Raději si založí vlastní konkurenční pod méně restriktivní licencí.

Na clang se vrhla řada firem pro vývoj právě proto, že výsledek mohou použít ve svých projektech bez toho, aby projekt musel být také gpl.

Ale přesto, že na clang je vrhnuto hodně peněz a vývojářské síly, stále ne a ne rychlostně ve výsledné binárce natrhnout gcc zadek. Protože, jak už jsme psal, architektura, která používá pevně zafixovaný mezijazyk, prostě nejlepší kód nikdy nevygeneruje. Vždy bude horší, než od kvalitního kompilátoru, který toto v architektuře neudělal.

Miloslav Ponkrác
15.6.2014 17:57 Jakub Galgonek | skóre: 3
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Zkusil jsem teď svůj kód pro výpočet sady RMSD přeložit ještě pod clang. No, výsledky jsou fakt zajímavé:
clang++ 3.4.1 : 1.84s
g++ 4.7.3     : 2.60s
icc 13.1.3    : 4.83s
Ve všech případech byl kód přeložen s parametry -O3 -march=native (pro Core i7 3630QM).
15.6.2014 18:30 Miloslav Ponkrác
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Jen neznalý člověk se může domnívat, že max. optimalizaci získá bez důsledného nastavení parametrů překladu.

Čím je kompilátor schopnější v optimalizaci, tím citlivější je na parametry překladu. Vlastně je to důkaz dobře optimalizujícího kompilátoru, že nemá volby jen pro srandu králíkům a citlivě to na ně reaguje.

Rychlost překladu je nepřímo úměrná kvalitě kódu. Proto defaultně dobré kompilátory moc neoptimalizují.
15.6.2014 18:45 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Rychlost překladu je nepřímo úměrná kvalitě kódu. Proto defaultně dobré kompilátory moc neoptimalizují.
Jinak doufám, že si s touto větou děláte srandu. Jako vtip je to dobré.
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
15.6.2014 18:56 Jakub Galgonek | skóre: 3
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Klidně mi nějakou kombinaci parametrů doporuč a já ji rád vyzkouším. Testovací program a data ti mohu poslat třeba na mail (jsou to jen čtyři soubory). Pár svých oblíbených parametrů jsem zkoušel, ale v podstatě bez efektu.
15.6.2014 21:12 Miloslav Ponkrác
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
První inspirace:

http://willus.com/ccomp_benchmark2.shtml?p3
15.6.2014 21:19 Jakub Galgonek | skóre: 3
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Tyhle základní flagy jsem už zkoušel - bez výrazného efektu. Zkusil jsem i nejnovější verzi icc (14.0.3), ale ta dopadla ještě hůře (5.19s).
15.6.2014 21:14 Miloslav Ponkrác
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Ještě jednu poznámku: Řada kompilátorů je schopna optimalizovat nejen při kompilaci, ale také při linkování. Tedy zoptimalizovat celý program globálně na konci. U Microsoft C++ jsem to zkoušel, a běžně to hodí 10 % rychlosti nahoru u praktických testů.
15.6.2014 21:32 Jakub Galgonek | skóre: 3
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Myslíš -ipo? U icc 14.0.3 to stáhne na nějakých pět sekund. U té starší verze jsem nepozoroval rozdíl.
16.6.2014 01:48 g.g
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Jestli pořád ještě na GCC funguje Acovea, možná si to můžete nechat vygenerovat sám. :-)
16.6.2014 11:02 Jakub Galgonek | skóre: 3
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Vypadá to zajímavě, ale bohužel už docela zastarale/mrtvě.
15.6.2014 18:21 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
A pak záleží na vyjadřovací síle toho mezijazyka, jestli vymáčknutelné maximum při optimalizace je o hodně horší, nebo jen mírně nižší, než u kompilátorů, které toto nedělají.
LLVM i GCC pouzivaji IR zalozenou na SSA, ergo jejich moznosti optimalizovat jsou +/- stejne. IMHO kvalita vystupniho kodu je spis dana poctem clovekohodin, ktere byly do toho ktereho prekladace vlozeny.
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
15.6.2014 18:26 Miloslav Ponkrác
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Znovu zopakuji klíčový termín z toho, co jsem napsal: „pevně definovaný mezijazyk“.

Popřípadě upozorním na rozdíl mezi „pevně daný mezijazyk“ a mezijazyk, který je možné měnit.

Nějakou formu mezijazyka má každý kompilátor, protože na nějaké formě mezijazyka se ta optimalizace provádět musí.

---

Kvalita výstupního kódu samozřejmě závisí nejen na formě člověkohodim, ale také na fyzikálních zákonech a limitech architektury. Ne vše jde zlepšovat donekonečna dolarovými vycpávkami.
15.6.2014 18:55 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Znovu zopakuji klíčový termín z toho, co jsem napsal: „pevně definovaný mezijazyk“.
Uvedomte si, ze vase tvrzeni o nevhodnosti pevne dane IR jsou jen vase domenky, ktere vydavate za fakt.

Ve skutecnosti IR LLVM je mnohem expresivnejsi nez v pripade GCC.
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
15.6.2014 21:04 Miloslav Ponkrác
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Vy jste schopen popřít i to, že ráno vychází Slunce.

Dejte si 2 zadání na překlad z češtiny do japonštiny.

1) Zadejte překladatelské firmě, že chcete zajistit perfektní překlad z češtiny do japonštiny. Detaily necháte na nich, ať si to vnitřně zařídí jak chtějí. (Obdoba gcc.)

2) Zadejte jedné překladatelské firmě, že chcete zajistit perfektní překlad z češtiny do eskymáčtiny. Zadejte druhé překladatelské firmě, že chcete zajistit perfektní překlad z eskymáčtiny do japonštiny. Máme zde pevný jazyk, na jehož neměnnosti trváme, v tomto případě eskymáčtinu. A pak ty dva překlady v simultánním tlumočení zřetězíme. (Odboda clang/llvm).

Myslím, že i nepočítačový člověk jasně chápe, který překlad dopadne lépe, bude kvalitnější.

Howgh.

Dál už toto téma nebudu dokazovat, protože je to jasné jako facka. Myslete si o tom co chcete, uvidíme za pár let, až bude llvm pomalu přiznávat a poleze to z něho jako z chlupaté deky, že existuje limit optimalizace, který nejde z principu překročit tak, jak byl postaven.

Miloslav Ponkrác
15.6.2014 21:52 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
To je jako cist nejakou bibli, hromada metafor a fakta zadna.
nepočítačový člověk jasně chápe
Takto to chape asi nepocitacovy clovek. Nicmene realita je malinko jina, protoze i IR v GCC je de facto pevne dana (jen to mozna nevite), takze tady popirate vlastne sam sebe.

Pocitacovy clovek vi, ze k ziskani dobreho vysledku jsou dulezite datove struktury a s nimi pracujici algoritmy. Jelikoz v LLVM i GCC se pouziva reprezentace zalozena na SSA, mnozina pouzitelnych optimalizacnich algoritmu je stejna.
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
16.6.2014 01:04 Miloslav Ponkrác
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Analogicky: Protože nejrychlejší sprinter světa, stejně jako 90letá šouravá babka po osteoporóze používá pro pohyb stejný zpsob, který reprezentují „2 nohy“, pak z toho vyplývá, že oba lidé budou stejně rychlí.

Přestaňte už s těmi hovadinami. Nedělejte ze sebe hlupáka, a chovejte se trochu inteligentně. Věřím, že jste chytrý člověk, jen zášť vůči mě z Vás dělá blba v diskusi.
16.6.2014 01:36 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Kdyz nekdo placa blbosti a sve domenky vydava za fakta, neznamena to, ze mam vuci nemu zast.
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
15.6.2014 21:08 Miloslav Ponkrác
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Ještě by se dalo dodat, že kdyby llvm architektura umožňovala lepší optimalizaci, tak už jí šupito presto začne používat jak Intel, tak Microsoft. Ale oni nemají tendenci se jí inspirovat a dobře vědí proč.

Ale jak Intel, tak Microsoft se drží staré cesty, a optimalizují mnohem lépe, než open source kompilátory.

Když už máte drzé čelo, proč tito velcí hráči nepřecházejí na clang/llvm princip? Odpověď zní, protože neumožňuje udělat tak dobrý kompilátor.
15.6.2014 21:45 OldFrog {Ondra Nemecek} | skóre: 36 | blog: Žabákův notes | Praha
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Tohle přirovnání je sice logické a pravděpodobné, ale samo o sobě nic nedokazuje. Jde přeci pouze o to, které informace se ztratí při překladu do mezijazyka a které informace dokáže kompilátor v mezijazyku při optimalizaci zohlednit.

Takže seriózním argumentem by bylo pouze porovnání těch mezijazyků a jejich dalšího zpracování u obou poropvnávaných kompilátorů.
-- OldFrog
16.6.2014 00:54 Miloslav Ponkrác
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Znovu. clang/llvm má pvně daný mezijazyk přímo jako součást standardu projektu. Když zjistíte jeho nedostatky, vylepšovat ho budete těžko.

Gcc, bez ohledu na to, co je v něm DNES, nemá pevně daný mezijazyk. Jeho změna či úprava je možná, ač to bude bolet.

Kromě toho, RTL v gcc je zaměřen na to, aby byl blízko strojového kódu, tedy co nejlépe optimalizovatlený.

Naopak llvm má „llvm assembler“ poněkud dále od strojového kódu.

---

Stejně tak stačí mezijazyky porovnat, trváte-li na tom:

https://gcc.gnu.org/onlinedocs/gccint/RTL.html http://llvm.org/docs/LangRef.html

---

Chápu, že se lidem strašně chce věřit, že jednou bude llvm stejně dobrý v optimalizacích jako gcc. Nebude. Clang/llvm nikdy gcc rychlostně nedožene, protože jeho mezijazyk není dělám proto, aby umožnil co nejlepší optimalizaci.

llvm má mezijazyk jako standarndí rozhraní a jako jeden jazyk, který můžete používat. Llvm má v zásadě úplně stejnou konmcepci jako .NET nebo Java. Principiálně se tyto 3 projekty od sebe nijak neliší. Zavedli nějaký „assembler“, který je schopen chroustat. Vše ostatní musí zařídit kompilátory.

A stejně tak jako Java, tak Microsoft, tak llvm nadšenci prohlašují a budou prohlašovat, že rychlostně překonají céčko a stroják, tak se tak nikdy nestalo a nikdy nestane.

Už jenom proto, že mezijazyk je pevný a jeho účelem je umožnit jednoduchou kompilaci, optimalizace je druhořadá při návrhu toho mezijazyka.

Ale když to řeknu naplno, llvm je kripl architektově a kripl možnostmi toho mezijazyka. A to se s ním ponese a nikdo to neodpáře.

A už se k tomu nebudu dále vyjadřovat. Čas ukáže tuhle pravdu jasně.

---

Miloslav Ponkrác
16.6.2014 01:35 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
clang/llvm má pvně daný mezijazyk přímo jako součást standardu projektu. Když zjistíte jeho nedostatky, vylepšovat ho budete těžko.
Kdyz se zjisti nedostatky v pripade IR u LLVM, tak se zmeni IR a vyda se nova verze a budou se muset upravit vsechny front-endy.

Kdyz se zjisti nedostatky v pripade IR u GCC, tak se zmeni IR a vyda se nova verze a budou se muset upravit vsechny front-endy.

Nejdete deset rozdilu.
Kromě toho, RTL v gcc je zaměřen na to, aby byl blízko strojového kódu, tedy co nejlépe optimalizovatlený
Uz jsme doma! Vite, pise se rok 2014 a GCC vypada uplne jinak, nez v minulem stoleti.
Stejně tak stačí mezijazyky porovnat, trváte-li na tom:

https://gcc.gnu.org/onlinedocs/gccint/RTL.html
Bylo by dobre podivat se o kapitolu vys: https://gcc.gnu.org/onlinedocs/gccint/Tree-SSA.html#Tree-SSA

Ale ja vam to vysvetlim, at se tu priste neztrapnujete: Kod je prolozen do interni reprezentace, ktera se oznacuje jako (GENERIC/GIMPLE), ktera je naprosto nezavisla na jazyku i cilove platforme (stejne jako v pripade LLVM), nad tim se dela spoooousta optimalizaci a pak je prelozena do RTL a az z toho se generuje binarka.
Llvm má v zásadě úplně stejnou konmcepci jako .NET nebo Java.
To je fakt hodne prehnane pripodoneni.
llvm má mezijazyk jako standarndí rozhraní a jako jeden jazyk, který můžete používa
LLVM ... odpovida back-endu gcc, clang ... front-endu v gcc. V cem je problem?
optimalizace je druhořadá při návrhu toho mezijazyka.
Zajimave... a pritom LLVM vzniklo puvodne jako vyzkumny projekt zamereny na optimalizace....

Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
16.6.2014 11:27 OldFrog {Ondra Nemecek} | skóre: 36 | blog: Žabákův notes | Praha
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Já nehájím žádný překladač, na mě pouze nepůsobí Vaše argumentace důvěryhodně. Okolnosti změny mezijazyka přece ještě nic nevypovídají o stávající rychlosti - možná tak o flexibilitě možných vylepšení optimalizace v budoucnu. Dokud bych si neověřil možnosti a omezení mezijazyka, tak bych Vám prostě nevěřil.
-- OldFrog
16.6.2014 20:09 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Gcc, bez ohledu na to, co je v něm DNES, nemá pevně daný mezijazyk.
Aha, a GENERIC+GIMPLE se mažou na chleba, že...
15.6.2014 22:03 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Ještě by se dalo dodat, že kdyby llvm architektura umožňovala lepší optimalizaci, tak už jí šupito presto začne používat jak Intel, tak Microsoft. Ale oni nemají tendenci se jí inspirovat a dobře vědí proč.
Jako by se stalo. :-]] Ve skutecnosti GCC s verzi 4.0 presel na architekturu, ktera odpovida LLVM.
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
16.6.2014 01:01 Miloslav Ponkrác
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Vidíte, dáváte mi zcela zapravdu.

Gcc může přejít na jiný mezijazyk. Není to problém. Protože NENÍ NAPEVNO. Protože je možné mezijazyk změnit, vylepšit. A gcc to může udělat. Protože mezijazyk není API gcc kompilátoru. Po změně mezijazyka to uživatel gcc nijak nepozná navenek, jen to lépe optimalizuje.

Kdykoli gcc může mít lepší mezijazyk, když zjistí, že ho potřebuje.

Clang/llvm má mezijazyk jako součást API kompilátoru. Když ho bude chtít změnit, tak jedině tak, že llvm jako projekt zanikne jako celek. A pojede se od nuly jinde.

Já sice chápu, že deda.jablko mě osobně nesnáší, a proto bude v opozici, i když tvrdím to samé co on, ale už to deda.jablko fakt přehání, a nemusím si také všechno nechat líbit. A protože nejsem zastánce útoků ad hominem a dělání ze sebe blbého, jako dělá deda.jablko, a nechci se snížit na stejnou úroveň diskusi, tak už na deda.jablko reagovat nebudu. Myslím, že jsem vše podstatné napsal.
16.6.2014 01:49 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Vidíte, dáváte mi zcela zapravdu.
Ne.
Když ho bude chtít změnit, tak jedině tak, že llvm jako projekt zanikne jako celek. A pojede se od nuly jinde.
Tohle je falesna dichotomie.
Já sice chápu, že deda.jablko mě osobně nesnáší,

To je nesmysl. Ve skutecnosti jste mi uplne lhostejny.
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
16.6.2014 02:05 g.g
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
To je nesmysl. Ve skutecnosti jste mi uplne lhostejny.
Vsadím se, že kdybyste ho nesnášel, řekl byste mu právě tohle, jen abyste ho naštval. :-D
16.6.2014 01:52 g.g
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Nejsem si úplně jist (a rozhodně se v tom nevyznám :-)), ale nepoužívá GCC více mezijazyků už teď, čistě proto, že na různých mezijazycích se jednotlivé optimalizace dělají různě efektivně?
16.6.2014 02:05 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
16.6.2014 11:07 Martin Mareš
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
A kdo vám nakukal, že celý překladač musí používat stejný mezijazyk? Například uvnitř GCC se jich používá vícero: RTL, Tree-SSA, GIMPLE, polyedrální reprezentace cyklů atd. Ani LLVM nic nebrání v tom, aby uvnitř některých optimalizačních průchodů změnilo reprezentaci programu tam a zase zpátky.

Jak vás tak poslouchám, viděl jste vůbec někdy nějaký překladač uvnitř?
17.6.2014 12:05 roman
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
No, vidim ze pan Ponkrac ukazal ze compilerum naprosto nerozumi. Ja jen doplnim, stejne jako ruzne "jazyky" ma gcc, tak ruzne jazyky ma i llvm.

minimalne klasicke IR, SDAG, MInstr.

To jen pro doplneni.
15.6.2014 18:32 Miloslav Ponkrác
Rozbalit Rozbalit vše Re: ACM SIGPLAN ocenila GCC
„LLVM i GCC pouzivaji IR zalozenou na SSA, ergo jejich moznosti optimalizovat jsou +/- stejne.“

Jinak doufám, že si s touto větou děláte srandu. Jako vtip je to dobré.

Založit nové vláknoNahoru


ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.