Honza píše:OK, na optimazaci jses jiste vetsi specialista. Rad bych znal tvuj komentar na nasledujici....
No, on preci jen optimalizovana kompilace programu chce trochu vic nez jen proste zapnout "-ax" option (Processor-dispatch option - automaticky v realnem case vola funkce nebo knihovny specificke pro dany detekovany procesor). Obzvlaste pokud maji smichane 32 a 64 bitove prostredi, tak musi zajistit zarovnani (alignment) promennych a pametovych bloku, anebo i zamezit cross-opimalizaci pres tyto dve casti, a havne poradne pohlidat konverzi typu. Krome "-ax" jsou jeste desitky dalsich nastaveni kompilatoru, ktere mohou mit obrovsky vliv na rychlost. Navic neni vzdy smysluplne pouzivat univerzalni -ax, nebo jine globalni optimalizace, a optimalizaci jen na rychlost. U vetsiny programu (a obzvalste u vetsich a komplikovanejsich aplikaci) je spise potreba optimalizovat na misto, omezi univerzalni kod a dynamicke knihovny, kompilovat kazdy modul s dobre uvazenymi (a pokud mozno otestovanymi) parametry kompileru, a pouzivat optimalizaci jen na mistech, kde je to skutecne potreba. Ono totiz optimalizace na cas vetsinou vygeneruje az nekolikanasobne objemnejsi kod, ktery pak zabere mnohem vice operacni pameti, a to je samozrejme kontraproduktivni, protoze to tu tezce ziskanou rychlost zase zbytecne srazi. Holt clovek i pri optimalizaci musi trochu myslet, mit nejake zusenosti, a hlavne vedet jak takovy program, kompilator i vlastni pocitac presne funguji - to rozhodne pomaha. Nestaci jen znat programovaci jazyk a matematiku. Nemluve o tom, ze skutecna optimalizace pak znamena mnohem vice nez jen pridavani parametru kompilatoru - pro to, aby kmpilator dobre optimalizoval, je casto nutne nektere funkce dost pozmenit, ci kompletne prepsat, a to nekdy dokonce tak paradoxne, ze je takovy kod na prvni pohled mnohem pomalejsi a delsi.
Honza píše:Nejde o utajeni kodu, ale o jeho zverejneni. Na tom odkazu sami pisou, ze nektere informace nejsou public.
Jo, tomu rozumim, ale nemyslim, ze je problem poskytnout kod dobrovolnikum zavazanych pod NDA (non-disclosure agreement)
Honza píše:Univerzity, ktere ten kod pouzivaji na nejakem svem klusteru nebo pro studyjni ucely, nebudou asi chtit investovat prostredky do optimalizace. Stejne tak samotny UK Met Office, ktery mam novou a dost vykonnou hracku a jde jim o spolehlivost a ne tolik o rychlost.
Berkeley nestoji pomoc dobrovolniku ani korunu (naopak velka cast lidi, kteri prispivaji programatorsky, prispivaji i penezne - staci se podivat na hvezdicky na diskuzich o optimalizaci). A prave pokud jde o stabilitu, meli by radeji kod otevrit, nebo alespon poskytnout dobrovolnikum pod NDA. Tito dobrovolni vyvojari S@H nejen podstatne zrychlili, ale nasli i nekolik chyb, a zlepsili stabilitu. Vic oci proste vic vidi. Kazdy ma trochu jine zkusenosti a jine schopnosti - v S@H jsou assembleri jako Tetsuji, matematici jako Harald, kompiler experti jako Nad, a spousta dalsich sikovnych lidi, kteri s vylepsovanim kodu pomahaji.
Honza píše:Jak ze je aplikace nestabilni na znacmen procentu pocitacu? Muzes nejak kvantifikovat? Kolik z nich je overclockovanych? Jak zjistit, ze ty pocitace jsou jinak OK?
No to skutecne netusim, ale podle toho, jak tady i na jinych forech neustale slysim o crashich pod CPDN, a podle toho, ze i sam rikas, ze CPDN je mnohem citlivejsi, jak na hardware tak na optimalizace, a taky kdyz vidim, ze si stezujou lidi, kterym pocitac bez problemu projde dlouhym zatezkavacim testovacim programem, ale sejme ho CPDN, tak spise nabyvam dojem, ze nejaky problem prece jen muze na strane CPDN byt.
Honza píše:Jak se na nekolika urovnich zabezpecuje chyba pameti v tak slozitych vypoctech?
Jednodussi nebo slozitejsi kontrolni, regulacni a opravne mechanismy jsou skutecne zabudovane na vsech urovnich - od samotnych pametovych cipu, pres cele pametove bloky (a nejen ECC pameti), systemove cipy, cpu, BIOS, OS, kompilery, az po aplikace. Samozrejme, kdyz jsou ty problemy s pameti zavazne, tak k poskozeni dat dojit muze, ale je mi divne kdyz vidim psat lidi, kterym dlouhodoby test pameti neukaze problem, ale CPDN prece jen spadne. Ale i v pripade, ze je to skutecne hardwarem, tak pravidelne spadnuti aplikace nebo dokonce OS, znamena uz docela znacny problem - to, ze se chyba pameti (normalne jde jen o nejakou tu bunku) trefi zrovna do vykonneho kodu, nebo do nejakeho pointeru (chyba v datech by se hned tak neprojevila crashem), muze taky znamenat, ze ta aplikace bud prilis casto realokuje casti vykonneho kodu, nebo je vykonny kod neskutence roztazeny, nebo se zbytecne casto prealokovavaji bloky pameti pointru,... Netvrdim, ze je tam nutne neco spatne, ale pokud je to tak komplexni, ze stabilita je problemem, pak by mozna stalo za uvahu zabudovat vice mechanismu na kontrolu a zpracovavani takovych vyjimecnych udalosti (exception handling). To ale skutecne muze byt nad moznosti jen dvou nebo tri vyvojaru (nbo kolik jich tam je), jejichz hlavnim ukolem jsou predevsim vedecke vysledky a tedy hlavne matematicke algoritmy a mene jiz systemarina a low-level programovani. Prave proto by otverenost kodu byla take vhodna.