Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia Tuesday TopDrive KupDnes Navrcholu Bomba NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Vlákno názorů ke zprávičce GCC bude automaticky paralelizovat

Karásek
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
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.
Karásek
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?
hawran diskuse aura:60
12. 3. 2009 13:44

Re: Co to vlastně je?

Jen co nekde najde ten vnitropodnikovy obeznik z Reedmondu ...
hawran diskuse aura:60
12. 3. 2009 13:45

Re: Co to vlastně je?

Redmondu, samozrejme ...
ultra force 3000
ultra force 3000 (neregistrovaný)
13. 3. 2009 1:33

Re: Co to vlastně je?

jaktoze mas porad auru 71?
hawran diskuse aura:60
13. 3. 2009 10:26

Re: Co to vlastně je?

???
PS: asi jsem dobre zaplatil...
TiCo
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
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.
Petr Pluháček
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. :-)
Peter Helcmanovsky aura:65
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)
Petr Pluháček
12. 3. 2009 20:06

Re: Co to vlastně je?

Děkuji za vysvětlení.
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.
Peter Helcmanovsky aura:65
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.
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).
hawran diskuse aura:60
12. 3. 2009 20:40

Re: Co to vlastně je?

"nedogeneruje funkce"
WTF?!
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 :-)))
Peter Helcmanovsky aura:65
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.
Stanislav Brabec aura:91
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).
ultra force 3000
ultra force 3000 (neregistrovaný)
13. 3. 2009 1:34

Re: Co to vlastně je?

sak vpoho..
Miloslav Ponkrác aura:59
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.
Sten
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
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.
Timy
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.
Zasílat nově přidané příspěvky e-mailem