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

Hlavní navigace

GCC bude automaticky paralelizovat

Do GCC 4.4 byl zařazen Graphite Framework, který bude použit pro automatickou paralelizaci některých cyklů. Zatím není jasné o kolik by se měl na multiprocesorových systémech zvednout výkon ani kolik procent cyklů bude moci být takhle zparalelizováno. Je to ale dobrý krok vpřed.

Dále čtěte…         

Předchozí zprávička Následující zprávička        
Karásek
Karásek (neregistrovaný)
12. 3. 2009 13:31 Nový

Co to vlastně je?

celé vlákno
Zkoušel jsem hledat pojem "paralelizace" ve slovníčku pojmů (tady na Rootu) a nenašel:-(
Ray
Ray (neregistrovaný)
12. 3. 2009 13:34 Nový

Re: Co to vlastně je?

celé vlákno
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 Nový

Re: Co to vlastně je?

celé vlákno
Můžete uvést nějaký (jednoduchý) příklad toho zbugovaného kódu vyprodukovaného GCC?
hawran diskuse aura:59
12. 3. 2009 13:44 Nový

Re: Co to vlastně je?

celé vlákno
Jen co nekde najde ten vnitropodnikovy obeznik z Reedmondu ...
hawran diskuse aura:59
12. 3. 2009 13:45 Nový

Re: Co to vlastně je?

celé vlákno
Redmondu, samozrejme ...
ultra force 3000
ultra force 3000 (neregistrovaný)
13. 3. 2009 1:33 Nový

Re: Co to vlastně je?

celé vlákno
jaktoze mas porad auru 71?
hawran diskuse aura:59
13. 3. 2009 10:26 Nový

Re: Co to vlastně je?

celé vlákno
???
PS: asi jsem dobre zaplatil...
TiCo
TiCo (neregistrovaný)
12. 3. 2009 15:14 Nový

Re: Co to vlastně je?

celé vlákno
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 Nový

Re: Co to vlastně je?

celé vlákno
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 Nový

Re: Co to vlastně je?

celé vlákno
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:56
12. 3. 2009 19:28 Nový

Re: Co to vlastně je?

celé vlákno
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 Nový

Re: Co to vlastně je?

celé vlákno
Děkuji za vysvětlení.
uživatel si přál zůstat v anonymitě
12. 3. 2009 23:50 Nový

Re: Co to vlastně je?

celé vlákno
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:56
13. 3. 2009 9:19 Nový

Re: Co to vlastně je?

celé vlákno
"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 Nový

Re: Co to vlastně je?

celé vlákno
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:59
12. 3. 2009 20:40 Nový

Re: Co to vlastně je?

celé vlákno
"nedogeneruje funkce"
WTF?!
uživatel si přál zůstat v anonymitě
12. 3. 2009 23:32 Nový

Re: Co to vlastně je?

celé vlákno
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:56
13. 3. 2009 9:13 Nový

Re: Co to vlastně je?

celé vlákno
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:97
13. 3. 2009 11:10 Nový

Re: Co to vlastně je?

celé vlákno
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 Nový

Re: Co to vlastně je?

celé vlákno
sak vpoho..
Miloslav Ponkrác aura:65
12. 3. 2009 22:28 Nový

Re: Co to vlastně je?

celé vlákno
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 Nový

Re: Co to vlastně je?

celé vlákno
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 Nový

Re: Co to vlastně je?

celé vlákno
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 Nový

Re: Co to vlastně je?

celé vlákno
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.
Kamil Páral aura:93
12. 3. 2009 14:00 Nový

RE: GCC bude automaticky paralelizovat

celé vlákno
Jedná se o paralelizaci kompilace nebo následného provádění kódu?
-nd-
-nd- (neregistrovaný)
12. 3. 2009 14:12 Nový

RE: GCC bude automaticky paralelizovat

celé vlákno
nasledneho provadeni kodu.... paralelizaci kompilace uz muzete zkusit dnes parametrem -jx u prikazu make, kde x je pocet jader + 1
Eduard DRUSA aura:55
12. 3. 2009 14:19 Nový

RE: GCC bude automaticky paralelizovat

celé vlákno
cize to moze za istych okolnosti a priaznivej konstelacie prepinacov programatorovi povodne single thread program skompilovat a zlinkovat s pouzitim nevyziadanej kniznice a s behom v inom pocte vlakien, nez by program bezal normalne?

no z toho mozu vzniknut vcelku zaujimave situacie, ak sa to pouzije s nativne vlaknovanymi programami, nebodaj ak to bude zapnute by default.
m1c4a1 aura:81
12. 3. 2009 15:11 Nový

RE: GCC bude automaticky paralelizovat

celé vlákno
S tím už ale programátor, co dělá s vláknama, bude muset počítat a volby podle toho upravit.
Defaultně to imho právě kvůli tomuto nebude.
Let_Me_Be
Let_Me_Be (neregistrovaný)
12. 3. 2009 15:37 Nový

RE: GCC bude automaticky paralelizovat

celé vlákno
Ne, tohle opravdu nema nic spolecneho s vlakny. Jediny problem, ktery muze realne vzniknout je snizeni vykonu dusledkem cache ping-pongu.
Sten
Sten (neregistrovaný)
20. 3. 2009 10:05 Nový

RE: GCC bude automaticky paralelizovat

celé vlákno
Samozřejmě může jít i o vlákna. Nevím, jak přesně to má Graphite implementované, ale autoparalelizaci lze dělat i ve vláknech (a podle nástinu, že to bude používat OpenMP, na Wiki GCC bych řekl, že i dělá).
Sten
Sten (neregistrovaný)
20. 3. 2009 10:08 Nový

RE: GCC bude automaticky paralelizovat

celé vlákno
Ano, může, ale tak, aby to ten program pokud možno nepoznal.

Konkrétně jaké zajímavé situace by mohly vzniknout?
Che
Che (neregistrovaný)
13. 3. 2009 11:19 Nový

RE: GCC bude automaticky paralelizovat

celé vlákno
No ona paralelizacia buildovacieho procesu prepinacom -jx nieje zase az taka super vec. Clovek si pri pisani makefile musi davat pozor na zopar veci. Inak mu make v najlepsom pripade skonci s chybou. V tom horsom vypluje chybny kod.
Sten
Sten (neregistrovaný)
20. 3. 2009 9:52 Nový

RE: GCC bude automaticky paralelizovat

celé vlákno
Tohle ale dělá paralelizaci na úrovni Makefile (spustí se několik gcc s různými zdrojáky), ne na úrovni gcc (a jednoho zdrojáku).
Jaroslav Hájek aura:79
12. 3. 2009 14:45 Nový

RE: GCC bude automaticky paralelizovat

celé vlákno
Já bych to trochu upřesnil:
Graphite nemá dělat jen autoparalelizace, ale všemožné HL transformace smyček - štěpení, fúzi, záměnu pořadí, peeling, unswitching atd., takže se bezpochyby jedná o užitečnou věc. Podobné věci dělají například Intelské překladače. Autoparalelizaci moc nevěřím, a mám s ní bídné zkušenosti. On programátor má většinou lepší povědomí o tom, které smyčky za to stojí.
BlackRider aura:72
12. 3. 2009 16:37 Nový

RE: GCC bude automaticky paralelizovat

celé vlákno
Vetsina programatoru ani nevi, jak se multithreading pouziva :(.
Peter Helcmanovsky aura:56
12. 3. 2009 21:31 Nový

RE: GCC bude automaticky paralelizovat

celé vlákno
To jsou lepici kodu, ty se nepocitaj. Je jich teda velka vetsina, ale nema vyznam kvuli nim neco delat na toolsech, at jim das cokoli, tak to urcite znasilni takovym zpusobem, ze cloveku zustava nad tim hlava stat.
Vladimír Fuka
12. 3. 2009 22:19 Nový

RE: GCC bude automaticky paralelizovat

celé vlákno
Ja s ni mam dobre zkusenosti, u Sunovskych prekladacu. Obycejne for cykly jsou stejne rychle pres automatiku i openmp, takze uspora casu pri programovani. Neni pak tak prenosne, ale kod stejne pouzivam jen ja. Navic dokaze urychlit i 30 let stare knihovny, se kterymi bych se rucne tedy nepredelaval.
Zasílat nově přidané příspěvky e-mailem        

Přehled názorů

Co to vlastně je?
Karásek 12. 3. 2009 13:31
├ 
Re: Co to vlastně je?
Ray 12. 3. 2009 13:34
│
└ 
Re: Co to vlastně je?
Karásek 12. 3. 2009 13:38
│
 
├ 
Re: Co to vlastně je?
hawran diskuse 12. 3. 2009 13:44
│
 
│
└ 
Re: Co to vlastně je?
hawran diskuse 12. 3. 2009 13:45
│
 
│
 
└ 
Re: Co to vlastně je?
ultra force 3000 13. 3. 2009 01:33
│
 
│
 
 
└ 
Re: Co to vlastně je?
hawran diskuse 13. 3. 2009 10:26
│
 
└ 
Re: Co to vlastně je?
TiCo 12. 3. 2009 15:14
│
 
 
├ 
Re: Co to vlastně je?
Marex 12. 3. 2009 16:26
│
 
 
│
├ 
Re: Co to vlastně je?
Petr Pluháček 12. 3. 2009 16:48
│
 
 
│
│
└ 
Re: Co to vlastně je?
Peter Helcmanovsky 12. 3. 2009 19:28
│
 
 
│
│
 
└ 
Re: Co to vlastně je?
Petr Pluháček 12. 3. 2009 20:06
│
 
 
│
│
 
 
└ 
Re: Co to vlastně je?
anonymní uživatel 12. 3. 2009 23:50
│
 
 
│
│
 
 
 
└ 
Re: Co to vlastně je?
Peter Helcmanovsky 13. 3. 2009 09:19
│
 
 
│
│
 
 
 
 
└ 
Re: Co to vlastně je?
anonymní uživatel 13. 3. 2009 11:38
│
 
 
│
└ 
Re: Co to vlastně je?
hawran diskuse 12. 3. 2009 20:40
│
 
 
│
 
├ 
Re: Co to vlastně je?
anonymní uživatel 12. 3. 2009 23:32
│
 
 
│
 
│
└ 
Re: Co to vlastně je?
Peter Helcmanovsky 13. 3. 2009 09:13
│
 
 
│
 
│
 
└ 
Re: Co to vlastně je?
Stanislav Brabec 13. 3. 2009 11:10
│
 
 
│
 
└ 
Re: Co to vlastně je?
ultra force 3000 13. 3. 2009 01:34
│
 
 
├ 
Re: Co to vlastně je?
Miloslav Ponkrác 12. 3. 2009 22:28
│
 
 
└ 
Re: Co to vlastně je?
Sten 20. 3. 2009 09:49
└ 
Re: Co to vlastně je?
Karásek 12. 3. 2009 13:37
 
└ 
Re: Co to vlastně je?
Timy 12. 3. 2009 15:18
RE: GCC bude automaticky paralelizovat
Kamil Páral 12. 3. 2009 14:00
└ 
RE: GCC bude automaticky paralelizovat
-nd- 12. 3. 2009 14:12
 
├ 
RE: GCC bude automaticky paralelizovat
Eduard DRUSA 12. 3. 2009 14:19
 
│
├ 
RE: GCC bude automaticky paralelizovat
m1c4a1 12. 3. 2009 15:11
 
│
├ 
RE: GCC bude automaticky paralelizovat
Let_Me_Be 12. 3. 2009 15:37
 
│
│
└ 
RE: GCC bude automaticky paralelizovat
Sten 20. 3. 2009 10:05
 
│
└ 
RE: GCC bude automaticky paralelizovat
Sten 20. 3. 2009 10:08
 
├ 
RE: GCC bude automaticky paralelizovat
Che 13. 3. 2009 11:19
 
└ 
RE: GCC bude automaticky paralelizovat
Sten 20. 3. 2009 09:52
RE: GCC bude automaticky paralelizovat
Jaroslav Hájek 12. 3. 2009 14:45
├ 
RE: GCC bude automaticky paralelizovat
BlackRider 12. 3. 2009 16:37
│
└ 
RE: GCC bude automaticky paralelizovat
Peter Helcmanovsky 12. 3. 2009 21:31
└ 
RE: GCC bude automaticky paralelizovat
Vladimír Fuka 12. 3. 2009 22:19