Vlákno názorů ke zprávičce GCC bude automaticky paralelizovat
Karásek (neregistrovaný)
12. 3. 2009 13:31
Co to vlastně je?
Zkoušel jsem hledat pojem "paralelizace" ve slovníčku pojmů (tady na Rootu) a nenašel:-(
Ray (neregistrovaný)
12. 3. 2009 13:34
Re: Co to vlastně je?
V podstatě jde o to, že kromně už tak zbugovanýho kódu, co GCC už tak produkuje, bude bugovat ještě víc a to na více CPU najednou :) Už se těším, jak rozloží algoritmy na paralelní.... Přibude další "must use" volba --disable :D
R.
R.
Karásek (neregistrovaný)
12. 3. 2009 13:38
Re: Co to vlastně je?
Můžete uvést nějaký (jednoduchý) příklad toho zbugovaného kódu vyprodukovaného GCC?
12. 3. 2009 13:44
Re: Co to vlastně je?
Jen co nekde najde ten vnitropodnikovy obeznik z Reedmondu ...
TiCo (neregistrovaný)
12. 3. 2009 15:14
Re: Co to vlastně je?
Mno když nejaka lamka zapina optimalizaci kodu, tak se pak nemuze divit, ze to generuje zbugovanej kod :-D (btw to dela i VS)
Marex (neregistrovaný)
12. 3. 2009 16:26
Re: Co to vlastně je?
jo, obcas se stava napr. to, ze gcc nedogeneruje funkce a podobne. Bohuzel pro lidi bez dostatecnych znalosti v oblasti prekladacu se to muze jevit jako bug a pak zacnou rvat kolem sebe, ze gcc je nahouby.
12. 3. 2009 16:48
Re: Co to vlastně je?
Co je to "nedogeneruje funkce" -co si mám pod tím představit? Ptám se se seriozně, protože jako člověk neznalý překladačů nechci roztrubovat, že GCC je na houby. :-)
12. 3. 2009 19:28
Re: Co to vlastně je?
Kazdy prekladac ma sve bugy, nejen gcc. Ale rekl bych ze MSCC je pri optimalizovanem kodu mirne stabilnejsi, hlavne pri okrajovych volbach typu optimalizace na rychlost/velikost ma gcc tendenci produkovat nefunkcni strojovy kod. Ale nerek bych ze GCC je na houby, v podstate je docela jedno ktery C++ prekladac pouzijete, na neco temer urcite narazite, pokud je to trochu vetsi/komplexnejsi kod. (i kdyz neni toho moc, odhadem bych rekl ze tak pod 0.5% bugu se ukaze jako chyba kompilace, vetsina je na strane zdrojaku)
uživatel si přál zůstat v anonymitě
12. 3. 2009 23:50
Re: Co to vlastně je?
k VS od MS. stava sa mi s zeleznou pravidelnostou ze ich inkrementalne skompilovana binarka robi uplne blbosti. Clovek sa divi co mu to z debugera lezie, ked zistuje kde je problem. no jo... zmazat a zbuildovat cele znovu... V starsom vs 6.0 sa mi to nestavalo.
na druhej strane myslim, ze VS generuje rychlejsi kod, C++ builder cca 10x pomalsi ako VS. gc++ este zmeriam.
na druhej strane myslim, ze VS generuje rychlejsi kod, C++ builder cca 10x pomalsi ako VS. gc++ este zmeriam.
13. 3. 2009 9:19
Re: Co to vlastně je?
"VS generuje rychlejsi kod" s novejsim 4.x gcc uz to nemusi byt tak pravidelne, kdyz uz z gcc vyleze neco funkcniho, tak to ma obcas lepsi vykon nez MSCC, nektere veci se povedou gcc zkompilovat lip. A taky zalezi na konkretnim CPU. Ale proste automaticky predpokladat ze MSCC v release udela rychlejsi binarku nez gcc uz nejde, pokud cloveku chybi i opravdu poslednich par procent vykonu, tak je nutne zkusit oboji a merit, merit, merit.
Hlavne VS6 (C++) bylo opravdu hodne stabilni, jenom obcas se sesype cely kompilator kdyz je .cpp moc velky/slozity nebo ma spoustu vnitrnich cyklu v jedne funkci, ale kdyz prezije bez padu, tak vysledni kod byl snad pokazde co pamatuji spravny. Novejsi MSCC jsem uz tolik nepouzival, nemam dost zkusenosti na hodnoceni. Ale problemy s neaktualnimi predkompilovanymi hlavickami byly obcas i u VS6, v pripade podivneho chovani bylo "Rebuild All" prvnim krokem lazeni.
Hlavne VS6 (C++) bylo opravdu hodne stabilni, jenom obcas se sesype cely kompilator kdyz je .cpp moc velky/slozity nebo ma spoustu vnitrnich cyklu v jedne funkci, ale kdyz prezije bez padu, tak vysledni kod byl snad pokazde co pamatuji spravny. Novejsi MSCC jsem uz tolik nepouzival, nemam dost zkusenosti na hodnoceni. Ale problemy s neaktualnimi predkompilovanymi hlavickami byly obcas i u VS6, v pripade podivneho chovani bylo "Rebuild All" prvnim krokem lazeni.
uživatel si přál zůstat v anonymitě
13. 3. 2009 11:38
Re: Co to vlastně je?
Me u MSCC vytacelo, ze hlasi nepodporovane konstrukce jako chybu syntaxe, takze se takova chyba opravdu vyborne hleda... GCC v takovem pripade napise neco jako "sorry, not implemented".
Meril jsem rychlost behu vysledne binarky na jednom nasem pocitacim programu a jak GCC tak ICC udelalo rychlejsi kod (muze byt rozdil i v tom, ze binarku z ICC a GCC jsem poustel na linuxu, kdezto z MSCC ve win).
Meril jsem rychlost behu vysledne binarky na jednom nasem pocitacim programu a jak GCC tak ICC udelalo rychlejsi kod (muze byt rozdil i v tom, ze binarku z ICC a GCC jsem poustel na linuxu, kdezto z MSCC ve win).
uživatel si přál zůstat v anonymitě
12. 3. 2009 23:32
Re: Co to vlastně je?
v klidu, jestli ono "nedogenerování" není bug, tak taky netuším, co tím chtěl autor říct, skoro bych si totiž mohl představovat, že ta věc nedělá co má a přitom je to dobře :-)))
13. 3. 2009 9:13
Re: Co to vlastně je?
No rekl bych ze vsechny nebo alespon vyssi stupne (od O3 jsem si na 99% jisty, ale jsem liny si to overit) optimalizace v gcc jsou salamounsky v dokumentaci oznacene jako experimentalni, takze svym zpusobem je v poradku kdyz to nefunguje, experiment se proste nepovedl.
Ale z pohledu uzivatele ktery si kompiluje nejaky projekt do release verze mi to prijde jako spatny vtip.
Ale z pohledu uzivatele ktery si kompiluje nejaky projekt do release verze mi to prijde jako spatny vtip.
13. 3. 2009 11:10
Re: Co to vlastně je?
Nesmysl! Pokud byste nebyl líný napsat "man gcc<enter>/-O3<enter>nnn", dozvěděl byste se:
-O3 Optimize yet more. -O3 turns on all optimizations specified by -O2
and also turns on the -finline-functions, -funswitch-loops,
-fpredictive-commoning, -fgcse-after-reload and -ftree-vectorize
A pokud byste se podíval do zdrojového kódu, zjistil byste, že žádná vyšší optimalizace než -O3 tam není. Uživatel si sice může napsat třeba -O9999, ale stále je to jen (optimize > 2).
12. 3. 2009 22:28
Re: Co to vlastně je?
Mno když nejaka lamka zapina optimalizaci kodu, tak se pak nemuze divit, ze to generuje zbugovanej kod :-D (btw to dela i VS)
Kompilátor, který při zapnuté optimalizaci je chybný a chybně pracující kompilátor. Dobře pracující kompilátor nesmí generovat chybný kód při zapnuté optimalizaci.
Kompilátor, který při zapnuté optimalizaci je chybný a chybně pracující kompilátor. Dobře pracující kompilátor nesmí generovat chybný kód při zapnuté optimalizaci.
Sten (neregistrovaný)
20. 3. 2009 9:49
Re: Co to vlastně je?
Z mých zkušeností je -O2 v GCC bezpečné, -O3 v GCC 3 ne (blbne -frename-registers, v GCC 4 jsem nezkoušel)
Karásek (neregistrovaný)
12. 3. 2009 13:37
Re: Co to vlastně je?
Odpověď jsem našel v devátém výsledku hledání fráze "paralelizace cyklu".
Takže paralelizace cyklu znamená jeho rozdělení na části které mohou být u víceprocesorového systému provedené na více procesorech a tím pádem rychleji.
Takže paralelizace cyklu znamená jeho rozdělení na části které mohou být u víceprocesorového systému provedené na více procesorech a tím pádem rychleji.
Timy (neregistrovaný)
12. 3. 2009 15:18
Re: Co to vlastně je?
Nemusí nutně jít rozdělení na více procesorů, i jeden procesor dokáže rozvětvit kód do více procesů/vláken.

