Optimalizacia Orbit@Home

Používateľov profilový obrázok
Palo M.
Príspevky: 1200
Dátum registrácie: Po Feb 12, 2007 2:53 am
Bydlisko: Shanghai, China

Optimalizacia Orbit@Home

Príspevok od používateľa Palo M. »

Tak tu mame prve spravy o mojej ceste k optimalizovanej aplikacii:
1. Skompiloval som uspesne SurveySimulator (64-bit), zatial s gcc a defaultnymi flagmi. Trosku ma to potrapilo, lebo treba niekolko inych open-source kniznic, a tie som najskor musel tiez skompilovat. Ale uz to frci.
2. Vyrobil som par testovacich WU, co mi dalo tiez trocha roboty. Testovat so 160 hodinovou WU by nebolo velmi vhodne 8).

Prve testy ukazuju, ze 64-bitova aplikacia je dost rychlejsia ako 32-bitova:
Original (stock) SurveySimulator_1.32_i686-pc-linux-gnu: 378.65s
64-bit (neoptimalizovany!) SurveySimulator_1.32_x86-64-pc-linux-gnu: 292.44s
Tak to mame 77.2% casu, alebo inak povedane zrychlenie o 22%. Celkom prijemne vysledky...

Teraz nejake zle spravy:
- Bohuzial, neda sa vymenit aplikacia v rozpocitanej jednotke. Je to vlastnost gsl kniznice (jedna z tych 3rd-party kniznic), ze ulozene data pre random-number-generator su v binarnom formate a su zavisle od architektury. A su naozaj nekompatibilne, o tom som sa presvedcil.
- Kvoli tomu, ze treba kompilovat aj ine veci, v dohladnom case sa nebudem zaoberat inym buildom ako x86-64. Ziadne i686 a uz vobec nie Windoze...


Dalsie plany su pomerne jasne:
- Pohrat sa s roznymi optimalizacnymi flagmi pre gcc a vyskusat aj icc. Zase prekompilovat vsetky kniznice... A testovat a testovat...
- Jedna z troch mojich ostrych WU je len na 1.72% (bezala len asi 3:18:51). To sa oplati v kazdom pripade prepnut na 64-bit. Zatial som tuto WU suspendol. Ked odovzdam tie prve dve, skusim "manualne resetnut WU", aby zacala pocitat odznova a nahodim to najrychlejsie co v tom momente budem mat. Je to trochu riskantna akcia, ale snad sa to podari... Mozno budu medzicasom aj nove WU, ale mozno ani nie: Ak chce Pasquale najprv kompletne dorazit tuto varku, niektore WU bude treba poslat znova a to chvilu potrva a takto by som medzicasom otestoval aplikaciu na ostrej jednotke...
Obrázok
---
Obrázok
"Ostatně, kdybych si měl vybrat pořadí Mac OS X, Windows, Linux, tak to bude: Linux, Mac OS X, sebevražda, Windows." (úryvok z internetovej diskusie)
Používateľov profilový obrázok
Duro Kotulic Bunta
Príspevky: 1906
Dátum registrácie: St Feb 07, 2007 3:00 pm
Bydlisko: Stupava
Kontaktovať používateľa:

Re: Optimalizacia Orbit@Home

Príspevok od používateľa Duro Kotulic Bunta »

Palo, gratulujem k uspesnej kompilacii, a som velmi rad, ze mas na to chut a cas ! =D> Vyvoj je rovnako dolezity (ak nie este viac) ako neskorsie crunchovanie samotne a ak sa pamatam tak od cias Truxa na ceskoslovenskej boinc scene takato aktivita chybala.
Tesim sa na dalsie spravy..

Ak by si potreboval, mozem ti dat jednu LINEAR.CSS.10y WU ktoru mam rozratanu len na 2%..

Anyway, good luck M8 ! :)
It is by logic that we prove, but by intuition that we discover. [J.H. Poincaré, mathematician]
A man who knows how to be alone is never lonely. [Osho]
Používateľov profilový obrázok
Kiwi
Príspevky: 2072
Dátum registrácie: Ut Feb 13, 2007 4:18 pm
Bydlisko: Sobrance
Kontaktovať používateľa:

Re: Optimalizacia Orbit@Home

Príspevok od používateľa Kiwi »

Kto niekedy optimalizoval na x86-kach a precita si toto, http://en.wikipedia.org/wiki/X86-64
tak sa nebude cudovat vyroku, ze 640 kB RAM bude kazdemu urcite stacit. :)
Bude sa situacia a par rokov opakovat ? Ved komu by dnes nestacilo 8 GiB RAM ? :)
Používateľov profilový obrázok
Palo M.
Príspevky: 1200
Dátum registrácie: Po Feb 12, 2007 2:53 am
Bydlisko: Shanghai, China

Re: Optimalizacia Orbit@Home

Príspevok od používateľa Palo M. »

Kiwi napísal:Kto niekedy optimalizoval na x86-kach a precita si toto, http://en.wikipedia.org/wiki/X86-64
tak sa nebude cudovat vyroku, ze 640 kB RAM bude kazdemu urcite stacit. :)
Bude sa situacia a par rokov opakovat ? Ved komu by dnes nestacilo 8 GiB RAM ? :)
Pred nejakymi 6-timi rokmi koloval taky vtip:
"Did I say that 640 kilobytes should be enough for everybody? NO! I said that 640 MEGAbytes should be enough for everybody." Bill Gates
Pred tymi 6-timi rokmi som kupoval Athlon Thunderbird 1.33GHz s GeForce2 a dal som tam na tu dobu obrovskych 512MB - ale mama na tom stroji dodnes surfuje na nete.
To som zvedavy, kedy ten vtip zas bude potrebovat update.

Je jasne, ze 8G casom prestane stacit, ale to nie je obmedzenie 64-bitovej architektury, ale obmedzenie konkretnych dosiek. Pocas zivotnosti tychto dosiek to stacit bude a casom sa objavia nove chipsety, nove pamatove moduly a nove dosky...
Používateľov profilový obrázok
Kiwi
Príspevky: 2072
Dátum registrácie: Ut Feb 13, 2007 4:18 pm
Bydlisko: Sobrance
Kontaktovať používateľa:

Re: Optimalizacia Orbit@Home

Príspevok od používateľa Kiwi »

Ja som uvazoval tak, niekedy sme mali 2^20 RAM a islo to, optimalizovalo sa o 106,
aby sa aspon co-to voslo do RAM, uvazovalo sa na nad kazdym byteom. Dalo sa napr.
z 8 kB kodu urobit 512, aby sa to voslo do jedneho sektora. Dnes mame bezne 2^32
RAM, co je problem pre 32-bit ale nie pre 64. Co je 2^12 krat viac ako to 1 MiB, pred
par rokmi. Vedeli ste si predstavit, ze raz budete mat RAM-ku 4096-krat vacsiu ?
AMD64 nam poskytuje 2^48 RAM. 2^48, to je 65536-krat viac, ako 4 GiB. Viete si
predstavit bezne aplikacie na domacom PC, ktore to vyuziju ? :)
Honza
Príspevky: 953
Dátum registrácie: Po Feb 05, 2007 7:20 pm
Bydlisko: Praha

Re: Optimalizacia Orbit@Home

Príspevok od používateľa Honza »

Kiwi napísal:Viete si predstavit bezne aplikacie na domacom PC, ktore to vyuziju ? :)
Windows 7 konečně využívající dostupnou paměť pro svůj běh?

Vždycky mě štvalo, že aplikace neumějí využít dostupnou paměť - počínaje OS, přes hry, konče Adobe. Prostě neběží v paměti, i když jí mají, a pořád něco strkají na disk a berou z disku. Ach jo.
Používateľov profilový obrázok
Palo M.
Príspevky: 1200
Dátum registrácie: Po Feb 12, 2007 2:53 am
Bydlisko: Shanghai, China

Re: Optimalizacia Orbit@Home

Príspevok od používateľa Palo M. »

Kiwi napísal:Ja som uvazoval tak, niekedy sme mali 2^20 RAM a islo to, optimalizovalo sa o 106,
aby sa aspon co-to voslo do RAM, uvazovalo sa na nad kazdym byteom. Dalo sa napr.
z 8 kB kodu urobit 512, aby sa to voslo do jedneho sektora. Dnes mame bezne 2^32
RAM, co je problem pre 32-bit ale nie pre 64. Co je 2^12 krat viac ako to 1 MiB, pred
par rokmi. Vedeli ste si predstavit, ze raz budete mat RAM-ku 4096-krat vacsiu ?
AMD64 nam poskytuje 2^48 RAM. 2^48, to je 65536-krat viac, ako 4 GiB. Viete si
predstavit bezne aplikacie na domacom PC, ktore to vyuziju ? :)
Finta je v tom, ze na Sinclairi si bol rad, ze ti tam blikoce nejaka postavicka, ze hras cely mesiac po veceroch jednu textovku, ze si napisal svoj prvy vlastny program v BASICu... a v socialistickom podniku ujovia v bielych plastoch robili na SMEPkach vyplaty... Vtedy akosi neboli empetrojky a divixy. Dnes v dobe multimedii to vyzera inak a niet sa co cudovat. Iste, softver by sa dal napisat lepsie, aby nezral tolko prostriedkov... ale zas to netreba prehanat s tym setrenim, aby naklady na setrenie hardveru softverovou cestou nepresiahli naklady na hardver samotny :-)
Teraz sme tak trocha v stadiu, kedy na beznom PC velkost pamate (ci uz RAM alebo diskovej) staci na momentalne vyuzitie a je to za rozumnu cenu. Ale urcite sa to nezastavi... Uz dnes sa rysuju veci, ktore by si ziadali viac. Napriklad aj simulacie ako Orbit dokazu vyuzit vela, nielen vypoctovy vykon, ale aj pamat. Timy v F1 teraz maju superpocitace na simulaciu prudenia vzduchu a stava sa to dolezitejsie ako aerotunely - odsimulovat mozu vela veci omnoho lacnejsie a az tie veci, ktore sa javia slubne idu do aerotunela... Takisto, snad casom ozije myslienka virtualnej reality - nie v tom antiutopickom zmysle sci-fi, ale v cisto praktickom - tak ako najprv boli telefonicke konferencie, dnes video-konferencie, neskor mozno budu VR-konferencie.
Rozhodne sa nebojim, ze by sme nevyuzili viac pamate.
Používateľov profilový obrázok
Kiwi
Príspevky: 2072
Dátum registrácie: Ut Feb 13, 2007 4:18 pm
Bydlisko: Sobrance
Kontaktovať používateľa:

Re: Optimalizacia Orbit@Home

Príspevok od používateľa Kiwi »

No ked spominas Sinclair a MP3-ky. Ja som mal Didaktic Gama, co bol v podstate Sinclair,
len mal dve banky pamate, tak som urobil asi 1024 bajtovy program, ktory zaplnil obe
banky RAM hudbou, ktoru nahral zo vstupu a prehraval ju na vystupe. Dala sa menit
frekvencia, takze tam vosli asi 2 min. hudby. Samo ze to bola jednobitova hudba, ale
ten pocit, ze to ide a s par instrukciami. Samozrejme ze cely strojovy kod, nie assembler,
som u PMD, Sinclairu, Didaktiku Gama a Alfa vedel takmer naspamat. Taktiez sa na tom
dala prevadzkovat "databaza" cca. 4000 angl. slovicok, co mi vtedy velmi pomohlo,
namiesto hladania v klasickom slovniku. Len som nemal mechaniku, ale len kazetak,
tak vecer sa to muselo 10 min. ukladat na pasku. Takze ked som sa o 2- 3 roky dostal
k 486-ke s 32 MiB RAM, tak si predstav hasovaciu tabulku v 32 MiB. To bolo nieco
neuveritelne. Potom uz len zoptimalizovat ten kod, co vygeneroval compiler a linker,
a program namiesto hodiny, bezal 2 - 3 min, to len tak zbehlo po obrazovke. :)
A kto ma dnes 32 MiB RAM ? :) Btw. 486-ka vtedy stala 60 000 a este pred nou nadupana
386-ka s 387-FPU stala 250 000. :)
Používateľov profilový obrázok
slavko.sk
Príspevky: 1603
Dátum registrácie: Po Feb 05, 2007 3:42 pm
Bydlisko: Bratislava, Slovensko
Kontaktovať používateľa:

Re: Optimalizacia Orbit@Home

Príspevok od používateľa slavko.sk »

Kiwi napísal:A kto ma dnes 32 MiB RAM ? :)
Moj 2 rocny mobil ma 20MiB a uplne mi to stacilo cez dovolenku na mailovanie, ICQ, nejake browsovanie. Notebook som mohol nechat doma.
S
Používateľov profilový obrázok
Palo M.
Príspevky: 1200
Dátum registrácie: Po Feb 12, 2007 2:53 am
Bydlisko: Shanghai, China

Re: Optimalizacia Orbit@Home

Príspevok od používateľa Palo M. »

Tak myslim, ze to mozem vypustit: Optimalizovany 64-bit Orbit-klient pre Linux je TU. V archive su subory INSTALL a TEST, ktore je naozaj potrebne si precitat. Neda sa uprostred behu jednotky len vymenit binarka a pokracovat v rozpocitanej jednotke. Takisto sa neda paralelne dopocitat jedna jednotka so stock aplikaciou a zacat druha s optimalizovanou. Pridal som aj slovenske verzie, ale prve boli spravene tie anglicke (profesionalna deformacia - pisem technicku dokumentaciu v anglictine, dokonca aj pre seba :-)). V slovenskej som ale pridal fintu, ako zacat odznova vypocet jednotky (ja som to tak spravil - stock pocital asi 1 hodinu, to som zrusil a uz pocitam optimalizovanu).

Zverejnujem to sice trochu neskoro; jednotky su vyzrane a je mala sanca, ze sa nam este nieco ujde... ale najprv som dopocital svoje rozpracovane WU (mali uz niekolko desiatok hodin, takze zacinat vsetky od znova by sa pravdepodobne neoplatilo), co dost trvalo. Teraz mozem vyhlasit, ze optimalizovana aplikacia ide.
Privatny beta-testovac Hefto99 tiez hlasil same uspechy s gcc-verziou, ja som si ale nahodil icc-verziu.

Nech som skusal akokolvek (a narobil som sa poriadne), icc nevyprodukoval velmi podstatne zrychlenie oproti 64-bitovemu gcc. Pravdepodobne je to tym, ze orsa pouziva rozne GNU matematicke kniznice na vypocty, cim sa vykon prenasa na tie kniznice. A kompilacia kniznic s icc priniesla horsie vysledky ako kompilacia s gcc. Na druhej strane, kniznice zachovavaju presnost vypoctov a teda vysledky su uplne totozne, nech ide o akykolvek procesor (a akukolvek platformu). To je podla mna velmi dolezity fakt (lebo v SETI alebo Einsteinovi to tak nie je a niektore jednotky preto vybehnu z range a nezvaliduju sa; takisto v CPDN nedavaju aplikacie uplne rovnake vysledky - je to kvoli zaokruhlovaniu medzivysledkov v pohyblivej radovej ciarke). Z vedeckeho hladiska teda verim Orbit-u viac, pretoze dava exaktnejsie vysledky.
Takze aj ked ma na jednej strane spociatku nepotesilo, ze moja robota s optimalizaciou nebola odmenena podstatnym zrychlenim, na druhej strane to znamena, ze kod je dost kvalitny. Nerobit matematicke vypocty svojpomocne, ale nechat pocitat specializovane kniznice (na ktorych makaju ini manici) je vyborny napad. Co sa tyka kniznic samotnych - tie uz maju v sebe rozny kod podla typu CPU, takze vlastne kniznice uz su optimalizovane - to je dovod, preco aj "neoptimalizovany" Orbit je pomerne rychly (lebo kniznice su optimalizovane vzdy). Tu sa konkretne ukazuje velka vyhoda 64-bitoveho systemu (co sme diskutovali inde) - tie iste kniznice skompilovane pre 32-bitovy system su jednoducho pomalsie, lebo nedokazu vyuzit vsetky vlastnosti procesora naplno.
Mozno svojpomocne specializovane vypocty by mohli bezat o nieco rychlejsie, ale zase by to podstatne zvysovalo usilie potrebne na vyvoj, a co je horsie - riziko chyb.
BTW: Na otazku nezasvatenych "A co z toho BOINCu mas?" mozem odpovedat okrem ineho aj "Nieco nove som sa naucil."

Aj ked pre tuto fazu Orbit-u to uz pravdepodobne vela nevypocita, zorientoval som sa v aplikacii a builde; Takze pri dalsich fazach to pojde rychlejsie.
Kto ma zaujem (a 64-bitovy Linux :-)), moze skusit aspon performance testy a pripadne poskytnut spatnu vazbu...
Napísať odpoveď